import * as DistributedTaskCommon from "../DistributedTaskCommon/DistributedTaskCommon";
import * as FormInput from "../FormInput/FormInput";
import * as WebApi from "../WebApi/WebApi";
export declare enum AadLoginPromptOption {
    /**
     * Do not provide a prompt option
     */
    NoOption = 0,
    /**
     * Force the user to login again.
     */
    Login = 1,
    /**
     * Force the user to select which account they are logging in with instead of automatically picking the user up from the session state. NOTE: This does not work for switching between the variants of a dual-homed user.
     */
    SelectAccount = 2,
    /**
     * Force the user to login again. \<remarks\> Ignore current authentication state and force the user to authenticate again. This option should be used instead of Login. \</remarks\>
     */
    FreshLogin = 3,
    /**
     * Force the user to login again with mfa. \<remarks\> Ignore current authentication state and force the user to authenticate again. This option should be used instead of Login, if MFA is required. \</remarks\>
     */
    FreshLoginWithMfa = 4
}
export interface AadOauthTokenRequest {
    refresh: boolean;
    resource: string;
    tenantId: string;
    token: string;
}
export interface AadOauthTokenResult {
    accessToken: string;
    refreshTokenCache: string;
}
export declare enum AccessTokenRequestType {
    None = 0,
    Oauth = 1,
    Direct = 2
}
export interface AuthConfiguration extends OAuthConfiguration {
    /**
     * Gets or sets parameters contained in configuration object.
     */
    parameters: {
        [key: string]: Parameter;
    };
}
/**
 * Specifies the authentication scheme to be used for authentication.
 */
export interface AuthenticationSchemeReference {
    /**
     * Gets or sets the key and value of the fields used for authentication.
     */
    inputs: {
        [key: string]: string;
    };
    /**
     * Gets or sets the type of authentication scheme of an endpoint.
     */
    type: string;
}
/**
 * Represents the header of the REST request.
 */
export interface AuthorizationHeader {
    /**
     * Gets or sets the name of authorization header.
     */
    name: string;
    /**
     * Gets or sets the value of authorization header.
     */
    value: string;
}
export interface AzureAppService {
    id: string;
    name: string;
}
export interface AzureKeyVaultPermission extends AzureResourcePermission {
    vault: string;
}
export interface AzureManagedIdentity {
    clientId: string;
    id: string;
    name: string;
}
/**
 * Azure Management Group
 */
export interface AzureManagementGroup {
    /**
     * Display name of azure management group
     */
    displayName: string;
    /**
     * Id of azure management group
     */
    id: string;
    /**
     * Azure management group name
     */
    name: string;
    /**
     * Id of tenant from which azure management group belogs
     */
    tenantId: string;
}
/**
 * Azure management group query result
 */
export interface AzureManagementGroupQueryResult {
    /**
     * Error message in case of an exception
     */
    errorMessage: string;
    /**
     * List of azure management groups
     */
    value: AzureManagementGroup[];
}
export interface AzureMLWorkspace {
    id: string;
    location: string;
    name: string;
}
export interface AzurePermission {
    provisioned: boolean;
    resourceProvider: string;
}
export interface AzureResourcePermission extends AzurePermission {
    resourceGroup: string;
}
export interface AzureRoleAssignmentPermission extends AzurePermission {
    roleAssignmentId: string;
}
export interface AzureSpnOperationStatus {
    errorCode: SpnEndpointErrorCode;
    severity: string;
    state: string;
    statusMessage: string;
}
export interface AzureSubscription {
    displayName: string;
    subscriptionId: string;
    subscriptionTenantId: string;
    subscriptionTenantName: string;
}
export interface AzureSubscriptionQueryResult {
    errorMessage: string;
    value: AzureSubscription[];
}
/**
 * Specifies the client certificate to be used for the endpoint request.
 */
export interface ClientCertificate {
    /**
     * Gets or sets the value of client certificate.
     */
    value: string;
}
/**
 * Specifies the data sources for this endpoint.
 */
