import * as WebApi from "../WebApi/WebApi";
/**
 * Artifacts are collections of files produced by a pipeline. Use artifacts to share files between stages in a pipeline or between different pipelines.
 */
export interface Artifact {
    /**
     * The name of the artifact.
     */
    name: string;
    /**
     * Signed url for downloading this artifact
     */
    signedContent: WebApi.SignedUrl;
    /**
     * Self-referential url
     */
    url: string;
}
export interface Build {
    artifactSourceVersionUrl: string;
    type: string;
    versionId: string;
    versionName: string;
}
export interface BuildResourceParameters {
    version: string;
}
export declare enum ConfigurationType {
    /**
     * Unknown type.
     */
    Unknown = 0,
    /**
     * YAML.
     */
    Yaml = 1,
    /**
     * Designer JSON.
     */
    DesignerJson = 2,
    /**
     * Just-in-time.
     */
    JustInTime = 3,
    /**
     * Designer-JSON.
     */
    DesignerHyphenJson = 2
}
export interface Container {
    environment: {
        [key: string]: string;
    };
    image: string;
    mapDockerSocket: boolean;
    options: string;
    ports: string[];
    volumes: string[];
}
export interface ContainerResource {
    container: Container;
}
export interface ContainerResourceParameters {
    version: string;
}
/**
 * Configuration parameters of the pipeline.
 */
export interface CreatePipelineConfigurationParameters {
    /**
     * Type of configuration.
     */
    type: ConfigurationType;
}
/**
 * Parameters to create a pipeline.
 */
export interface CreatePipelineParameters {
    /**
     * Configuration parameters of the pipeline.
     */
    configuration: CreatePipelineConfigurationParameters;
    /**
     * Folder of the pipeline.
     */
    folder: string;
    /**
     * Name of the pipeline.
     */
    name: string;
}
/**
 * Expansion options for GetArtifact and ListArtifacts.
 */
export declare enum GetArtifactExpandOptions {
    /**
     * No expansion.
     */
    None = 0,
    /**
     * Include signed content.
     */
    SignedContent = 1
}
/**
 * $expand options for GetLog and ListLogs.
 */
export declare enum GetLogExpandOptions {
    None = 0,
    SignedContent = 1
}
/**
 * Log for a pipeline.
 */
export interface Log {
    /**
     * The date and time the log was created.
     */
    createdOn: Date;
    /**
     * The ID of the log.
     */
    id: number;
    /**
     * The date and time the log was last changed.
     */
    lastChangedOn: Date;
    /**
     * The number of lines in the log.
     */
    lineCount: number;
    signedContent: WebApi.SignedUrl;
    url: string;
}
/**
 * A collection of logs.
 */
export interface LogCollection {
    /**
     * The list of logs.
     */
    logs: Log[];
    signedContent: WebApi.SignedUrl;
    /**
     * URL of the log.
     */
    url: string;
}
export interface PackageResourceParameters {
    version: string;
}
/**
 * Definition of a pipeline.
 */
export interface Pipeline extends PipelineBase {
    _links: any;
    configuration: PipelineConfiguration;
    /**
     * URL of the pipeline
     */
    url: string;
}
export interface PipelineBase {
    /**
     * Pipeline folder
     */
    folder: string;
    /**
     * Pipeline ID
     */
    id: number;
    /**
     * Pipeline name
     */
    name: string;
    /**
     * Revision number
     */
    revision: number;
}
export interface PipelineConfiguration {
    type: ConfigurationType;
}
/**
 * A reference to a Pipeline.
 */
export interface PipelineReference extends PipelineBase {
    url: string;
}
export interface PipelineResource {
    pipeline: PipelineReference;
    version: string;
}
export interface PipelineResourceParameters {
    runId: number;
    version: string;
}
export interface PreviewRun {
    finalYaml: string;
}
export interface Repository {
    type: RepositoryType;
}
export interface RepositoryResource {
    refName: string;
    repository: Repository;
    version: string;
}
export interface RepositoryResourceParameters {
    refName: string;
    /**
     * This is the security token to use when connecting to the repository.
     */
    token: string;
    /**
     * Optional. This is the type of the token given. If not provided, a type of "Bearer" is assumed. Note: Use "Basic" for a PAT token.
     */
    tokenType: string;
    version: string;
}
export declare enum RepositoryType {
    Unknown = 0,
    GitHub = 1,
    AzureReposGit = 2,
    GitHubEnterprise = 3,
    BitBucket = 4,
    AzureReposGitHyphenated = 2
}
export interface Run extends RunReference {
    _links: any;
    createdDate: Date;
    finalYaml: string;
    finishedDate: Date;
    pipeline: PipelineReference;
    resources: RunResources;
    result: RunResult;
    state: RunState;
    templateParameters: {
        [key: string]: any;
    };
    url: string;
    variables: {
        [key: string]: Variable;
    };
    yamlDetails: RunYamlDetails;
}
/**
 * Settings which influence pipeline runs.
 */
export interface RunPipelineParameters {
    /**
     * If true, don't actually create a new run. Instead, return the final YAML document after parsing templates.
     */
    previewRun: boolean;
    /**
     * The resources the run requires.
     */
    resources: RunResourcesParameters;
    stagesToSkip: string[];
    templateParameters: {
        [key: string]: string;
    };
    variables: {
        [key: string]: Variable;
    };
    /**
     * If you use the preview run option, you may optionally supply different YAML. This allows you to preview the final YAML document without committing a changed file.
     */
    yamlOverride: string;
}
export interface RunReference {
    id: number;
    name: string;
}
export interface RunResources {
    builds: {
        [key: string]: Build;
    };
    containers: {
        [key: string]: ContainerResource;
    };
    pipelines: {
        [key: string]: PipelineResource;
    };
    repositories: {
        [key: string]: RepositoryResource;
    };
}
export interface RunResourcesParameters {
    builds: {
        [key: string]: BuildResourceParameters;
    };
    containers: {
        [key: string]: ContainerResourceParameters;
    };
    packages: {
        [key: string]: PackageResourceParameters;
    };
    pipelines: {
        [key: string]: PipelineResourceParameters;
    };
    repositories: {
        [key: string]: RepositoryResourceParameters;
    };
}
/**
 * This is not a Flags enum because we don't want to set multiple results on a build. However, when adding values, please stick to powers of 2 as if it were a Flags enum. This will make it easier to query multiple results.
 */
export declare enum RunResult {
    Unknown = 0,
    Succeeded = 1,
    Failed = 2,
    Canceled = 4
}
/**
 * This is not a Flags enum because we don't want to set multiple states on a build. However, when adding values, please stick to powers of 2 as if it were a Flags enum. This will make it easier to query multiple states.
 */
export declare enum RunState {
    Unknown = 0,
    InProgress = 1,
    Canceling = 2,
    Completed = 4
}
export interface RunYamlDetails {
    expandedYamlUrl: string;
    extendedTemplates: YamlFileDetails[];
    includedTemplates: YamlFileDetails[];
    rootYamlFile: YamlFileDetails;
}
export interface SignalRConnection {
    signedContent: WebApi.SignedUrl;
}
export interface Variable {
    isSecret: boolean;
    value: string;
}
export interface YamlFileDetails {
    ref: string;
    repoAlias: string;
    yamlFile: string;
}
