import { ComponentSet } from '../collections/componentSet';
import { MetadataTransfer } from './metadataTransfer';
import { AsyncResult, FileResponse, MetadataApiRetrieveStatus, MetadataTransferResult } from './types';
import { MetadataApiRetrieveOptions } from './types';
export declare class RetrieveResult implements MetadataTransferResult {
    readonly response: MetadataApiRetrieveStatus;
    readonly components: ComponentSet;
    private partialDeleteFileResponses;
    private localComponents;
    private fileResponses?;
    /**
     * @param response The metadata retrieve response from the server
     * @param components The ComponentSet of retrieved source components
     * @param localComponents The ComponentSet used to create the retrieve request
     */
    constructor(response: MetadataApiRetrieveStatus, components: ComponentSet, localComponents?: ComponentSet, partialDeleteFileResponses?: FileResponse[]);
    getFileResponses(): FileResponse[];
}
export declare class MetadataApiRetrieve extends MetadataTransfer<MetadataApiRetrieveStatus, RetrieveResult, MetadataApiRetrieveOptions> {
    static DEFAULT_OPTIONS: Partial<MetadataApiRetrieveOptions>;
    private readonly options;
    private orgId?;
    constructor(options: MetadataApiRetrieveOptions);
    /**
     * Check the status of the retrieve operation.
     *
     * @returns Status of the retrieve
     */
    checkStatus(): Promise<MetadataApiRetrieveStatus>;
    /**
     * Cancel the retrieve operation.
     *
     * Canceling a retrieve occurs immediately and requires no additional status
     * checks to the org, unlike {@link MetadataApiDeploy.cancel}.
     */
    cancel(): Promise<void>;
    post(result: MetadataApiRetrieveStatus): Promise<RetrieveResult>;
    protected pre(): Promise<AsyncResult>;
}
/**
 * register a listener to `scopedPreRetrieve`
 */
export type ScopedPreRetrieve = {
    componentSet: ComponentSet;
    orgId: string;
};
/**
 * register a listener to `scopedPostRetrieve`
 */
export type ScopedPostRetrieve = {
    retrieveResult: RetrieveResult;
    orgId: string;
};