export interface DataSource {
    /**
     * Gets or sets the authentication scheme for the endpoint request.
     */
    authenticationScheme: AuthenticationSchemeReference;
    /**
     * Gets or sets the pagination format supported by this data source(ContinuationToken/SkipTop).
     */
    callbackContextTemplate: string;
    /**
     * Gets or sets the template to check if subsequent call is needed.
     */
    callbackRequiredTemplate: string;
    /**
     * Gets or sets the endpoint url of the data source.
     */
    endpointUrl: string;
    /**
     * Gets or sets the authorization headers of the request.
     */
    headers: AuthorizationHeader[];
    /**
     * Gets or sets the initial value of the query params.
     */
    initialContextTemplate: string;
    /**
     * Gets or sets the name of the data source.
     */
    name: string;
    /**
     * Gets or sets the request content of the endpoint request.
     */
    requestContent: string;
    /**
     * Gets or sets the request method of the endpoint request.
     */
    requestVerb: string;
    /**
     * Gets or sets the resource url of the endpoint request.
     */
    resourceUrl: string;
    /**
     * Gets or sets the result selector to filter the response of the endpoint request.
     */
    resultSelector: string;
}
/**
 * Represents the data source binding of the endpoint.
 */
export interface DataSourceBinding extends DistributedTaskCommon.DataSourceBindingBase {
}
/**
 * Represents details of the service endpoint data source.
 */
export interface DataSourceDetails {
    /**
     * Gets or sets the data source name.
     */
    dataSourceName: string;
    /**
     * Gets or sets the data source url.
     */
    dataSourceUrl: string;
    /**
     * Gets or sets the request headers.
     */
    headers: AuthorizationHeader[];
    /**
     * Gets or sets the initialization context used for the initial call to the data source
     */
    initialContextTemplate: string;
    /**
     * Gets the parameters of data source.
     */
    parameters: {
        [key: string]: string;
    };
    /**
     * Gets or sets the data source request content.
     */
    requestContent: string;
    /**
     * Gets or sets the data source request verb. Get/Post are the only implemented types
     */
    requestVerb: string;
    /**
     * Gets or sets the resource url of data source.
     */
    resourceUrl: string;
    /**
     * Gets or sets the result selector.
     */
    resultSelector: string;
}
/**
 * Represents the details of the input on which a given input is dependent.
 */
export interface DependencyBinding {
    /**
     * Gets or sets the value of the field on which url is dependent.
     */
    key: string;
    /**
     * Gets or sets the corresponding value of url.
     */
    value: string;
}
/**
 * Represents the dependency data for the endpoint inputs.
 */
export interface DependencyData {
    /**
     * Gets or sets the category of dependency data.
     */
    input: string;
    /**
     * Gets or sets the key-value pair to specify properties and their values.
     */
    map: {
        key: string;
        value: {
            key: string;
            value: string;
        }[];
    }[];
}
/**
 * Represents the inputs on which any given input is dependent.
 */
export interface DependsOn {
    /**
     * Gets or sets the ID of the field on which URL's value is dependent.
     */
    input: string;
    /**
     * Gets or sets key-value pair containing other's field value and corresponding url value.
     */
    map: DependencyBinding[];
}
/**
 * Represents the authorization used for service endpoint.
 */
export interface EndpointAuthorization {
    /**
     * Gets or sets the parameters for the selected authorization scheme.
     */
    parameters: {
        [key: string]: string;
    };
    /**
     * Gets or sets the scheme used for service endpoint authentication.
     */
    scheme: string;
}
export interface EndpointOperationStatus {
    state: string;
    statusMessage: string;
}
/**
 * Represents url of the service endpoint.
 */
export interface EndpointUrl {
    /**
     * Gets or sets the dependency bindings.
     */
    dependsOn: DependsOn;
    /**
     * Gets or sets the display name of service endpoint url.
     */
    displayName: string;
    /**
     * Gets or sets the format of the url.
     */
    format: string;
    /**
     * Gets or sets the help text of service endpoint url.
     */
    helpText: string;
    /**
     * Gets or sets the visibility of service endpoint url.
     */
    isVisible: string;
    /**
     * Gets or sets the value of service endpoint url.
     */
    value: string;
}
/**
 * Specifies the public url of the help documentation.
 */
