import type { SaveState } from './EditorTopBar.js';
interface UseSitePreviewOptions {
    collection: string;
    documentId?: string | null;
    slug?: string | null;
    /** Collection URL prefix (e.g. `blog`). Empty/null for top-level pages. */
    urlPrefix?: string | null;
    /** Raw `config.seo.siteUrl`; falls back to the current origin. */
    siteUrl?: string | null;
    dirty: boolean;
    saveState: SaveState;
    /** Persist the draft; resolves `false` when the save failed. */
    saveDraft: () => Promise<boolean>;
}
export interface SitePreviewState {
    /** Whether the inline iframe preview replaces the editor canvas. */
    active: boolean;
    /** Public draft URL (`/<slug>?preview=<jwt>`); null while the token mints. */
    url: string | null;
    /** Bumped after each completed save so the iframe reloads the fresh draft. */
    reloadKey: number;
    toggle: () => void;
}
/**
 * Inline branded preview — drives an in-editor iframe that renders the draft
 * through the consumer's REAL public route (same `?preview=<token>` contract
 * as "View on site"), so editors see actual site CSS without leaving the
 * admin. Saves first when dirty, and reloads the frame after each save so
 * what you see always matches the persisted draft.
 */
export declare function useSitePreview({ collection, documentId, slug, urlPrefix, siteUrl, dirty, saveState, saveDraft, }: UseSitePreviewOptions): SitePreviewState;
export {};
//# sourceMappingURL=useSitePreview.d.ts.map