import { SfCommand } from '@salesforce/sf-plugins-core';
import { Config } from '@oclif/core';
import { Lifecycle, Org, ResultEvent, SandboxProcessObject, SandboxRequestCache, SandboxRequestCacheEntry, SandboxUserAuthResponse } from '@salesforce/core';
import { SandboxStages } from './sandboxStages.js';
export type SandboxCommandResponse = SandboxProcessObject & {
    SandboxUsername?: string;
    Message?: string;
};
export declare abstract class SandboxCommandBase<T> extends SfCommand<T> {
    protected stages: SandboxStages;
    protected latestSandboxProgressObj?: SandboxProcessObject;
    protected sandboxAuth?: SandboxUserAuthResponse;
    protected prodOrg?: Org;
    protected pollingTimeOut: boolean;
    protected sandboxRequestConfig: SandboxRequestCache;
    protected sandboxRequestData: SandboxRequestCacheEntry | undefined;
    protected action: 'Create' | 'Refresh' | 'Create/Refresh';
    protected sandboxUsername?: string;
    constructor(argv: string[], config: Config);
    protected getSandboxRequestConfig(): Promise<SandboxRequestCache>;
    protected calculateTrackingSetting(tracking?: boolean): Promise<boolean>;
    protected registerLifecycleListenersAndMSO(lifecycle: Lifecycle, options: {
        mso: {
            title: string;
            refresh?: boolean;
        };
        isAsync: boolean;
        alias?: string;
        setDefault?: boolean;
        prodOrg?: Org;
        tracksSource?: boolean;
    }): void;
    protected reportResults(results: ResultEvent): void;
    protected updateSandboxRequestData(): void;
    protected saveSandboxProgressConfig(): void;
    protected getSandboxName(): string | undefined;
    protected getSandboxUsername(prodOrgUsername: string, sandboxName: string): string;
    protected getSandboxCommandResponse(): SandboxCommandResponse;
    protected catch(error: Error): Promise<never>;
    protected finally(_: Error | undefined): Promise<any>;
    private removeSandboxProgressConfig;
    protected abstract getCheckSandboxStatusParams(): string[];
}
