import { FileResponse, SourceComponent } from '@salesforce/source-deploy-retrieve';
import { SfError } from '@salesforce/core/sfError';
export type ChangeOptions = {
    origin: 'local' | 'remote';
    state: 'add' | 'delete' | 'modify' | 'nondelete';
    format: 'ChangeResult' | 'SourceComponent' | 'string' | 'ChangeResultWithPaths';
};
export type RemoteSyncInput = Pick<FileResponse, 'fullName' | 'filePath' | 'type' | 'state'>;
export type StatusOutputRow = Pick<FileResponse, 'fullName' | 'filePath' | 'type'> & {
    conflict?: boolean;
    ignored?: boolean;
} & Pick<ChangeOptions, 'origin' | 'state'>;
export type LocalUpdateOptions = {
    files?: string[];
    deletedFiles?: string[];
};
export type RemoteChangeElement = {
    name: string;
    type: string;
    deleted?: boolean;
    modified?: boolean;
    changedBy: string;
    revisionCounter: number;
    lastModifiedDate: string;
    /** the ID of the metadata that was changed.  Each metadata type has a different 3-char prefix */
    memberIdOrName: string;
};
/**
 * Summary type that supports both local and remote change types
 */
export type ChangeResult = Partial<RemoteChangeElement> & {
    origin: 'local' | 'remote';
    filenames?: string[];
    ignored?: boolean;
};
export type ConflictResponse = {
    state: 'Conflict';
    fullName: string;
    type: string;
    filePath: string;
};
export type SourceConflictErrorType = {
    name: 'SourceConflictError';
} & SfError<ConflictResponse[]>;
export declare class SourceConflictError extends SfError<ConflictResponse[]> implements SourceConflictErrorType {
    readonly name: SourceConflictErrorType['name'];
    constructor(message: string, data: ConflictResponse[]);
}
export type ChangeOptionType = ChangeResult | SourceComponent | string;
export type SourceMemberPollingEvent = {
    original: number;
    remaining: number;
    attempts: number;
    consecutiveEmptyResults: number;
};
export type ChangeResultWithNameAndType = ChangeResult & Required<Pick<ChangeResult, 'name' | 'type'>>;
