import { Environment, EnvironmentDefinitionValues, OpenEnvironment, OrgEnvironments, OrgEnvironment, EnvironmentDefinition, EscApi as EscRawApi, Configuration, Value, EnvironmentDiagnostics, CheckEnvironment, Pos, Range, Trace, EnvironmentRevision, EnvironmentRevisionTag, EnvironmentRevisionTags, EnvironmentTag, ListEnvironmentTags } from "./raw/index";
export { Configuration, Environment, EnvironmentDefinitionValues, OpenEnvironment, OrgEnvironments, OrgEnvironment, EnvironmentDefinition, EscRawApi, Value, EnvironmentDiagnostics, CheckEnvironment, Pos, Range, Trace, EnvironmentRevision, EnvironmentRevisionTag, EnvironmentRevisionTags, };
export interface EnvironmentDefinitionResponse {
    definition: EnvironmentDefinition;
    yaml: string;
}
export interface EnvironmentResponse {
    environment?: Environment;
    values?: EnvironmentDefinitionValues;
}
export interface EnvironmentPropertyResponse {
    property: Value;
    value: any;
}
export interface CloneEnvironmentOptions {
    preserveHistory?: boolean;
    preserveAccess?: boolean;
    preserveEnvironmentTags?: boolean;
    preserveRevisionTags?: boolean;
}
/**
 *
 * EscApi is a client for the ESC API.
 * It wraps the raw API client and provides a more convenient interface.
 * @export
 * @class EscApi
 */
