import type { SiteStyleId } from '@riverbankcms/theme-core/site-styles/previewCompiler';
export type SiteThemeRecordIdentity = Readonly<{
    themeId: string | null;
    selectionId: string | null;
}>;
export type SiteStyleSaveStatus = Readonly<{
    kind: 'idle';
}> | Readonly<{
    kind: 'saving';
}> | Readonly<{
    kind: 'saved';
}> | Readonly<{
    kind: 'failed';
    message: string;
}>;
export type SiteStyleSwitcherState = Readonly<{
    baseSiteStyleId: SiteStyleId | null;
    selectedSiteStyleId: SiteStyleId | null;
    appliedSiteStyleId: SiteStyleId | null;
    themeRecord: SiteThemeRecordIdentity;
    saveStatus: SiteStyleSaveStatus;
}>;
export declare function createSiteStyleSwitcherState(input: Readonly<{
    baseSiteStyleId: SiteStyleId | null;
    themeRecord: SiteThemeRecordIdentity;
}>): SiteStyleSwitcherState;
export declare function currentSwitcherSiteStyleId(state: SiteStyleSwitcherState): SiteStyleId | null;
export declare function previewedSwitcherSiteStyleId(state: SiteStyleSwitcherState): SiteStyleId | null;
export declare function overrideSwitcherSiteStyleId(state: SiteStyleSwitcherState): SiteStyleId | null;
export declare function isPreviewingDifferentSiteStyle(state: SiteStyleSwitcherState): boolean;
export declare function shouldPreserveSiteStyleOverrideOnUnmount(state: SiteStyleSwitcherState): boolean;
export declare function syncSiteStyleSwitcherState(state: SiteStyleSwitcherState, input: Readonly<{
    baseSiteStyleId: SiteStyleId | null;
    themeRecord: SiteThemeRecordIdentity;
}>): SiteStyleSwitcherState;
export declare function previewSiteStyleSelection(state: SiteStyleSwitcherState, siteStyleId: SiteStyleId): SiteStyleSwitcherState;
export declare function cancelSiteStylePreview(state: SiteStyleSwitcherState): SiteStyleSwitcherState;
export declare function markSiteStyleApplySaving(state: SiteStyleSwitcherState): SiteStyleSwitcherState;
export declare function markSiteStyleApplySaved(state: SiteStyleSwitcherState, input: Readonly<{
    siteStyleId: SiteStyleId;
    themeRecord: SiteThemeRecordIdentity;
}>): SiteStyleSwitcherState;
export declare function markSiteStyleApplyFailed(state: SiteStyleSwitcherState, message: string): SiteStyleSwitcherState;
