import { PageAttributes, SiteAttributes } from '@upstart.gg/sdk/shared/site/attributes';
import { Brick, Section } from '@upstart.gg/sdk/bricks';
import { Datarecord } from '@upstart.gg/sdk/shared/datarecords/types';
import { Datasource, Query } from '@upstart.gg/sdk/shared/datasources/types';
import { ImageSearchResultsType } from '@upstart.gg/sdk/shared/ai/images';
import { VersionedPage } from '@upstart.gg/sdk/shared/site/page';
import { Resolution } from '@upstart.gg/sdk/shared/site/responsive';
import { Site } from '@upstart.gg/sdk/shared/site/site';
import { Theme } from '@upstart.gg/sdk/shared/themes/theme';
export type { Immer } from 'immer';
type QueryAlias = string;
export interface DraftStateProps {
    /**
     * Page ID being edited
     */
    data: Record<QueryAlias, Record<string, unknown>[]>;
    site: Site;
    page: VersionedPage;
    previewTheme?: Theme;
    /**
     * Last saved date
     */
    lastSaved?: Date;
    /**
     * True if the draft has unsaved changes
     */
    dirty?: boolean;
    /**
     * Map of brick IDs to their metadata - temporary structure to facilitate dealing with the nested structure
     */
    brickMap: Map<string, {
        brick: Brick;
        sectionId: string;
        parentId: string | null;
    }>;
    additionalAssets: ImageSearchResultsType;
}
export interface DraftState extends DraftStateProps {
    getBrick: (id: string) => Brick | undefined;
    getParentBrick: (id: string) => Brick | undefined;
    deleteBrick: (id: string) => void;
    getPageDataForDuplication: () => VersionedPage;
    duplicateBrick: (id: string) => void;
    duplicateSection: (id: string) => void;
    moveBrick: (id: string, to: "previous" | "next") => void;
    reorderBrickWithin: (brickId: string, toIndex: number) => void;
    moveBrickToContainerBrick: (id: string, parentId: string, index: number) => void;
    moveBrickToSection: (id: string, sectionId: string | null, index?: number) => void;
    detachBrickFromContainer: (id: string) => void;
    upsertQuery: (query: Query) => void;
    addBrick: (brick: Brick, sectiondId: string, index: number, parentContainerId?: Brick["id"] | null) => void;
    updateBrickProps: (id: string, props: Record<string, unknown>, isMobileProps?: boolean) => void;
    toggleBrickVisibility: (id: string, resolution: Resolution) => void;
    setPreviewTheme: (theme: Theme) => void;
    setTheme: (theme: Theme) => void;
    pickTheme: (themeId: Theme["id"]) => void;
    addThemes: (themes: Theme[]) => void;
    validatePreviewTheme: (accept: boolean) => void;
    cancelPreviewTheme: () => void;
    updatePageAttributes: (attr: Partial<PageAttributes>) => void;
    updatePage: (pageData: Partial<VersionedPage>) => void;
    deletePageAttribute: (key: string) => void;
    updateSiteAttributes: (attr: Partial<SiteAttributes>) => void;
    deleteSiteAttribute: (key: string) => void;
    setLastSaved: (date: Date) => void;
    setVersion(version: string): void;
    registerPageInSitemap: (page: VersionedPage) => void;
    addPage: (page: VersionedPage) => void;
    addDatasource: (datasource: Datasource) => void;
    addDatarecord: (datarecord: Datarecord) => void;
    addAdditionalAssets: (assets: ImageSearchResultsType) => void;
    setSitemap(sitemap: Site["sitemap"]): void;
    getPositionWithinParent: (brickId: Brick["id"]) => number | undefined;
    canMoveTo: (brickId: Brick["id"], to: "previous" | "next") => boolean;
    isFirstSection: (sectionId: string) => boolean;
    isLastSection: (sectionId: string) => boolean;
    moveSectionUp: (sectionId: string) => void;
    moveSectionDown: (sectionId: string) => void;
    reorderSections: (orderedIds: string[]) => void;
    createEmptySection: (id: string, afterSectionId?: string) => void;
    addSection: (section: Section) => void;
    updateSection: (id: string, sectionData: Partial<Section>, override?: boolean) => void;
    updateSectionProps: (id: string, props: Partial<Section["props"]>, isMobileProps?: boolean) => void;
    deleteSection: (id: string) => void;
    getSection: (id: string) => Section | undefined;
    setSections: (sections: Section[]) => void;
    setSitePrompt: (prompt: string) => void;
    setSiteLabel: (label: string) => void;
}
export declare const createDraftStore: (initProps: Partial<DraftStateProps> & {
    page: VersionedPage;
    site: DraftStateProps["site"];
}) => Omit<Omit<Omit<import('zustand').StoreApi<DraftState>, "subscribe"> & {
    subscribe: {
        (listener: (selectedState: DraftState, previousSelectedState: DraftState) => void): () => void;
        <U>(selector: (state: DraftState) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
            equalityFn?: ((a: U, b: U) => boolean) | undefined;
            fireImmediately?: boolean;
        } | undefined): () => void;
    };
}, "temporal"> & {
    temporal: import('zustand').StoreApi<import('zundo').TemporalState<DraftState>>;
}, "setState"> & {
    setState(nextStateOrUpdater: DraftState | Partial<DraftState> | ((state: import('immer').WritableDraft<DraftState>) => void), shouldReplace?: boolean | undefined): void;
};
export declare const DraftStoreContext: import('react').Context<(Omit<Omit<Omit<import('zustand').StoreApi<DraftState>, "subscribe"> & {
    subscribe: {
        (listener: (selectedState: DraftState, previousSelectedState: DraftState) => void): () => void;
        <U>(selector: (state: DraftState) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
            equalityFn?: ((a: U, b: U) => boolean) | undefined;
            fireImmediately?: boolean;
        } | undefined): () => void;
    };
}, "temporal"> & {
    temporal: import('zustand').StoreApi<import('zundo').TemporalState<DraftState>>;
}, "setState"> & {
    setState(nextStateOrUpdater: DraftState | Partial<DraftState> | ((state: import('immer').WritableDraft<DraftState>) => void), shouldReplace?: boolean | undefined): void;
}) | null>;
export declare const usePageContext: () => Omit<Omit<Omit<import('zustand').StoreApi<DraftState>, "subscribe"> & {
    subscribe: {
        (listener: (selectedState: DraftState, previousSelectedState: DraftState) => void): () => void;
        <U>(selector: (state: DraftState) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
            equalityFn?: ((a: U, b: U) => boolean) | undefined;
            fireImmediately?: boolean;
        } | undefined): () => void;
    };
}, "temporal"> & {
    temporal: import('zustand').StoreApi<import('zundo').TemporalState<DraftState>>;
}, "setState"> & {
    setState(nextStateOrUpdater: DraftState | Partial<DraftState> | ((state: import('immer').WritableDraft<DraftState>) => void), shouldReplace?: boolean | undefined): void;
};
export declare const useDraftUndoManager: () => import('zundo').TemporalState<DraftState>;
export declare const useSitemap: () => {
    isInitialPage?: boolean | undefined;
    status?: "draft" | "published" | undefined;
    id: string;
    label: string;
    tags: string[];
    path: string;
}[];
export declare const useGenerationState: () => {
    hasSitemap: boolean;
    hasThemesGenerated: boolean;
    isSetup: boolean;
    isReady: boolean;
};
export declare const useThemes: () => {
    id: string;
    name: string;
    description: string;
    tags: string[];
    browserColorScheme: "light" | "dark";
    colors: {
        primary: string;
        secondary: string;
        accent: string;
        neutral: string;
        info: string;
        success: string;
        warning: string;
        error: string;
        base100: string;
        base200: string;
        base300: string;
    };
    typography: {
        base: number;
        heading: {
            type: "stack";
            family: string;
        } | {
            type: "theme";
            family: string;
        } | {
            type: "google";
            family: string;
        };
        body: {
            type: "stack";
            family: string;
        } | {
            type: "theme";
            family: string;
        } | {
            type: "google";
            family: string;
        };
        alternatives: {
            heading: {
                type: "stack";
                family: string;
            } | {
                type: "theme";
                family: string;
            } | {
                type: "google";
                family: string;
            };
            body: {
                type: "stack";
                family: string;
            } | {
                type: "theme";
                family: string;
            } | {
                type: "google";
                family: string;
            };
        }[];
    };
}[];
export declare const useDraft: () => DraftState;
export declare function useParentBrick(brickId: string): Brick | undefined;
export declare function usePageVersion(): string;
export declare function useLastSaved(): Date | undefined;
export declare const useSections: () => {
    mobileProps?: {
        colorPreset?: {
            gradientDirection?: string | undefined;
            color: string;
        } | undefined;
        backgroundImage?: {
            repeat?: "repeat" | "no-repeat" | "repeat-x" | "repeat-y" | "space" | "round" | undefined;
            size?: "auto" | "cover" | "contain" | undefined;
            image: string;
        } | undefined;
        direction?: "flex-row" | "flex-col" | undefined;
        minHeight?: string | undefined;
        variant?: "navbar" | "footer" | "sidebar" | undefined;
        maxWidth?: "max-w-screen-lg" | "max-w-screen-xl" | "max-w-screen-2xl" | "max-w-full" | undefined;
        verticalMargin?: string | undefined;
        justifyContent?: "justify-start" | "justify-center" | "justify-end" | "justify-between" | "justify-around" | "justify-evenly" | undefined;
        alignItems?: "items-start" | "items-center" | "items-end" | "items-stretch" | undefined;
        padding?: string | undefined;
        gap?: string | undefined;
        wrap?: boolean | undefined;
        lastTouched?: number | undefined;
    } | undefined;
    id: string;
    label: string;
    props: {
        colorPreset?: {
            gradientDirection?: string | undefined;
            color: string;
        } | undefined;
        backgroundImage?: {
            repeat?: "repeat" | "no-repeat" | "repeat-x" | "repeat-y" | "space" | "round" | undefined;
            size?: "auto" | "cover" | "contain" | undefined;
            image: string;
        } | undefined;
        direction?: "flex-row" | "flex-col" | undefined;
        minHeight?: string | undefined;
        variant?: "navbar" | "footer" | "sidebar" | undefined;
        maxWidth?: "max-w-screen-lg" | "max-w-screen-xl" | "max-w-screen-2xl" | "max-w-full" | undefined;
        verticalMargin?: string | undefined;
        justifyContent?: "justify-start" | "justify-center" | "justify-end" | "justify-between" | "justify-around" | "justify-evenly" | undefined;
        alignItems?: "items-start" | "items-center" | "items-end" | "items-stretch" | undefined;
        padding?: string | undefined;
        gap?: string | undefined;
        wrap?: boolean | undefined;
        lastTouched?: number | undefined;
    };
    order: number;
    bricks: {
        label?: string | undefined;
        mobileProps?: any;
        id: string;
        type: string;
        props: any;
    }[];
}[];
export declare const useSection: (sectionId?: string) => {
    section: {
        mobileProps?: {
            colorPreset?: {
                gradientDirection?: string | undefined;
                color: string;
            } | undefined;
            backgroundImage?: {
                repeat?: "repeat" | "no-repeat" | "repeat-x" | "repeat-y" | "space" | "round" | undefined;
                size?: "auto" | "cover" | "contain" | undefined;
                image: string;
            } | undefined;
            direction?: "flex-row" | "flex-col" | undefined;
            minHeight?: string | undefined;
            variant?: "navbar" | "footer" | "sidebar" | undefined;
            maxWidth?: "max-w-screen-lg" | "max-w-screen-xl" | "max-w-screen-2xl" | "max-w-full" | undefined;
            verticalMargin?: string | undefined;
            justifyContent?: "justify-start" | "justify-center" | "justify-end" | "justify-between" | "justify-around" | "justify-evenly" | undefined;
            alignItems?: "items-start" | "items-center" | "items-end" | "items-stretch" | undefined;
            padding?: string | undefined;
            gap?: string | undefined;
            wrap?: boolean | undefined;
            lastTouched?: number | undefined;
        } | undefined;
        id: string;
        label: string;
        props: {
            colorPreset?: {
                gradientDirection?: string | undefined;
                color: string;
            } | undefined;
            backgroundImage?: {
                repeat?: "repeat" | "no-repeat" | "repeat-x" | "repeat-y" | "space" | "round" | undefined;
                size?: "auto" | "cover" | "contain" | undefined;
                image: string;
            } | undefined;
            direction?: "flex-row" | "flex-col" | undefined;
            minHeight?: string | undefined;
            variant?: "navbar" | "footer" | "sidebar" | undefined;
            maxWidth?: "max-w-screen-lg" | "max-w-screen-xl" | "max-w-screen-2xl" | "max-w-full" | undefined;
            verticalMargin?: string | undefined;
            justifyContent?: "justify-start" | "justify-center" | "justify-end" | "justify-between" | "justify-around" | "justify-evenly" | undefined;
            alignItems?: "items-start" | "items-center" | "items-end" | "items-stretch" | undefined;
            padding?: string | undefined;
            gap?: string | undefined;
            wrap?: boolean | undefined;
            lastTouched?: number | undefined;
        };
        order: number;
        bricks: {
            label?: string | undefined;
            mobileProps?: any;
            id: string;
            type: string;
            props: any;
        }[];
    };
    bricks: [string, {
        brick: Brick;
        sectionId: string;
        parentId: string | null;
    }][];
} | null;
export declare const useBrick: (brickId?: string) => Brick | null;
export declare const useSectionByBrickId: (brickId: string) => {
    mobileProps?: {
        colorPreset?: {
            gradientDirection?: string | undefined;
            color: string;
        } | undefined;
        backgroundImage?: {
            repeat?: "repeat" | "no-repeat" | "repeat-x" | "repeat-y" | "space" | "round" | undefined;
            size?: "auto" | "cover" | "contain" | undefined;
            image: string;
        } | undefined;
        direction?: "flex-row" | "flex-col" | undefined;
        minHeight?: string | undefined;
        variant?: "navbar" | "footer" | "sidebar" | undefined;
        maxWidth?: "max-w-screen-lg" | "max-w-screen-xl" | "max-w-screen-2xl" | "max-w-full" | undefined;
        verticalMargin?: string | undefined;
        justifyContent?: "justify-start" | "justify-center" | "justify-end" | "justify-between" | "justify-around" | "justify-evenly" | undefined;
        alignItems?: "items-start" | "items-center" | "items-end" | "items-stretch" | undefined;
        padding?: string | undefined;
        gap?: string | undefined;
        wrap?: boolean | undefined;
        lastTouched?: number | undefined;
    } | undefined;
    id: string;
    label: string;
    props: {
        colorPreset?: {
            gradientDirection?: string | undefined;
            color: string;
        } | undefined;
        backgroundImage?: {
            repeat?: "repeat" | "no-repeat" | "repeat-x" | "repeat-y" | "space" | "round" | undefined;
            size?: "auto" | "cover" | "contain" | undefined;
            image: string;
        } | undefined;
        direction?: "flex-row" | "flex-col" | undefined;
        minHeight?: string | undefined;
        variant?: "navbar" | "footer" | "sidebar" | undefined;
        maxWidth?: "max-w-screen-lg" | "max-w-screen-xl" | "max-w-screen-2xl" | "max-w-full" | undefined;
        verticalMargin?: string | undefined;
        justifyContent?: "justify-start" | "justify-center" | "justify-end" | "justify-between" | "justify-around" | "justify-evenly" | undefined;
        alignItems?: "items-start" | "items-center" | "items-end" | "items-stretch" | undefined;
        padding?: string | undefined;
        gap?: string | undefined;
        wrap?: boolean | undefined;
        lastTouched?: number | undefined;
    };
    order: number;
    bricks: {
        label?: string | undefined;
        mobileProps?: any;
        id: string;
        type: string;
        props: any;
    }[];
} | undefined;
export declare const usePageAttributes: () => {
    ogImage?: {
        alt?: string | undefined;
        aspectRatio?: "auto" | "1:1" | "4:3" | "3:4" | "16:9" | "9:16" | "2:3" | "3:2" | "5:4" | "4:5" | "21:9" | "9:21" | "original" | undefined;
        fit?: "object-none" | "object-contain" | "object-cover" | "object-fill" | "object-scale-down" | undefined;
        position?: "object-top" | "object-center" | "object-bottom" | "object-left" | "object-right" | "object-top-left" | "object-top-right" | "object-bottom-left" | "object-bottom-right" | undefined;
        src: string;
    } | undefined;
    robotsIndexing?: boolean | undefined;
    language?: "ar" | "zh" | "cs" | "nl" | "en" | "fr" | "de" | "he" | "hi" | "it" | "ja" | "ko" | "fa" | "pl" | "pt" | "ru" | "es" | "tr" | "vi" | undefined;
    additionalTags?: {
        headTags?: string | undefined;
        bodyTags?: string | undefined;
    } | undefined;
    isInitialPage?: boolean | undefined;
    description: string;
    tags: string[];
    path: string;
    layout: string;
    title: string;
    keywords: string;
};
export declare const useSiteAttributes: () => {
    ogImage?: {
        alt?: string | undefined;
        aspectRatio?: "auto" | "1:1" | "4:3" | "3:4" | "16:9" | "9:16" | "2:3" | "3:2" | "5:4" | "4:5" | "21:9" | "9:21" | "original" | undefined;
        fit?: "object-none" | "object-contain" | "object-cover" | "object-fill" | "object-scale-down" | undefined;
        position?: "object-top" | "object-center" | "object-bottom" | "object-left" | "object-right" | "object-top-left" | "object-top-right" | "object-bottom-left" | "object-bottom-right" | undefined;
        src: string;
    } | undefined;
    robotsIndexing?: boolean | undefined;
    headTags?: string | undefined;
    bodyTags?: string | undefined;
    label: string;
    language: "ar" | "zh" | "cs" | "nl" | "en" | "fr" | "de" | "he" | "hi" | "it" | "ja" | "ko" | "fa" | "pl" | "pt" | "ru" | "es" | "tr" | "vi";
    themeId: string;
};
/**
 * return all available data
 */
