import { ConfigFile } from './configFile';
import { SfOrgs, SfOrg, SfInfo, SfInfoKeys } from './globalInfoConfig';
interface Handler<T extends SfInfoKeys> {
    sfKey: T;
    merge: (sfData: SfInfo) => Promise<Partial<SfInfo>>;
    migrate: () => Promise<Pick<SfInfo, T>>;
    write: (latest: SfInfo, original: SfInfo) => Promise<void>;
}
interface Changes<T> {
    changed: T;
    deleted: string[];
}
export declare class SfdxDataHandler {
    handlers: AuthHandler[];
    private original;
    write(latest?: SfInfo): Promise<void>;
    merge(sfData?: SfInfo): Promise<SfInfo>;
    private setOriginal;
}
declare abstract class BaseHandler<T extends SfInfoKeys> implements Handler<T> {
    abstract sfKey: T;
    merge(sfData?: SfInfo): Promise<Partial<SfInfo>>;
    abstract migrate(): Promise<Pick<SfInfo, T>>;
    abstract write(latest: SfInfo, original: SfInfo): Promise<void>;
}
export declare class AuthHandler extends BaseHandler<SfInfoKeys.ORGS> {
    private static authFilenameFilterRegEx;
    sfKey: typeof SfInfoKeys.ORGS;
    migrate(): Promise<Pick<SfInfo, SfInfoKeys.ORGS>>;
    write(latest: SfInfo, original: SfInfo): Promise<void>;
    findChanges(latest: SfInfo, original: SfInfo): Promise<Changes<SfOrgs>>;
    createAuthFileConfig(username: string): Promise<ConfigFile<ConfigFile.Options>>;
    listAllAuthFiles(): Promise<string[]>;
    listAllAuthorizations(): Promise<SfOrg[]>;
}
export {};