export interface HelpLink {
    /**
     * Gets or sets the help text.
     */
    text: string;
    /**
     * Gets or sets the public url of the help documentation.
     */
    url: string;
}
export interface OAuth2TokenResult {
    accessToken: string;
    error: string;
    errorDescription: string;
    expiresIn: string;
    issuedAt: string;
    refreshToken: string;
    scope: string;
}
export interface OAuthConfiguration {
    /**
     * Gets or sets the ClientId
     */
    clientId: string;
    /**
     * Gets or sets the ClientSecret
     */
    clientSecret: string;
    /**
     * Gets or sets the identity who created the config.
     */
    createdBy: WebApi.IdentityRef;
    /**
     * Gets or sets the time when config was created.
     */
    createdOn: Date;
    /**
     * Gets or sets the type of the endpoint.
     */
    endpointType: string;
    /**
     * Gets or sets the unique identifier of this field
     */
    id: string;
    /**
     * Gets or sets the identity who modified the config.
     */
    modifiedBy: WebApi.IdentityRef;
    /**
     * Gets or sets the time when variable group was modified
     */
    modifiedOn: Date;
    /**
     * Gets or sets the name
     */
    name: string;
    /**
     * Gets or sets the Url
     */
    url: string;
}
export declare enum OAuthConfigurationActionFilter {
    None = 0,
    Manage = 2,
    Use = 16
}
export interface OAuthConfigurationParams {
    /**
     * Gets or sets the ClientId
     */
    clientId: string;
    /**
     * Gets or sets the ClientSecret
     */
    clientSecret: string;
    /**
     * Gets or sets the type of the endpoint.
     */
    endpointType: string;
    /**
     * Gets or sets the name
     */
    name: string;
    /**
     * Gets or sets the Url
     */
    url: string;
}
export interface OAuthEndpointStatus {
    state: string;
    statusMessage: string;
}
export interface Parameter {
    isSecret: boolean;
    value: string;
}
export interface ProjectReference {
    id: string;
    name: string;
}
/**
 * Specify the properties for refreshing the endpoint authentication object being queried
 */
export interface RefreshAuthenticationParameters {
    /**
     * EndpointId which needs new authentication params
     */
    endpointId: string;
    /**
     * Scope of the token requested. For GitHub marketplace apps, scope contains repository Ids
     */
    scope: number[];
    /**
     * The requested endpoint authentication should be valid for _ minutes. Authentication params will not be refreshed if the token contained in endpoint already has active token.
     */
    tokenValidityInMinutes: number;
}
/**
 * Represents template to transform the result data.
 */
export interface ResultTransformationDetails {
    /**
     * Gets or sets the template for callback parameters
     */
    callbackContextTemplate: string;
    /**
     * Gets or sets the template to decide whether to callback or not
     */
    callbackRequiredTemplate: string;
    /**
     * Gets or sets the template for result transformation.
     */
    resultTemplate: string;
}
/**
 * Represents an endpoint which may be used by an orchestration job.
 */
export interface ServiceEndpoint {
    /**
     * This is a deprecated field.
     */
    administratorsGroup: WebApi.IdentityRef;
    /**
     * Gets or sets the authorization data for talking to the endpoint.
     */
    authorization: EndpointAuthorization;
    /**
     * Gets or sets the identity reference for the user who created the Service endpoint.
     */
    createdBy: WebApi.IdentityRef;
    /**
     * Gets or sets the date, when the Service endpoint has been created.
     */
    creationDate: Date;
    data: {
        [key: string]: string;
    };
    /**
     * Gets or sets the description of endpoint.
     */
    description: string;
    /**
     * This is a deprecated field.
     */
    groupScopeId: string;
    /**
     * Gets or sets the identifier of this endpoint.
     */
    id: string;
    /**
     * Whether service endpoint is disabled or not.
     */
    isDisabled: boolean;
    /**
     * Indicates whether service endpoint is outdated or not.
     */
    isOutdated: boolean;
    /**
     * EndPoint state indicator
     */
    isReady: boolean;
    /**
     * Indicates whether service endpoint is shared with other projects or not.
     */
    isShared: boolean;
    /**
     * Gets or sets the date, when the Service endpoint has been modified.
     */
    modificationDate: Date;
    /**
     * Gets or sets the identity reference for the user who did the latest modification of the Service endpoint.
     */
    modifiedBy: WebApi.IdentityRef;
    /**
     * Gets the project-specific friendly name of the endpoint, as defined in the name field of ServiceEndpointProjectReferences.
     */
    name: string;
    /**
     * Error message during creation/deletion of endpoint
     */
    operationStatus: any;
    /**
     * Owner of the endpoint Supported values are "library", "agentcloud"
     */
    owner: string;
    /**
     * Gets or sets the identity reference for the readers group of the service endpoint.
     */
    readersGroup: WebApi.IdentityRef;
    /**
     * All other project references where the service endpoint is shared.
     */
    serviceEndpointProjectReferences: ServiceEndpointProjectReference[];
    /**
     * Service Tree ID
     */
    serviceManagementReference: string;
    /**
     * Gets or sets the type of the endpoint.
     */
    type: string;
    /**
     * Gets or sets the url of the endpoint.
     */
    url: string;
}
export declare enum ServiceEndpointActionFilter {
    None = 0,
    Manage = 2,
    Use = 16,
    View = 32
}
/**
 * Represents the authentication scheme used to authenticate the endpoint.
 */