export declare const useData: (editable?: boolean) => Record<string, Record<string, unknown>[]>;
export declare const useLoopedQuery: (loopAlias?: string) => {
    sort?: ("random()" | "match()" | {
        direction: "asc" | "desc";
        field: string;
    })[] | undefined;
    parameters?: {
        fields: ({
            field: string;
            op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
            value: string;
        } | {
            field: string;
            op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
            value: number;
        } | {
            field: string;
            op: "before" | "after";
            value: string;
        } | {
            field: string;
            op: "beforeNow" | "afterNow";
            value: null;
        } | {
            field: string;
            op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
            value: string[];
        } | {
            field: string;
            op: "eq";
            value: boolean;
        } | {
            fields: ({
                fields: any[];
                op: "and";
            } | {
                fields: any[];
                op: "or";
            } | {
                field: string;
                op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
                value: string;
            } | {
                field: string;
                op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
                value: number;
            } | {
                field: string;
                op: "before" | "after";
                value: string;
            } | {
                field: string;
                op: "beforeNow" | "afterNow";
                value: null;
            } | {
                field: string;
                op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
                value: string[];
            } | {
                field: string;
                op: "eq";
                value: boolean;
            })[];
            op: "and";
        } | {
            fields: ({
                field: string;
                op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
                value: string;
            } | {
                field: string;
                op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
                value: number;
            } | {
                field: string;
                op: "before" | "after";
                value: string;
            } | {
                field: string;
                op: "beforeNow" | "afterNow";
                value: null;
            } | {
                field: string;
                op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
                value: string[];
            } | {
                field: string;
                op: "eq";
                value: boolean;
            } | {
                fields: any[];
                op: "and";
            } | {
                fields: any[];
                op: "or";
            })[];
            op: "or";
        })[];
        op: "and";
    } | {
        fields: ({
            fields: ({
                fields: any[];
                op: "and";
            } | {
                fields: any[];
                op: "or";
            } | {
                field: string;
                op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
                value: string;
            } | {
                field: string;
                op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
                value: number;
            } | {
                field: string;
                op: "before" | "after";
                value: string;
            } | {
                field: string;
                op: "beforeNow" | "afterNow";
                value: null;
            } | {
                field: string;
                op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
                value: string[];
            } | {
                field: string;
                op: "eq";
                value: boolean;
            })[];
            op: "and";
        } | {
            fields: ({
                field: string;
                op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
                value: string;
            } | {
                field: string;
                op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
                value: number;
            } | {
                field: string;
                op: "before" | "after";
                value: string;
            } | {
                field: string;
                op: "beforeNow" | "afterNow";
                value: null;
            } | {
                field: string;
                op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
                value: string[];
            } | {
                field: string;
                op: "eq";
                value: boolean;
            } | {
                fields: any[];
                op: "and";
            } | {
                fields: any[];
                op: "or";
            })[];
            op: "or";
        } | {
            field: string;
            op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
            value: string;
        } | {
            field: string;
            op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
            value: number;
        } | {
            field: string;
            op: "before" | "after";
            value: string;
        } | {
            field: string;
            op: "beforeNow" | "afterNow";
            value: null;
        } | {
            field: string;
            op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
            value: string[];
        } | {
            field: string;
            op: "eq";
            value: boolean;
        })[];
        op: "or";
    } | undefined;
    label: string;
    alias: string;
    datasourceId: string;
    limit: number;
} | null;
export declare const useQuery: (alias?: string) => {
    sort?: ("random()" | "match()" | {
        direction: "asc" | "desc";
        field: string;
    })[] | undefined;
    parameters?: {
        fields: ({
            field: string;
            op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
            value: string;
        } | {
            field: string;
            op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
            value: number;
        } | {
            field: string;
            op: "before" | "after";
            value: string;
        } | {
            field: string;
            op: "beforeNow" | "afterNow";
            value: null;
        } | {
            field: string;
            op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
            value: string[];
        } | {
            field: string;
            op: "eq";
            value: boolean;
        } | {
            fields: ({
                fields: any[];
                op: "and";
            } | {
                fields: any[];
                op: "or";
            } | {
                field: string;
                op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
                value: string;
            } | {
                field: string;
                op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
                value: number;
            } | {
                field: string;
                op: "before" | "after";
                value: string;
            } | {
                field: string;
                op: "beforeNow" | "afterNow";
                value: null;
            } | {
                field: string;
                op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
                value: string[];
            } | {
                field: string;
                op: "eq";
                value: boolean;
            })[];
            op: "and";
        } | {
            fields: ({
                field: string;
                op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
                value: string;
            } | {
                field: string;
                op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
                value: number;
            } | {
                field: string;
                op: "before" | "after";
                value: string;
            } | {
                field: string;
                op: "beforeNow" | "afterNow";
                value: null;
            } | {
                field: string;
                op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
                value: string[];
            } | {
                field: string;
                op: "eq";
                value: boolean;
            } | {
                fields: any[];
                op: "and";
            } | {
                fields: any[];
                op: "or";
            })[];
            op: "or";
        })[];
        op: "and";
    } | {
        fields: ({
            fields: ({
                fields: any[];
                op: "and";
            } | {
                fields: any[];
                op: "or";
            } | {
                field: string;
                op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
                value: string;
            } | {
                field: string;
                op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
                value: number;
            } | {
                field: string;
                op: "before" | "after";
                value: string;
            } | {
                field: string;
                op: "beforeNow" | "afterNow";
                value: null;
            } | {
                field: string;
                op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
                value: string[];
            } | {
                field: string;
                op: "eq";
                value: boolean;
            })[];
            op: "and";
        } | {
            fields: ({
                field: string;
                op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
                value: string;
            } | {
                field: string;
                op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
                value: number;
            } | {
                field: string;
                op: "before" | "after";
                value: string;
            } | {
                field: string;
                op: "beforeNow" | "afterNow";
                value: null;
            } | {
                field: string;
                op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
                value: string[];
            } | {
                field: string;
                op: "eq";
                value: boolean;
            } | {
                fields: any[];
                op: "and";
            } | {
                fields: any[];
                op: "or";
            })[];
            op: "or";
        } | {
            field: string;
            op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
            value: string;
        } | {
            field: string;
            op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
            value: number;
        } | {
            field: string;
            op: "before" | "after";
            value: string;
        } | {
            field: string;
            op: "beforeNow" | "afterNow";
            value: null;
        } | {
            field: string;
            op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
            value: string[];
        } | {
            field: string;
            op: "eq";
            value: boolean;
        })[];
        op: "or";
    } | undefined;
    label: string;
    alias: string;
    datasourceId: string;
    limit: number;
} | null;
/**
 * If the brick is looping or one of its parent is looping, this hook will return the query alias used to loop on.
 * Otherwise, it will return null.
 */
