import { Org, Logger } from '@salesforce/core';
export declare class SandboxRequest {
    SandboxName: string;
    LicenseType?: string;
    SourceId?: string;
    Description?: string;
}
export interface SandboxProcessObject {
    Id: string;
    Status: string;
    SandboxName: string;
    SandboxInfoId: string;
    LicenseType: string;
    CreatedDate: string;
    SandboxOrganization?: string;
    CopyProgress?: number;
    SourceId?: string;
    Description?: string;
    ApexClassId?: string;
    EndDate?: string;
}
export interface SandboxUserAuthResponse {
    authUserName: string;
    authCode: string;
    instanceUrl: string;
    loginUrl: string;
}
export declare class SandboxUserAuthRequest {
    sandboxName: string;
    clientId: string;
    callbackUrl: string;
}
export declare class SandboxOrgApi {
    private logger;
    static readonly SOBJECT_SANDBOXPROCESS: string;
    static readonly SOBJECT_SANDBOXINFO: string;
    static readonly QUERY_SANDBOXPROCESS_FIELDS: string;
    static readonly QUERY_SANDBOXINFO_FIELDS: string;
    private tooling;
    constructor(org: Org, logger: Logger);
    static getInstance(org: Org, logger: Logger): SandboxOrgApi;
    createSandbox(sandboxReq: SandboxRequest): Promise<SandboxProcessObject>;
    /**
     *
     * @param processId
     * @returns sandboxProcess record in json
     */
    querySandboxProcessById(processId: string): Promise<SandboxProcessObject>;
    querySandboxProcessBySandboxOrgId(sandboxOrgId: string): Promise<SandboxProcessObject>;
    queryUserId(userNameIn: string): Promise<string>;
    /**
     *
     * @param sandboxNameIn
     * @returns sandboxInfoId
     */
    querySandboxInfoIdBySandboxName(sandboxNameIn: string): Promise<string>;
    queryLatestSandboxProcessBySandboxName(sandboxNameIn: string): Promise<SandboxProcessObject>;
    private queryLatestSandboxProcessBySandboxInfo;
    private queryToolingApi;
    sandboxAuth(request: SandboxUserAuthRequest): Promise<SandboxUserAuthResponse>;
    deleteSandbox(sandboxInfoId: string): Promise<SandboxProcessObject>;
}
