import OptionsSync, { type Options, type Setup } from 'webext-options-sync';
export * from 'webext-options-sync';
export { default as OptionsSync } from 'webext-options-sync';
export type SyncedForm = Readonly<{
    domainCount: number;
    getSelectedDomain: () => string;
    onChange(callback: (domain: string) => void): void;
}>;
export default class OptionsSyncPerDomain<UserOptions extends Options> {
    #private;
    static readonly migrations: {
        removeUnused(options: Options, defaults: Options): void;
    };
    constructor(options: Setup<UserOptions>);
    getOptionsForOrigin(origin?: string): OptionsSync<UserOptions>;
    getAllOrigins(): Promise<Map<string, OptionsSync<UserOptions>>>;
    getAdditionalOrigins(): Promise<Array<{
        origin: string;
        domain: string;
    }>>;
    syncForm(form: string | HTMLFormElement): Promise<Readonly<{
        domainCount: 1;
        getSelectedDomain: () => "default";
        onChange(): void;
    }> | Readonly<{
        domainCount: number;
        getSelectedDomain: () => string;
        onChange: (callback: (domain: string) => void) => Promise<void>;
    }>>;
    private getStorageNameForOrigin;
    private getOriginFromDomain;
    private readonly _domainChangeHandler;
}