export declare function useLoopAlias(brickId: string): string | null;
export declare const useQueries: () => {
    sort?: ("random()" | "match()" | {
        direction: "asc" | "desc";
        field: string;
    })[] | undefined;
    parameters?: {
        fields: ({
            field: string;
            op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
            value: string;
        } | {
            field: string;
            op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
            value: number;
        } | {
            field: string;
            op: "before" | "after";
            value: string;
        } | {
            field: string;
            op: "beforeNow" | "afterNow";
            value: null;
        } | {
            field: string;
            op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
            value: string[];
        } | {
            field: string;
            op: "eq";
            value: boolean;
        } | {
            fields: ({
                fields: any[];
                op: "and";
            } | {
                fields: any[];
                op: "or";
            } | {
                field: string;
                op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
                value: string;
            } | {
                field: string;
                op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
                value: number;
            } | {
                field: string;
                op: "before" | "after";
                value: string;
            } | {
                field: string;
                op: "beforeNow" | "afterNow";
                value: null;
            } | {
                field: string;
                op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
                value: string[];
            } | {
                field: string;
                op: "eq";
                value: boolean;
            })[];
            op: "and";
        } | {
            fields: ({
                field: string;
                op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
                value: string;
            } | {
                field: string;
                op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
                value: number;
            } | {
                field: string;
                op: "before" | "after";
                value: string;
            } | {
                field: string;
                op: "beforeNow" | "afterNow";
                value: null;
            } | {
                field: string;
                op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
                value: string[];
            } | {
                field: string;
                op: "eq";
                value: boolean;
            } | {
                fields: any[];
                op: "and";
            } | {
                fields: any[];
                op: "or";
            })[];
            op: "or";
        })[];
        op: "and";
    } | {
        fields: ({
            fields: ({
                fields: any[];
                op: "and";
            } | {
                fields: any[];
                op: "or";
            } | {
                field: string;
                op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
                value: string;
            } | {
                field: string;
                op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
                value: number;
            } | {
                field: string;
                op: "before" | "after";
                value: string;
            } | {
                field: string;
                op: "beforeNow" | "afterNow";
                value: null;
            } | {
                field: string;
                op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
                value: string[];
            } | {
                field: string;
                op: "eq";
                value: boolean;
            })[];
            op: "and";
        } | {
            fields: ({
                field: string;
                op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
                value: string;
            } | {
                field: string;
                op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
                value: number;
            } | {
                field: string;
                op: "before" | "after";
                value: string;
            } | {
                field: string;
                op: "beforeNow" | "afterNow";
                value: null;
            } | {
                field: string;
                op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
                value: string[];
            } | {
                field: string;
                op: "eq";
                value: boolean;
            } | {
                fields: any[];
                op: "and";
            } | {
                fields: any[];
                op: "or";
            })[];
            op: "or";
        } | {
            field: string;
            op: "match" | "endsWith" | "startsWith" | "eq" | "ne" | "contains" | "notContains" | "notStartsWith" | "notEndsWith";
            value: string;
        } | {
            field: string;
            op: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
            value: number;
        } | {
            field: string;
            op: "before" | "after";
            value: string;
        } | {
            field: string;
            op: "beforeNow" | "afterNow";
            value: null;
        } | {
            field: string;
            op: "contains" | "notContains" | "containsAll" | "containsAny" | "notContainsAny";
            value: string[];
        } | {
            field: string;
            op: "eq";
            value: boolean;
        })[];
        op: "or";
    } | undefined;
    label: string;
    alias: string;
    datasourceId: string;
    limit: number;
}[];
export declare const useDraftHelpers: () => {
    addAdditionalAssets: (assets: ImageSearchResultsType) => void;
    deleteBrick: (id: string) => void;
    detachBrickFromContainer: (id: string) => void;
    updateSiteAttributes: (attr: Partial<SiteAttributes>) => void;
    updatePageAttributes: (attr: Partial<PageAttributes>) => void;
    updatePage: (pageData: Partial<VersionedPage>) => void;
    upsertQuery: (query: Query) => void;
    setSections: (sections: Section[]) => void;
    addThemes: (themes: Theme[]) => void;
    setTheme: (theme: Theme) => void;
    pickTheme: (themeId: Theme["id"]) => void;
    setSitemap: (sitemap: Site["sitemap"]) => void;
    addPage: (page: VersionedPage) => void;
    registerPageInSitemap: (page: VersionedPage) => void;
    addDatasource: (datasource: Datasource) => void;
    addDatarecord: (datarecord: Datarecord) => void;
    duplicateBrick: (id: string) => void;
    addBrick: (brick: Brick, sectiondId: string, index: number, parentContainerId?: Brick["id"] | null) => void;
    getBrick: (id: string) => Brick | undefined;
    validatePreviewTheme: (accept: boolean) => void;
    duplicateSection: (id: string) => void;
    toggleBrickVisibilityPerBreakpoint: (id: string, resolution: Resolution) => void;
    getParentBrick: (id: string) => Brick | undefined;
    updateBrickProps: (id: string, props: Record<string, unknown>, isMobileProps?: boolean) => void;
    moveBrick: (id: string, to: "previous" | "next") => void;
    reorderBrickWithin: (brickId: string, toIndex: number) => void;
    getPositionWithinParent: (brickId: Brick["id"]) => number | undefined;
    canMoveTo: (brickId: Brick["id"], to: "previous" | "next") => boolean;
    moveBrickToContainerBrick: (id: string, parentId: string, index: number) => void;
    moveBrickToSection: (id: string, sectionId: string | null, index?: number) => void;
    deleteSection: (id: string) => void;
    moveSectionUp: (sectionId: string) => void;
    moveSectionDown: (sectionId: string) => void;
    reorderSections: (orderedIds: string[]) => void;
    updateSection: (id: string, sectionData: Partial<Section>, override?: boolean) => void;
    updateSectionProps: (id: string, props: Partial<Section["props"]>, isMobileProps?: boolean) => void;
    addSection: (section: Section) => void;
    createEmptySection: (id: string, afterSectionId?: string) => void;
    isFirstSection: (sectionId: string) => boolean;
    isLastSection: (sectionId: string) => boolean;
    setSitePrompt: (prompt: string) => void;
    setSiteLabel: (label: string) => void;
};
export declare const usePage: () => {
    id: string;
    label: string;
    attributes: {
        ogImage?: {
            alt?: string | undefined;
            aspectRatio?: "auto" | "1:1" | "4:3" | "3:4" | "16:9" | "9:16" | "2:3" | "3:2" | "5:4" | "4:5" | "21:9" | "9:21" | "original" | undefined;
            fit?: "object-none" | "object-contain" | "object-cover" | "object-fill" | "object-scale-down" | undefined;
            position?: "object-top" | "object-center" | "object-bottom" | "object-left" | "object-right" | "object-top-left" | "object-top-right" | "object-bottom-left" | "object-bottom-right" | undefined;
            src: string;
        } | undefined;
        robotsIndexing?: boolean | undefined;
        language?: "ar" | "zh" | "cs" | "nl" | "en" | "fr" | "de" | "he" | "hi" | "it" | "ja" | "ko" | "fa" | "pl" | "pt" | "ru" | "es" | "tr" | "vi" | undefined;
        additionalTags?: {
            headTags?: string | undefined;
            bodyTags?: string | undefined;
        } | undefined;
        isInitialPage?: boolean | undefined;
        description: string;
        tags: string[];
        path: string;
        layout: string;
        title: string;
        keywords: string;
    };
    sections: {
        mobileProps?: {
            colorPreset?: {
                gradientDirection?: string | undefined;
                color: string;
            } | undefined;
            backgroundImage?: {
                repeat?: "repeat" | "no-repeat" | "repeat-x" | "repeat-y" | "space" | "round" | undefined;
                size?: "auto" | "cover" | "contain" | undefined;
                image: string;
            } | undefined;
            direction?: "flex-row" | "flex-col" | undefined;
            minHeight?: string | undefined;
            variant?: "navbar" | "footer" | "sidebar" | undefined;
            maxWidth?: "max-w-screen-lg" | "max-w-screen-xl" | "max-w-screen-2xl" | "max-w-full" | undefined;
            verticalMargin?: string | undefined;
            justifyContent?: "justify-start" | "justify-center" | "justify-end" | "justify-between" | "justify-around" | "justify-evenly" | undefined;
            alignItems?: "items-start" | "items-center" | "items-end" | "items-stretch" | undefined;
            padding?: string | undefined;
            gap?: string | undefined;
            wrap?: boolean | undefined;
            lastTouched?: number | undefined;
        } | undefined;
        id: string;
        label: string;
        props: {
            colorPreset?: {
                gradientDirection?: string | undefined;
                color: string;
            } | undefined;
            backgroundImage?: {
                repeat?: "repeat" | "no-repeat" | "repeat-x" | "repeat-y" | "space" | "round" | undefined;
                size?: "auto" | "cover" | "contain" | undefined;
                image: string;
            } | undefined;
            direction?: "flex-row" | "flex-col" | undefined;
            minHeight?: string | undefined;
            variant?: "navbar" | "footer" | "sidebar" | undefined;
            maxWidth?: "max-w-screen-lg" | "max-w-screen-xl" | "max-w-screen-2xl" | "max-w-full" | undefined;
            verticalMargin?: string | undefined;
            justifyContent?: "justify-start" | "justify-center" | "justify-end" | "justify-between" | "justify-around" | "justify-evenly" | undefined;
            alignItems?: "items-start" | "items-center" | "items-end" | "items-stretch" | undefined;
            padding?: string | undefined;
            gap?: string | undefined;
            wrap?: boolean | undefined;
            lastTouched?: number | undefined;
        };
        order: number;
        bricks: {
            label?: string | undefined;
            mobileProps?: any;
            id: string;
            type: string;
            props: any;
        }[];
    }[];
    version: string;
};
export declare const useSite: () => {
    id: string;
    label: string;
    hostname: string;
    attributes: {
        ogImage?: {
            alt?: string | undefined;
            aspectRatio?: "auto" | "1:1" | "4:3" | "3:4" | "16:9" | "9:16" | "2:3" | "3:2" | "5:4" | "4:5" | "21:9" | "9:21" | "original" | undefined;
            fit?: "object-none" | "object-contain" | "object-cover" | "object-fill" | "object-scale-down" | undefined;
            position?: "object-top" | "object-center" | "object-bottom" | "object-left" | "object-right" | "object-top-left" | "object-top-right" | "object-bottom-left" | "object-bottom-right" | undefined;
            src: string;
        } | undefined;
        robotsIndexing?: boolean | undefined;
        headTags?: string | undefined;
        bodyTags?: string | undefined;
        label: string;
        language: "ar" | "zh" | "cs" | "nl" | "en" | "fr" | "de" | "he" | "hi" | "it" | "ja" | "ko" | "fa" | "pl" | "pt" | "ru" | "es" | "tr" | "vi";
        themeId: string;
    };
    datasources: {
        foreignKeys?: {
            field: string;
            foreignDatasourceId: string;
            foreignField: string;
        }[] | undefined;
        id: string;
        label: string;
        provider: "internal";
        schema: any;
        indexes: {
            unique?: boolean | undefined;
            fulltext?: boolean | undefined;
            name: string;
            fields: string[];
        }[];
    }[];
    datarecords: ({
        description?: string | undefined;
        id: string;
        label: string;
        provider: "airtable";
        schema: object;
        options: {
            fields?: {
                id: string;
                name: string;
                type: string;
            }[] | undefined;
            externalUrl?: string | undefined;
            baseName?: string | undefined;
            tableName?: string | undefined;
            baseId: string;
            tableId: string;
        };
    } | {
        description?: string | undefined;
        id: string;
        label: string;
        provider: "google-sheets";
        schema: object;
        options: {
            externalUrl?: string | undefined;
            spreadsheetUrl?: string | undefined;
            spreadsheetName?: string | undefined;
            spreadsheetId: string;
        };
    } | {
        description?: string | undefined;
        id: string;
        label: string;
        provider: "notion";
        schema: object;
        options: {
            url?: string | undefined;
            id: string;
            name: string;
            properties: any;
        };
    } | {
        description?: string | undefined;
        id: string;
        label: string;
        provider: "internal";
        schema: object;
    })[];
    themes: {
        id: string;
        name: string;
        description: string;
        tags: string[];
        browserColorScheme: "light" | "dark";
        colors: {
            primary: string;
            secondary: string;
            accent: string;
            neutral: string;
            info: string;
            success: string;
            warning: string;
            error: string;
            base100: string;
            base200: string;
            base300: string;
        };
        typography: {
            base: number;
            heading: {
                type: "stack";
                family: string;
            } | {
                type: "theme";
                family: string;
            } | {
                type: "google";
                family: string;
            };
            body: {
                type: "stack";
                family: string;
            } | {
                type: "theme";
                family: string;
            } | {
                type: "google";
                family: string;
            };
            alternatives: {
                heading: {
                    type: "stack";
                    family: string;
                } | {
                    type: "theme";
                    family: string;
                } | {
                    type: "google";
                    family: string;
                };
                body: {
                    type: "stack";
                    family: string;
                } | {
                    type: "theme";
                    family: string;
                } | {
                    type: "google";
                    family: string;
                };
            }[];
        };
    }[];
    theme: {
        id: string;
        name: string;
        description: string;
        tags: string[];
        browserColorScheme: "light" | "dark";
        colors: {
            primary: string;
            secondary: string;
            accent: string;
            neutral: string;
            info: string;
            success: string;
            warning: string;
            error: string;
            base100: string;
            base200: string;
            base300: string;
        };
        typography: {
            base: number;
            heading: {
                type: "stack";
                family: string;
            } | {
                type: "theme";
                family: string;
            } | {
                type: "google";
                family: string;
            };
            body: {
                type: "stack";
                family: string;
            } | {
                type: "theme";
                family: string;
            } | {
                type: "google";
                family: string;
            };
            alternatives: {
                heading: {
                    type: "stack";
                    family: string;
                } | {
                    type: "theme";
                    family: string;
                } | {
                    type: "google";
                    family: string;
                };
                body: {
                    type: "stack";
                    family: string;
                } | {
                    type: "theme";
                    family: string;
                } | {
                    type: "google";
                    family: string;
                };
            }[];
        };
    };
    sitemap: {
        isInitialPage?: boolean | undefined;
        status?: "draft" | "published" | undefined;
        id: string;
        label: string;
        tags: string[];
        path: string;
    }[];
    sitePrompt: string;
};
export declare const useTheme: () => {
    id: string;
    name: string;
    description: string;
    tags: string[];
    browserColorScheme: "light" | "dark";
    colors: {
        primary: string;
        secondary: string;
        accent: string;
        neutral: string;
        info: string;
        success: string;
        warning: string;
        error: string;
        base100: string;
        base200: string;
        base300: string;
    };
    typography: {
        base: number;
        heading: {
            type: "stack";
            family: string;
        } | {
            type: "theme";
            family: string;
        } | {
            type: "google";
            family: string;
        };
        body: {
            type: "stack";
            family: string;
        } | {
            type: "theme";
            family: string;
        } | {
            type: "google";
            family: string;
        };
        alternatives: {
            heading: {
                type: "stack";
                family: string;
            } | {
                type: "theme";
                family: string;
            } | {
                type: "google";
                family: string;
            };
            body: {
                type: "stack";
                family: string;
            } | {
                type: "theme";
                family: string;
            } | {
                type: "google";
                family: string;
            };
        }[];
    };
};
export declare const usePreviewTheme: () => {
    id: string;
    name: string;
    description: string;
    tags: string[];
    browserColorScheme: "light" | "dark";
    colors: {
        primary: string;
        secondary: string;
        accent: string;
        neutral: string;
        info: string;
        success: string;
        warning: string;
        error: string;
        base100: string;
        base200: string;
        base300: string;
    };
    typography: {
        base: number;
        heading: {
            type: "stack";
            family: string;
        } | {
            type: "theme";
            family: string;
        } | {
            type: "google";
            family: string;
        };
        body: {
            type: "stack";
            family: string;
        } | {
            type: "theme";
            family: string;
        } | {
            type: "google";
            family: string;
        };
        alternatives: {
            heading: {
                type: "stack";
                family: string;
            } | {
                type: "theme";
                family: string;
            } | {
                type: "google";
                family: string;
            };
            body: {
                type: "stack";
                family: string;
            } | {
                type: "theme";
                family: string;
            } | {
                type: "google";
                family: string;
            };
        }[];
    };
} | undefined;
export declare const useSectionsSubscribe: (callback: (sections: DraftState["page"]["sections"]) => void) => void;
export declare const usePageLabelSubscribe: (callback: (label: DraftState["page"]["label"]) => void) => void;
export declare const useSiteLabelSubscribe: (callback: (label: DraftState["site"]["label"]) => void) => void;
export declare function useDatasourcesSubscribe(callback: (datasources: DraftState["site"]["datasources"]) => void): void;
export declare function useDatarecordsSubscribe(callback: (datarecords: DraftState["site"]["datarecords"]) => void): void;
export declare const usePageAttributesSubscribe: (callback: (attr: DraftState["page"]["attributes"]) => void) => void;
export declare const useSiteAttributesSubscribe: (callback: (attr: DraftState["site"]["attributes"]) => void) => void;
export declare const useSitemapSubscribe: (callback: (sitemap: DraftState["site"]["sitemap"]) => void) => void;
export declare const useThemeSubscribe: (callback: (theme: DraftState["site"]["theme"]) => void) => void;
export declare const useThemesSubscribe: (callback: (themes: DraftState["site"]["themes"]) => void) => void;
export declare const usePagePathParams: () => string[];
export declare const useAdditionalAssets: () => {
    blurHash?: string | undefined;
    author?: {
        name: string;
        profileUrl: string;
    } | undefined;
    id: string;
    description: string;
    provider: string;
    url: string;
}[];
export declare const useSitePrompt: () => string;
//# sourceMappingURL=use-page-data.d.ts.map