export declare class EscApi {
    rawApi: EscRawApi;
    config: Configuration;
    constructor(config: Configuration);
    /**
     * listEnvironments lists the environments in an organization.
     * @summary List environments
     * @param {string} orgName Organization name
     * @param {string} continuationToken continuation Token from previous query to fetch next page of results
     * @returns {Promise<OrgEnvironments | undefined>} A list of environments
     */
    listEnvironments(orgName: string, continuationToken?: string): Promise<OrgEnvironments | undefined>;
    /**
     * getEnvironment gets the definition of an environment.
     * @summary Get environment
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @returns {Promise<EnvironmentDefinitionResponse | undefined>} The environment definition and the YAML representation
     */
    getEnvironment(orgName: string, projectName: string, envName: string): Promise<EnvironmentDefinitionResponse | undefined>;
    /**
     * getEnvironmentAtVersion gets the definition of an environment at a specific version.
     * @summary Get environment at version
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {string} version Version of the environment
     * @returns {Promise<EnvironmentDefinitionResponse | undefined>} The environment definition and the YAML representation
     */
    getEnvironmentAtVersion(orgName: string, projectName: string, envName: string, version: string): Promise<EnvironmentDefinitionResponse | undefined>;
    /**
     * openEnvironment opens an environment session
     * @summary Open environment
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @returns {Promise<OpenEnvironment | undefined>} The open environment session information
     */
    openEnvironment(orgName: string, projectName: string, envName: string): Promise<OpenEnvironment | undefined>;
    /**
     * openEnvironmentAtVersion opens an environment session at a specific version
     * @summary Open environment at version
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {string} version Version of the environment
     * @returns {Promise<OpenEnvironment | undefined>} The open environment session information
     */
    openEnvironmentAtVersion(orgName: string, projectName: string, envName: string, version: string): Promise<OpenEnvironment | undefined>;
    /**
     * readOpenEnvironment reads the environment properties in an open session,
     * resolving configuration variables and secrets.
     * @summary Read environment
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {string} openSessionID Open session ID
     * @returns {Promise<EnvironmentResponse | undefined>} The environment and its values
     */
    readOpenEnvironment(orgName: string, projectName: string, envName: string, openSessionID: string): Promise<EnvironmentResponse | undefined>;
    /**
     * openAndReadEnvironment opens an environment session and reads the environment properties,
     * resolving configuration variables and secrets.
     * @summary Open and read environment
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @returns {Promise<EnvironmentResponse | undefined>} The environment and its values
     */
    openAndReadEnvironment(orgName: string, projectName: string, envName: string): Promise<EnvironmentResponse | undefined>;
    /**
     * openAndReadEnvironmentAtVersion opens an environment session at a specific version and reads the environment properties,
     * resolving configuration variables and secrets.
     * @summary Open and read environment at version
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {string} version Version of the environment
     * @returns {Promise<EnvironmentResponse | undefined>} The environment and its values
     */
    openAndReadEnvironmentAtVersion(orgName: string, projectName: string, envName: string, version: string): Promise<EnvironmentResponse | undefined>;
    /**
     * readOpenEnvironmentProperty reads a specific environment property in an open session,
     * resolving configuration variables and secrets.
     * @summary Read environment property
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {string} openSessionID Open session ID
     * @param {string} property Property name
     * @returns {Promise<EnvironmentPropertyResponse | undefined>} The environment property and its value
     */
    readOpenEnvironmentProperty(orgName: string, projectName: string, envName: string, openSessionID: string, property: string): Promise<EnvironmentPropertyResponse | undefined>;
    /**
     * createEnvironment creates a new environment.
     * @summary Create environment
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @returns {Promise<void>} A promise that resolves when the environment is created
     */
    createEnvironment(orgName: string, projectName: string, envName: string): Promise<void>;
    /**
     * cloneEnvironment clones an environment
     * @summary Clone environment
     * @param {string} orgName Organization name
     * @param {string} cloneProjectName Clone project name
     * @param {string} cloneEnvName Clone environment name
     * @param {string} destProjectName Destination project name
     * @param {string} destEnvName Destionation environment name
     * @param {CloneEnvironmentOptions} cloneOptions Clone options
     * @returns {Promise<void>} A promise that resolves when the environment is created
     */
    cloneEnvironment(orgName: string, srcProjectName: string, srcEnvName: string, destProjectName: string, destEnvName: string, cloneOptions?: CloneEnvironmentOptions): Promise<void>;
    /**
     * updateEnvironmentYaml updates the environment definition from a YAML string.
     * @summary Update environment YAML
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {string} yaml YAML representation of the environment
     * @returns {Promise<EnvironmentDiagnostics | undefined>} The environment diagnostics
     */
    updateEnvironmentYaml(orgName: string, projectName: string, envName: string, yaml: string): Promise<EnvironmentDiagnostics | undefined>;
    /**
     * updateEnvironment updates the environment definition.
     * @summary Update environment
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {EnvironmentDefinition} values The environment definition
     * @returns {Promise<EnvironmentDiagnostics | undefined>} The environment diagnostics
     */
    updateEnvironment(orgName: string, projectName: string, envName: string, values: EnvironmentDefinition): Promise<EnvironmentDiagnostics | undefined>;
    /**
     * deleteEnvironment deletes an environment.
     * @summary Delete environment
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @returns {Promise<void>} A promise that resolves when the environment is deleted
     */
    deleteEnvironment(orgName: string, projectName: string, envName: string): Promise<void>;
    /**
     * checkEnvironmentYaml checks the environment definition from a YAML string.
     * @summary Check environment YAML
     * @param {string} orgName Organization name
     * @param {string} yaml YAML representation of the environment
     * @returns {Promise<CheckEnvironment | undefined>} The environment diagnostics
     */
    checkEnvironmentYaml(orgName: string, yaml: string): Promise<CheckEnvironment | undefined>;
    /**
     * checkEnvironment checks the environment definition.
     * @summary Check environment
     * @param {string} orgName Organization name
     * @param {EnvironmentDefinition} env The environment definition
     * @returns {Promise<CheckEnvironment | undefined>} The environment diagnostics
     */
    checkEnvironment(orgName: string, env: EnvironmentDefinition): Promise<CheckEnvironment | undefined>;
    /**
     * decryptEnvironment decrypts the environment definition.
     * @summary Decrypt environment
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @returns {Promise<EnvironmentDefinitionResponse | undefined>} The decrypted environment definition and the YAML representation
     */
    decryptEnvironment(orgName: string, projectName: string, envName: string): Promise<EnvironmentDefinitionResponse | undefined>;
    /**
     * listEnvironmentRevisions lists the environment revisions, from oldest to newest.
     * @summary List environment revisions
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {number} before The revision number to start listing from
     * @param {number} count The number of revisions to list
     * @returns {Promise<Array<EnvironmentRevision> | undefined>} A list of environment revisions
     */
    listEnvironmentRevisions(orgName: string, projectName: string, envName: string, before?: number, count?: number): Promise<Array<EnvironmentRevision> | undefined>;
    /**
     * listEnvironmentRevisionTags lists the environment revision tags.
     * @summary List environment revision tags
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {string} after The tag to start listing from
     * @param {number} count The number of tags to list
     * @returns {Promise<EnvironmentRevisionTags | undefined>} A list of environment revision tags
     */
    listEnvironmentRevisionTags(orgName: string, projectName: string, envName: string, after?: string, count?: number): Promise<EnvironmentRevisionTags | undefined>;
    /**
     * getEnvironmentRevisionTag gets the environment revision tag.
     * @summary Get environment revision tag
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {string} tag The tag name
     * @returns {Promise<EnvironmentRevisionTag | undefined>} The environment revision tag
     */
    getEnvironmentRevisionTag(orgName: string, projectName: string, envName: string, tag: string): Promise<EnvironmentRevisionTag | undefined>;
    /**
     * createEnvironmentRevisionTag creates a new environment revision tag.
     * @summary Create environment revision tag
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {string} tag The tag name
     * @param {number} revision The revision number
     * @returns {Promise<void>} A promise that resolves when the tag is created
     */
    createEnvironmentRevisionTag(orgName: string, projectName: string, envName: string, tag: string, revision: number): Promise<void>;
    /**
     * updateEnvironmentRevisionTag updates the environment revision tag.
     * @summary Update environment revision tag
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {string} tag The tag name
     * @param {number} revision The revision number
     * @returns {Promise<void>} A promise that resolves when the tag is updated
     */
    updateEnvironmentRevisionTag(orgName: string, projectName: string, envName: string, tag: string, revision: number): Promise<void>;
    /**
     * deleteEnvironmentRevisionTag deletes the environment revision tag.
     * @summary Delete environment revision tag
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {string} tag The tag name
     * @returns {Promise<void>} A promise that resolves when the tag is deleted
     */
    deleteEnvironmentRevisionTag(orgName: string, projectName: string, envName: string, tag: string): Promise<void>;
    /**
     * listEnvironmentTags lists the environment tags.
     * @summary List environment tags
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {string} after The tag to start listing from
     * @param {number} count The number of tags to list
     * @returns {Promise<ListEnvironmentTags | undefined>} A list of environment tags
     */
    listEnvironmentTags(orgName: string, projectName: string, envName: string, after?: string, count?: number): Promise<ListEnvironmentTags | undefined>;
    /**
     * getEnvironmentTag gets the environment tag.
     * @summary Get environment tag
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {string} tag The tag name
     * @returns {Promise<EnvironmentTag | undefined>} The environment tag
     */
    getEnvironmentTag(orgName: string, projectName: string, envName: string, tag: string): Promise<EnvironmentTag | undefined>;
    /**
     * createEnvironmentTag creates a new environment tag.
     * @summary Create environment tag
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {string} tag The tag name
     * @param {string} value The tag value
     * @returns {Promise<EnvironmentTag>} A promise that resolves when the tag is created
     */
    createEnvironmentTag(orgName: string, projectName: string, envName: string, tag: string, value: string): Promise<void>;
    /**
     * updateEnvironmentTag updates the environment tag.
     * @summary Update environment tag
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {string} tag The tag name
     * @param {string} current_value The tag value
     * @param {string} new_tag The new tag name
     * @param {string} new_value The new tag value
     * @returns {Promise<EnvironmentTag>} A promise that resolves when the tag is updated
     */
    updateEnvironmentTag(orgName: string, projectName: string, envName: string, tag: string, current_value: string, new_tag: string, new_value: string): Promise<void>;
    /**
     * deleteEnvironmentTag deletes the environment tag.
     * @summary Delete environment tag
     * @param {string} orgName Organization name
     * @param {string} projectName Project name
     * @param {string} envName Environment name
     * @param {string} tag The tag name
     * @returns {Promise<void>} A promise that resolves when the tag is deleted
     */
    deleteEnvironmentTag(orgName: string, projectName: string, envName: string, tag: string): Promise<void>;
}
export declare function DefaultConfiguration(config?: Configuration): Configuration;
export declare function DefaultClient(config?: Configuration): EscApi;