export interface ServiceEndpointAuthenticationScheme {
    /**
     * Gets or sets the authorization headers of service endpoint authentication scheme.
     */
    authorizationHeaders: AuthorizationHeader[];
    /**
     * Gets or sets the Authorization url required to authenticate using OAuth2
     */
    authorizationUrl: string;
    /**
     * Gets or sets the certificates of service endpoint authentication scheme.
     */
    clientCertificates: ClientCertificate[];
    /**
     * Gets or sets the data source bindings of the endpoint.
     */
    dataSourceBindings: DataSourceBinding[];
    /**
     * Gets or sets the display name for the service endpoint authentication scheme.
     */
    displayName: string;
    /**
     * Gets or sets the input descriptors for the service endpoint authentication scheme.
     */
    inputDescriptors: FormInput.InputDescriptor[];
    /**
     * Gets or sets the properties of service endpoint authentication scheme.
     */
    properties: {
        [key: string]: string;
    };
    /**
     * Gets or sets whether this auth scheme requires OAuth2 configuration or not.
     */
    requiresOAuth2Configuration: boolean;
    /**
     * Gets or sets the scheme for service endpoint authentication.
     */
    scheme: string;
}
/**
 * Represents details of the service endpoint.
 */
export interface ServiceEndpointDetails {
    /**
     * Gets or sets the authorization of service endpoint.
     */
    authorization: EndpointAuthorization;
    /**
     * Gets or sets the data of service endpoint.
     */
    data: {
        [key: string]: string;
    };
    /**
     * Gets or sets the type of service endpoint.
     */
    type: string;
    /**
     * Gets or sets the connection url of service endpoint.
     */
    url: string;
}
export interface ServiceEndpointEvent {
    authorization: EndpointAuthorization;
    id: string;
    name: string;
    projectIds: string[];
    type: string;
}
/**
 * Represents service endpoint execution data.
 */
export interface ServiceEndpointExecutionData {
    /**
     * Gets the definition of service endpoint execution owner.
     */
    definition: ServiceEndpointExecutionOwner;
    /**
     * Gets the finish time of service endpoint execution.
     */
    finishTime: Date;
    /**
     * Gets the Id of service endpoint execution data.
     */
    id: number;
    /**
     * Gets the owner of service endpoint execution data.
     */
    owner: ServiceEndpointExecutionOwner;
    /**
     * Gets the additional details about the instance that used the service endpoint.
     */
    ownerDetails: string;
    /**
     * Gets the plan type of service endpoint execution data.
     */
    planType: string;
    /**
     * Gets the result of service endpoint execution.
     */
    result: ServiceEndpointExecutionResult;
    /**
     * Gets the start time of service endpoint execution.
     */
    startTime: Date;
}
/**
 * Represents execution owner of the service endpoint.
 */
export interface ServiceEndpointExecutionOwner {
    _links: any;
    /**
     * Gets or sets the Id of service endpoint execution owner.
     */
    id: number;
    /**
     * Gets or sets the name of service endpoint execution owner.
     */
    name: string;
}
/**
 * Represents the details of service endpoint execution.
 */
