export type PreviewUndoDomainId = 'content' | 'theme-customize';
export type PreviewUndoDomainStatus = 'idle' | 'pending' | 'stale' | 'failed';
export type PreviewUndoFocusOwner = 'preview-customize' | 'content' | 'native';
export type PreviewUndoDomainOwnership = Readonly<{
    kind: 'focused';
    owner: PreviewUndoFocusOwner;
}> | Readonly<{
    kind: 'available';
}> | Readonly<{
    kind: 'fallback';
}>;
export type PreviewUndoSelectionContext = Readonly<{
    kind: 'chrome';
}> | Readonly<{
    kind: 'shortcut';
    owner: PreviewUndoFocusOwner;
}>;
export type PreviewUndoDomainHandle = Readonly<{
    id: PreviewUndoDomainId;
    ownership: PreviewUndoDomainOwnership;
    canUndo: boolean;
    canRedo: boolean;
    status?: PreviewUndoDomainStatus;
    undo: () => void;
    redo: () => void;
}>;
export type PreviewUndoCommand = 'undo' | 'redo';
export declare function selectPreviewUndoDomain(domains: readonly PreviewUndoDomainHandle[], command: PreviewUndoCommand, context: PreviewUndoSelectionContext): PreviewUndoDomainHandle | null;
export declare function previewUndoControlsForDomains(domains: readonly PreviewUndoDomainHandle[], context: PreviewUndoSelectionContext): Readonly<{
    canUndo: boolean;
    canRedo: boolean;
    onUndo: () => void;
    onRedo: () => void;
}>;
