export type OverlayValue = {
    proposalId: string;
    before: unknown;
    after: unknown;
};
export type PageStructureOverlay = {
    proposalId: string;
    includeUnspecified?: boolean;
    before: {
        blockIds: string[];
    };
    after: {
        blockIds: string[];
        addedBlocks?: Array<{
            id: string;
            kind: string;
            content?: Record<string, unknown> | null;
        }>;
    };
};
export type ProposalInput = {
    id: string;
    overrides: Array<{
        editorPath: string;
        before: unknown;
        after: unknown;
    }>;
};
export type AiOverlaysState = {
    viewMode: 'before' | 'after';
    revision: number;
    isStreaming: boolean;
    overrides: Map<string, OverlayValue>;
    structure: PageStructureOverlay | null;
    setViewMode: (mode: 'before' | 'after') => void;
    setStreaming: (value: boolean) => void;
    upsertProposal: (proposal: ProposalInput) => void;
    clearProposal: (proposalId: string) => void;
    setStructureProposal: (proposal: PageStructureOverlay | null) => void;
    clearAll: () => void;
    getOverrideForPath: (editorPath: string) => OverlayValue | null;
    hasActiveProposals: () => boolean;
};
export declare function createAiOverlaysSlice(triggerUpdate: () => void): AiOverlaysState;