export interface ServiceEndpointExecutionRecord {
    /**
     * Gets the execution data of service endpoint execution.
     */
    data: ServiceEndpointExecutionData;
    /**
     * Gets the Id of service endpoint.
     */
    endpointId: string;
}
export interface ServiceEndpointExecutionRecordsInput {
    data: ServiceEndpointExecutionData;
    endpointIds: string[];
}
export declare enum ServiceEndpointExecutionResult {
    /**
     * "Service endpoint request succeeded.
     */
    Succeeded = 0,
    /**
     * "Service endpoint request succeeded but with some issues.
     */
    SucceededWithIssues = 1,
    /**
     * "Service endpoint request failed.
     */
    Failed = 2,
    /**
     * "Service endpoint request was cancelled.
     */
    Canceled = 3,
    /**
     * "Service endpoint request was skipped.
     */
    Skipped = 4,
    /**
     * "Service endpoint request was abandoned.
     */
    Abandoned = 5
}
export interface ServiceEndpointOAuthConfigurationReference {
    configurationId: string;
    serviceEndpointId: string;
    serviceEndpointProjectId: string;
}
export interface ServiceEndpointProjectReference {
    /**
     * Gets or sets description of the service endpoint.
     */
    description: string;
    /**
     * Gets or sets name of the service endpoint.
     */
    name: string;
    /**
     * Gets or sets project reference of the service endpoint.
     */
    projectReference: ProjectReference;
}
export interface ServiceEndpointRequest {
    /**
     * Gets or sets the data source details for the service endpoint request.
     */
    dataSourceDetails: DataSourceDetails;
    /**
     * Gets or sets the result transformation details for the service endpoint request.
     */
    resultTransformationDetails: ResultTransformationDetails;
    /**
     * Gets or sets the service endpoint details for the service endpoint request.
     */
    serviceEndpointDetails: ServiceEndpointDetails;
}
/**
 * Represents result of the service endpoint request.
 */
export interface ServiceEndpointRequestResult {
    /**
     * Gets or sets the activity id of the service endpoint request result.
     */
    activityId: string;
    /**
     * Gets or sets the parameters used to make subsequent calls to the data source
     */
    callbackContextParameters: {
        [key: string]: string;
    };
    /**
     * Gets or sets the flat that decides if another call to the data source is to be made
     */
    callbackRequired: boolean;
    /**
     * Gets or sets the error message of the service endpoint request result.
     */
    errorMessage: string;
    /**
     * Gets or sets the result of service endpoint request.
     */
    result: any;
    /**
     * Gets or sets the status code of the service endpoint request result.
     */
    statusCode: string;
}
/**
 * Represents the details of service endpoint execution.
 */
export interface ServiceEndpointTokenResult {
    /**
     * Gets the access token
     */
    accessToken: string;
}
/**
 * Represents type of the service endpoint.
 */
export interface ServiceEndpointType {
    /**
     * Authentication scheme of service endpoint type.
     */
    authenticationSchemes: ServiceEndpointAuthenticationScheme[];
    /**
     * Data sources of service endpoint type.
     */
    dataSources: DataSource[];
    /**
     * Dependency data of service endpoint type.
     */
    dependencyData: DependencyData[];
    /**
     * Gets or sets the description of service endpoint type.
     */
    description: string;
    /**
     * Gets or sets the display name of service endpoint type.
     */
    displayName: string;
    /**
     * Gets or sets the endpoint url of service endpoint type.
     */
    endpointUrl: EndpointUrl;
    /**
     * Gets or sets the help link of service endpoint type.
     */
    helpLink: HelpLink;
    /**
     * Gets or sets the help text shown at the endpoint create dialog.
     */
    helpMarkDown: string;
    /**
     * Gets or sets the icon url of service endpoint type.
     */
    iconUrl: string;
    /**
     * Input descriptor of service endpoint type.
     */
    inputDescriptors: FormInput.InputDescriptor[];
    /**
     * Gets or sets visibility parameter for the list of endpoint types.
     */
    isHidden: boolean;
    /**
     * Gets or sets the name of service endpoint type.
     */
    name: string;
    /**
     * Trusted hosts of a service endpoint type.
     */
    trustedHosts: string[];
    /**
     * Gets or sets the ui contribution id of service endpoint type.
     */
    uiContributionId: string;
}
export declare enum SpnEndpointErrorCode {
    /**
     * Indicates whether user does not have required permissions to register the app in Entra or WIF is disabled.
     */
    AppRegistrationFailed = 1
}
