import { Attributes } from '@upstart.gg/sdk/shared/attributes';
import { Brick, Section } from '@upstart.gg/sdk/shared/bricks';
import { ImageSearchResultsType } from '@upstart.gg/sdk/shared/images';
import { GenericPageConfig, GenericPageContext } from '@upstart.gg/sdk/shared/page';
import { SitePrompt } from '@upstart.gg/sdk/shared/prompt';
import { Resolution } from '@upstart.gg/sdk/shared/responsive';
import { Site, SiteAndPagesConfig } from '@upstart.gg/sdk/shared/site';
import { Theme } from '@upstart.gg/sdk/shared/theme';
export type { Immer } from 'immer';
type ValueOfObj<T> = T[keyof T];
export type PagePublishPayload = {
    siteId: string;
    mode: "publish-page";
    pageId: string;
    pageVersionId: string;
    schedulePublishedAt?: string | null;
} | {
    siteId: string;
    mode: "publish-site";
};
export type PageSavePayload = {
    siteId: string;
    pageId: string;
    pageVersionId: string;
    data: Partial<GenericPageConfig>;
};
export type SiteSavePayload = {
    siteId: string;
    data: Partial<Site>;
};
export interface EditorStateProps {
    /**
     * When local, the editor does not fetch data from the server or save data to the server
     * It is used when the user is not logged in yet or does not have an account yet
     */
    mode: "anonymous" | "authenticated";
    /**
     * When debugMode is enabled, context menu are disabled so that inspecting using devtools is easier
     */
    debugMode?: boolean;
    /**
     * When true, disable the editor and renders the page as it would be rendered in production using non-editable components
     */
    disabled?: boolean;
    zoom: number;
    /**
     * 0 = free
     * 1 = essentials
     * 2 = pro
     * ...
     */
    planIndex: number;
    sitePrompt: SitePrompt;
    previewMode: Resolution;
    gridConfig?: {
        colWidth: number;
        rowHeight: number;
    };
    textEditMode?: "default" | "large";
    lastTextEditPosition?: number;
    settingsVisible?: boolean;
    genFlowDone?: boolean;
    selectedBrickId?: Brick["id"];
    selectedGroup?: Brick["id"][];
    selectedSectionId?: string;
    isEditingTextForBrickId?: string;
    panel?: "library" | "inspector" | "theme" | "settings" | "data";
    modal?: "image-search" | "datasources";
    panelPosition: "left" | "right";
    chatVisible: boolean;
    logoLink: string;
    themesLibrary: Theme[];
    imagesSearchResults?: ImageSearchResultsType;
    contextMenuVisible: boolean;
    draggingBrickType?: Brick["type"];
    isMouseOverPanel?: boolean;
    onShowPopup?: (id: string | false) => void;
    onPublish: (data: PagePublishPayload) => void;
    /**
     * Returns the updated version id
     */
    onSavePage?: (page: PageSavePayload) => Promise<{
        pageVersionId: string;
    }>;
    onSaveSite?: (site: SiteSavePayload) => Promise<void>;
    onDraftChange?: (draft: DraftState, siteAndPages: SiteAndPagesConfig) => Promise<void>;
}
export interface EditorState extends EditorStateProps {
    setPreviewMode: (mode: Resolution) => void;
    setSettingsVisible: (visible: boolean) => void;
    toggleSettings: () => void;
    toggleTextEditMode: () => void;
    setContextMenuVisible: (open: boolean) => void;
    toggleEditorEnabled: () => void;
    setGridConfig: (config: EditorStateProps["gridConfig"]) => void;
    setTextEditMode: (mode: EditorStateProps["textEditMode"]) => void;
    setIsEditingText: (forBrickId: string | false) => void;
    setLastTextEditPosition: (position?: number) => void;
    setPanel: (panel?: EditorStateProps["panel"]) => void;
    togglePanel: (panel?: EditorStateProps["panel"]) => void;
    hidePanel: (panel?: EditorStateProps["panel"]) => void;
    setSelectedGroup: (group?: Brick["id"][]) => void;
    setSelectedBrickId: (brickId?: Brick["id"]) => void;
    setSelectedSectionId: (sectionId?: string) => void;
    deselectBrick: (brickId?: Brick["id"]) => void;
    setImagesSearchResults: (images: EditorStateProps["imagesSearchResults"]) => void;
    togglePanelPosition: () => void;
    toggleDebugMode: () => void;
    showModal: (modal: EditorStateProps["modal"]) => void;
    hideModal: () => void;
    toggleChat: () => void;
    zoomIn: () => void;
    zoomOut: () => void;
    resetZoom: () => void;
    setDraggingBrickType: (type: Brick["type"] | null) => void;
    setMouseOverPanel: (over: boolean) => void;
}
export declare const createEditorStore: (initProps: Partial<EditorStateProps>) => Omit<Omit<Omit<Omit<import('zustand').StoreApi<EditorState>, "subscribe"> & {
    subscribe: {
        (listener: (selectedState: EditorState, previousSelectedState: EditorState) => void): () => void;
        <U>(selector: (state: EditorState) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
            equalityFn?: ((a: U, b: U) => boolean) | undefined;
            fireImmediately?: boolean;
        } | undefined): () => void;
    };
}, "persist"> & {
    persist: {
        setOptions: (options: Partial<import('zustand/middleware').PersistOptions<EditorState, {
            [k: string]: any;
        }>>) => void;
        clearStorage: () => void;
        rehydrate: () => Promise<void> | void;
        hasHydrated: () => boolean;
        onHydrate: (fn: (state: EditorState) => void) => () => void;
        onFinishHydration: (fn: (state: EditorState) => void) => () => void;
        getOptions: () => Partial<import('zustand/middleware').PersistOptions<EditorState, {
            [k: string]: any;
        }>>;
    };
}, "temporal"> & {
    temporal: import('zustand').StoreApi<import('zundo').TemporalState<EditorState>>;
}, "setState"> & {
    setState(nextStateOrUpdater: EditorState | Partial<EditorState> | ((state: import('immer').WritableDraft<EditorState>) => void), shouldReplace?: boolean | undefined): void;
};
export interface DraftStateProps {
    id: string;
    path: string;
    label: string;
    sections: Section[];
    data: Record<string, unknown>;
    datasources?: Site["datasources"];
    datarecords?: Site["datarecords"];
    /**
     * Site attributes key/value pairs
     */
    siteAttr: Site["attr"];
    /**
     * Site attributes schema
     */
    siteAttributes: Site["attributes"];
    /**
     * Page attributes key/value pairs
     */
    attr: GenericPageContext["attr"];
    /**
     * Page attributes schema
     */
    attributes: GenericPageConfig["attributes"];
    theme: Theme;
    previewTheme?: Theme;
    themes: Theme[];
    siteId: Site["id"];
    siteLabel: Site["label"];
    sitemap: Site["sitemap"];
    hostname: Site["hostname"];
    version?: string;
    lastSaved?: Date;
    dirty?: boolean;
    lastLoaded?: Date;
    brickMap: Map<string, {
        brick: Brick;
        sectionId: string;
        parentId: string | null;
    }>;
    pages: GenericPageConfig[];
}
export interface DraftState extends DraftStateProps {
    getBrick: (id: string) => Brick | undefined;
    getParentBrick: (id: string) => Brick | undefined;
    deleteBrick: (id: string) => void;
    getPageDataForDuplication: () => Pick<DraftStateProps, "id" | "label" | "path" | "sections" | "attr" | "attributes" | "datasources" | "datarecords">;
    duplicateBrick: (id: string) => void;
    duplicateSection: (id: string) => void;
    moveBrickWithin: (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;
    addBrick: (brick: Brick, sectiondId: string, index: number, parentContainerId: Brick["id"] | null) => void;
    updateBrick: (id: string, brick: Partial<Brick>) => 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;
    setThemes: (themes: Theme[]) => void;
    validatePreviewTheme: (accept: boolean) => void;
    cancelPreviewTheme: () => void;
    updateAttributes: (attr: Partial<Attributes>) => void;
    setLastSaved: (date: Date) => void;
    setDirty: (dirty: boolean) => void;
    setLastLoaded: () => void;
    setVersion(version: string): void;
    adjustMobileLayout(): void;
    addPage: (page: GenericPageConfig) => void;
    addDatasource: (datasource: ValueOfObj<NonNullable<Site["datasources"]>>) => void;
    addDatarecord: (datarecord: ValueOfObj<NonNullable<Site["datarecords"]>>) => void;
    setSitemap(sitemap: Site["sitemap"]): void;
    getPositionWithinParent: (brickId: Brick["id"]) => number | undefined;
    canMoveToWithinParent: (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>) => void;
    updateSectionProps: (id: string, props: Partial<Section["props"]>, isMobileProps?: boolean) => void;
    deleteSection: (id: string) => void;
    getSection: (id: string) => Section | undefined;
    setSections: (sections: Section[]) => void;
}
/**
 * Create a draft store with initial props
 *
 * Note: `data` is optional but `attr` is always provided
 */
export declare const createDraftStore: (initProps: Partial<DraftStateProps> & {
    id: DraftStateProps["id"];
    version: DraftStateProps["version"];
    path: DraftStateProps["path"];
    label: DraftStateProps["label"];
    attr: DraftStateProps["attr"];
    attributes: DraftStateProps["attributes"];
    datasources?: DraftStateProps["datasources"];
    datarecords?: DraftStateProps["datarecords"];
    siteAttr: DraftStateProps["siteAttr"];
    siteAttributes: DraftStateProps["siteAttributes"];
    siteLabel: DraftStateProps["siteLabel"];
    siteId: DraftStateProps["siteId"];
    hostname: DraftStateProps["hostname"];
    sitemap: DraftStateProps["sitemap"];
    theme: DraftStateProps["theme"];
    sections: DraftStateProps["sections"];
}) => 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 EditorStoreContext: import('react').Context<(Omit<Omit<Omit<Omit<import('zustand').StoreApi<EditorState>, "subscribe"> & {
    subscribe: {
        (listener: (selectedState: EditorState, previousSelectedState: EditorState) => void): () => void;
        <U>(selector: (state: EditorState) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
            equalityFn?: ((a: U, b: U) => boolean) | undefined;
            fireImmediately?: boolean;
        } | undefined): () => void;
    };
}, "persist"> & {
    persist: {
        setOptions: (options: Partial<import('zustand/middleware').PersistOptions<EditorState, {
            [k: string]: any;
        }>>) => void;
        clearStorage: () => void;
        rehydrate: () => Promise<void> | void;
        hasHydrated: () => boolean;
        onHydrate: (fn: (state: EditorState) => void) => () => void;
        onFinishHydration: (fn: (state: EditorState) => void) => () => void;
        getOptions: () => Partial<import('zustand/middleware').PersistOptions<EditorState, {
            [k: string]: any;
        }>>;
    };
}, "temporal"> & {
    temporal: import('zustand').StoreApi<import('zundo').TemporalState<EditorState>>;
}, "setState"> & {
    setState(nextStateOrUpdater: EditorState | Partial<EditorState> | ((state: import('immer').WritableDraft<EditorState>) => void), shouldReplace?: boolean | undefined): void;
}) | null>;
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 useEditorStoreContext: () => Omit<Omit<Omit<Omit<import('zustand').StoreApi<EditorState>, "subscribe"> & {
    subscribe: {
        (listener: (selectedState: EditorState, previousSelectedState: EditorState) => void): () => void;
        <U>(selector: (state: EditorState) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
            equalityFn?: ((a: U, b: U) => boolean) | undefined;
            fireImmediately?: boolean;
        } | undefined): () => void;
    };
}, "persist"> & {
    persist: {
        setOptions: (options: Partial<import('zustand/middleware').PersistOptions<EditorState, {
            [k: string]: any;
        }>>) => void;
        clearStorage: () => void;
        rehydrate: () => Promise<void> | void;
        hasHydrated: () => boolean;
        onHydrate: (fn: (state: EditorState) => void) => () => void;
        onFinishHydration: (fn: (state: EditorState) => void) => () => void;
        getOptions: () => Partial<import('zustand/middleware').PersistOptions<EditorState, {
            [k: string]: any;
        }>>;
    };
}, "temporal"> & {
    temporal: import('zustand').StoreApi<import('zundo').TemporalState<EditorState>>;
}, "setState"> & {
    setState(nextStateOrUpdater: EditorState | Partial<EditorState> | ((state: import('immer').WritableDraft<EditorState>) => void), shouldReplace?: boolean | undefined): void;
};
export declare const useDraftStoreContext: () => 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 useEditor: () => EditorState;
export declare const useSitePrompt: () => string;
export declare const useSitemap: () => {
    status?: "draft" | "published" | undefined;
    id: string;
    label: string;
    path: string;
    tags: string[];
    sectionsPlan: {
        id: string;
        name: string;
        description: string;
    }[];
}[];
export declare const usePreviewMode: () => "desktop" | "mobile";
export declare const useGenerationState: () => {
    hasSitemap: boolean;
    hasThemesGenerated: boolean;
    sitemap: {
        status?: "draft" | "published" | undefined;
        id: string;
        label: string;
        path: string;
        tags: string[];
        sectionsPlan: {
            id: string;
            name: string;
            description: string;
        }[];
    }[];
    pages: GenericPageConfig[];
    isReady: boolean;
};
export declare const useEditorEnabled: () => boolean;
export declare const useLogoLink: () => string;
export declare const useSelectedGroup: () => string[] | undefined;
export declare const useSelectedBrickId: () => string | undefined;
export declare function useSelectedSectionId(): string | undefined;
export declare function useSelectedSection(): {
    label?: string | undefined;
    mobileProps?: {
        backgroundColor?: string | undefined;
        gradientDirection?: "bg-gradient-to-t" | "bg-gradient-to-r" | "bg-gradient-to-b" | "bg-gradient-to-l" | "bg-gradient-to-tl" | "bg-gradient-to-tr" | "bg-gradient-to-br" | "bg-gradient-to-bl" | undefined;
        minHeight?: string | undefined;
        purpose?: "navbar" | "sidebar" | undefined;
        maxWidth?: string | undefined;
        justifyContent?: "justify-start" | "justify-center" | "justify-end" | "justify-between" | "justify-around" | "justify-evenly" | undefined;
        alignItems?: "items-start" | "items-center" | "items-end" | undefined;
        gap?: string | undefined;
        lastTouched?: number | undefined;
    } | undefined;
    id: string;
    order: number;
    props: {
        backgroundColor?: string | undefined;
        gradientDirection?: "bg-gradient-to-t" | "bg-gradient-to-r" | "bg-gradient-to-b" | "bg-gradient-to-l" | "bg-gradient-to-tl" | "bg-gradient-to-tr" | "bg-gradient-to-br" | "bg-gradient-to-bl" | undefined;
        minHeight?: string | undefined;
        purpose?: "navbar" | "sidebar" | undefined;
        maxWidth?: string | undefined;
        justifyContent?: "justify-start" | "justify-center" | "justify-end" | "justify-between" | "justify-around" | "justify-evenly" | undefined;
        alignItems?: "items-start" | "items-center" | "items-end" | undefined;
        gap?: string | undefined;
        lastTouched?: number | undefined;
    };
    bricks: {
        mobileProps?: {} | undefined;
        id: string;
        type: string;
        props: any;
    }[];
} | null;
export declare const useDebugMode: () => boolean;
export declare const usePanel: () => {
    panel: "theme" | "library" | "inspector" | "settings" | "data" | undefined;
    panelPosition: "left" | "right";
};
export declare const useIsPremiumPlan: () => boolean;
export declare function useHasPlanOrHigher(plan: number): boolean;
export declare const useEditorMode: () => "anonymous" | "authenticated";
export declare const useSiteAndPages: () => {
    site: {
        sitePrompt: string;
        id: string;
        label: string;
        sitemap: {
            status?: "draft" | "published" | undefined;
            id: string;
            label: string;
            path: string;
            tags: string[];
            sectionsPlan: {
                id: string;
                name: string;
                description: string;
            }[];
        }[];
        attr: Attributes;
        theme: {
            id: string;
            name: string;
            description: string;
            tags: string[];
            browserColorScheme: string;
            colors: {
                primary: string;
                primaryContent: string;
                secondary: string;
                secondaryContent: string;
                accent: string;
                accentContent: string;
                neutral: string;
                neutralContent: string;
                base100: string;
                base200: string;
                base300: string;
                baseContent: string;
            };
            typography: {
                base: number;
                heading: {
                    type: "theme" | "stack" | "google";
                    family: string;
                };
                body: {
                    type: "theme" | "stack" | "google";
                    family: string;
                };
                alternatives: {
                    heading: {
                        type: "theme" | "stack" | "google";
                        family: string;
                    };
                    body: {
                        type: "theme" | "stack" | "google";
                        family: string;
                    };
                }[];
            };
        };
        themes: {
            id: string;
            name: string;
            description: string;
            tags: string[];
            browserColorScheme: string;
            colors: {
                primary: string;
                primaryContent: string;
                secondary: string;
                secondaryContent: string;
                accent: string;
                accentContent: string;
                neutral: string;
                neutralContent: string;
                base100: string;
                base200: string;
                base300: string;
                baseContent: string;
            };
            typography: {
                base: number;
                heading: {
                    type: "theme" | "stack" | "google";
                    family: string;
                };
                body: {
                    type: "theme" | "stack" | "google";
                    family: string;
                };
                alternatives: {
                    heading: {
                        type: "theme" | "stack" | "google";
                        family: string;
                    };
                    body: {
                        type: "theme" | "stack" | "google";
                        family: string;
                    };
                }[];
            };
        }[];
        attributes: import('@upstart.gg/sdk/shared/attributes').AttributesSchema;
        hostname: string;
    };
    pages: GenericPageConfig[];
};
export declare const useThemes: () => {
    id: string;
    name: string;
    description: string;
    tags: string[];
    browserColorScheme: string;
    colors: {
        primary: string;
        primaryContent: string;
        secondary: string;
        secondaryContent: string;
        accent: string;
        accentContent: string;
        neutral: string;
        neutralContent: string;
        base100: string;
        base200: string;
        base300: string;
        baseContent: string;
    };
    typography: {
        base: number;
        heading: {
            type: "theme" | "stack" | "google";
            family: string;
        };
        body: {
            type: "theme" | "stack" | "google";
            family: string;
        };
        alternatives: {
            heading: {
                type: "theme" | "stack" | "google";
                family: string;
            };
            body: {
                type: "theme" | "stack" | "google";
                family: string;
            };
        }[];
    };
}[];
export declare const useThemesLibrary: () => {
    id: string;
    name: string;
    description: string;
    tags: string[];
    browserColorScheme: string;
    colors: {
        primary: string;
        primaryContent: string;
        secondary: string;
        secondaryContent: string;
        accent: string;
        accentContent: string;
        neutral: string;
        neutralContent: string;
        base100: string;
        base200: string;
        base300: string;
        baseContent: string;
    };
    typography: {
        base: number;
        heading: {
            type: "theme" | "stack" | "google";
            family: string;
        };
        body: {
            type: "theme" | "stack" | "google";
            family: string;
        };
        alternatives: {
            heading: {
                type: "theme" | "stack" | "google";
                family: string;
            };
            body: {
                type: "theme" | "stack" | "google";
                family: string;
            };
        }[];
    };
}[];
export declare const useImagesSearchResults: () => {
    provider: string;
    description: string;
    url: string;
    blurHash: string;
    user: {
        name: string;
        profile_url: string;
    };
}[] | undefined;
export declare const useZoom: () => {
    zoom: number;
    zoomIn: () => void;
    zoomOut: () => void;
    canZoomIn: boolean;
    canZoomOut: boolean;
    resetZoom: () => void;
};
export declare const useChatVisible: () => boolean;
export declare const useTextEditMode: () => "default" | "large" | undefined;
export declare const useDraft: () => DraftState;
export declare function useHasDynamicParent(brickId: string): boolean;
export declare function useDynamicParent(brickId: string): {
    mobileProps?: {} | undefined;
    id: string;
    type: string;
    props: any;
} | null;
export declare const useGetBrick: () => (id: string) => Brick | undefined;
export declare function usePageVersion(): string | undefined;
export declare function useEditingTextForBrickId(): string | undefined;
export declare function useLastSaved(): Date | undefined;
export declare const useSections: () => {
    readonly props: {
        alignItems?: "items-start" | "items-center" | "items-end" | undefined;
        backgroundColor?: string | undefined;
        justifyContent?: "justify-start" | "justify-center" | "justify-end" | "justify-between" | "justify-around" | "justify-evenly" | undefined;
        maxWidth?: string | undefined;
        minHeight?: string | undefined;
        gap?: string | undefined;
        lastTouched?: number | undefined;
        gradientDirection?: "bg-gradient-to-t" | "bg-gradient-to-r" | "bg-gradient-to-b" | "bg-gradient-to-l" | "bg-gradient-to-tl" | "bg-gradient-to-tr" | "bg-gradient-to-br" | "bg-gradient-to-bl" | undefined;
        purpose?: "navbar" | "sidebar" | undefined;
    };
    readonly bricks: Brick[];
    readonly label?: string | undefined;
    readonly mobileProps?: {
        alignItems?: "items-start" | "items-center" | "items-end" | undefined;
        backgroundColor?: string | undefined;
        justifyContent?: "justify-start" | "justify-center" | "justify-end" | "justify-between" | "justify-around" | "justify-evenly" | undefined;
        maxWidth?: string | undefined;
        minHeight?: string | undefined;
        gap?: string | undefined;
        lastTouched?: number | undefined;
        gradientDirection?: "bg-gradient-to-t" | "bg-gradient-to-r" | "bg-gradient-to-b" | "bg-gradient-to-l" | "bg-gradient-to-tl" | "bg-gradient-to-tr" | "bg-gradient-to-br" | "bg-gradient-to-bl" | undefined;
        purpose?: "navbar" | "sidebar" | undefined;
    } | undefined;
    readonly id: string;
    readonly order: number;
}[];
export declare const useSection: (sectionId?: string) => {
    section: {
        label?: string | undefined;
        mobileProps?: {
            backgroundColor?: string | undefined;
            gradientDirection?: "bg-gradient-to-t" | "bg-gradient-to-r" | "bg-gradient-to-b" | "bg-gradient-to-l" | "bg-gradient-to-tl" | "bg-gradient-to-tr" | "bg-gradient-to-br" | "bg-gradient-to-bl" | undefined;
            minHeight?: string | undefined;
            purpose?: "navbar" | "sidebar" | undefined;
            maxWidth?: string | undefined;
            justifyContent?: "justify-start" | "justify-center" | "justify-end" | "justify-between" | "justify-around" | "justify-evenly" | undefined;
            alignItems?: "items-start" | "items-center" | "items-end" | undefined;
            gap?: string | undefined;
            lastTouched?: number | undefined;
        } | undefined;
        id: string;
        order: number;
        props: {
            backgroundColor?: string | undefined;
            gradientDirection?: "bg-gradient-to-t" | "bg-gradient-to-r" | "bg-gradient-to-b" | "bg-gradient-to-l" | "bg-gradient-to-tl" | "bg-gradient-to-tr" | "bg-gradient-to-br" | "bg-gradient-to-bl" | undefined;
            minHeight?: string | undefined;
            purpose?: "navbar" | "sidebar" | undefined;
            maxWidth?: string | undefined;
            justifyContent?: "justify-start" | "justify-center" | "justify-end" | "justify-between" | "justify-around" | "justify-evenly" | undefined;
            alignItems?: "items-start" | "items-center" | "items-end" | undefined;
            gap?: string | undefined;
            lastTouched?: number | undefined;
        };
        bricks: {
            mobileProps?: {} | undefined;
            id: string;
            type: string;
            props: any;
        }[];
    };
    bricks: [string, {
        brick: Brick;
        sectionId: string;
        parentId: string | null;
    }][];
} | null;
export declare const useSectionByBrickId: (brickId: string) => {
    label?: string | undefined;
    mobileProps?: {
        backgroundColor?: string | undefined;
        gradientDirection?: "bg-gradient-to-t" | "bg-gradient-to-r" | "bg-gradient-to-b" | "bg-gradient-to-l" | "bg-gradient-to-tl" | "bg-gradient-to-tr" | "bg-gradient-to-br" | "bg-gradient-to-bl" | undefined;
        minHeight?: string | undefined;
        purpose?: "navbar" | "sidebar" | undefined;
        maxWidth?: string | undefined;
        justifyContent?: "justify-start" | "justify-center" | "justify-end" | "justify-between" | "justify-around" | "justify-evenly" | undefined;
        alignItems?: "items-start" | "items-center" | "items-end" | undefined;
        gap?: string | undefined;
        lastTouched?: number | undefined;
    } | undefined;
    id: string;
    order: number;
    props: {
        backgroundColor?: string | undefined;
        gradientDirection?: "bg-gradient-to-t" | "bg-gradient-to-r" | "bg-gradient-to-b" | "bg-gradient-to-l" | "bg-gradient-to-tl" | "bg-gradient-to-tr" | "bg-gradient-to-br" | "bg-gradient-to-bl" | undefined;
        minHeight?: string | undefined;
        purpose?: "navbar" | "sidebar" | undefined;
        maxWidth?: string | undefined;
        justifyContent?: "justify-start" | "justify-center" | "justify-end" | "justify-between" | "justify-around" | "justify-evenly" | undefined;
        alignItems?: "items-start" | "items-center" | "items-end" | undefined;
        gap?: string | undefined;
        lastTouched?: number | undefined;
    };
    bricks: {
        mobileProps?: {} | undefined;
        id: string;
        type: string;
        props: any;
    }[];
} | undefined;
export declare const useAttributes: () => Attributes;
export declare const useAttributesSchema: () => import('@upstart.gg/sdk/shared/attributes').AttributesSchema;
export declare const useDatasourcesSchemas: () => {
    [x: string]: {
        options?: {} | undefined;
        description?: string | undefined;
        indexes?: {
            unique?: boolean | undefined;
            name: string;
            fields: string[];
        }[] | undefined;
        id: string;
        provider: "custom";
        schema: any;
        name: string;
        sampleData: unknown[];
    } | {
        description?: string | undefined;
        sampleData?: any;
        id: string;
        provider: "http-json";
        options: {
            refreshInterval?: number | undefined;
            headers?: {
                [x: string]: string;
            } | undefined;
            url: string;
        };
        schema: any;
        name: string;
    } | {
        options?: {} | {
            refreshInterval?: number | undefined;
            url: string;
        } | {
            refreshInterval?: number | undefined;
            order?: string | undefined;
            maxResults?: number | undefined;
            regionCode?: string | undefined;
            relevanceLanguage?: string | undefined;
            channelId: string;
        } | undefined;
        description?: string | undefined;
        sampleData?: any;
        ttlMinutes?: number | undefined;
        refresh?: {
            interval?: number | undefined;
            method: "interval" | "manual" | "live";
        } | undefined;
        id: string;
        provider: "internal-recipes" | "internal-links" | "internal-faq" | "internal-changelog" | "internal-blog" | "rss" | "youtube-list";
        schema: null;
        name: string;
    };
} | undefined;
export declare const useDraggingBrickType: () => string | undefined;
export declare const useContextMenuVisible: () => boolean;
export declare const useIsMouseOverPanel: () => boolean | undefined;
export declare const useEditorHelpers: () => {
    setMouseOverPanel: (over: boolean) => void;
    toggleDebugMode: () => void;
    setContextMenuVisible: (open: boolean) => void;
    setDraggingBrickType: (type: Brick["type"] | null) => void;
    setPreviewMode: (mode: Resolution) => void;
    setSettingsVisible: (visible: boolean) => void;
    setGridConfig: (config: EditorStateProps["gridConfig"]) => void;
    toggleSettings: () => void;
    toggleTextEditMode: () => void;
    setTextEditMode: (mode: EditorStateProps["textEditMode"]) => void;
    setIsEditingText: (forBrickId: string | false) => void;
    setLastTextEditPosition: (position?: number) => void;
    setImagesSearchResults: (images: EditorStateProps["imagesSearchResults"]) => void;
    setPanel: (panel?: EditorStateProps["panel"]) => void;
    togglePanel: (panel?: EditorStateProps["panel"]) => void;
    hidePanel: (panel?: EditorStateProps["panel"]) => void;
    setSelectedGroup: (group?: Brick["id"][]) => void;
    setSelectedBrickId: (brickId?: Brick["id"]) => void;
    setSelectedSectionId: (sectionId?: string) => void;
    deselectBrick: (brickId?: Brick["id"]) => void;
    togglePanelPosition: () => void;
    showModal: (modal: EditorStateProps["modal"]) => void;
    hideModal: () => void;
    toggleEditorEnabled: () => void;
    onPublish: (data: PagePublishPayload) => void;
    onSavePage: ((page: PageSavePayload) => Promise<{
        pageVersionId: string;
    }>) | undefined;
    onSaveSite: ((site: SiteSavePayload) => Promise<void>) | undefined;
    onDraftChange: ((draft: DraftState, siteAndPages: SiteAndPagesConfig) => Promise<void>) | undefined;
    toggleChat: () => void;
    onShowPopup: ((id: string | false) => void) | undefined;
};
export declare const useDraftHelpers: () => {
    deleteBrick: (id: string) => void;
    detachBrickFromContainer: (id: string) => void;
    setSections: (sections: Section[]) => void;
    setThemes: (themes: Theme[]) => void;
    setTheme: (theme: Theme) => void;
    pickTheme: (themeId: Theme["id"]) => void;
    setSitemap: (sitemap: Site["sitemap"]) => void;
    addPage: (page: GenericPageConfig) => void;
    addDatasource: (datasource: ValueOfObj<NonNullable<Site["datasources"]>>) => void;
    addDatarecord: (datarecord: ValueOfObj<NonNullable<Site["datarecords"]>>) => 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;
    adjustMobileLayout: () => void;
    duplicateSection: (id: string) => void;
    toggleBrickVisibilityPerBreakpoint: (id: string, resolution: Resolution) => void;
    getParentBrick: (id: string) => Brick | undefined;
    updateBrick: (id: string, brick: Partial<Brick>) => void;
    updateBrickProps: (id: string, props: Record<string, unknown>, isMobileProps?: boolean) => void;
    moveBrickWithin: (id: string, to: "previous" | "next") => void;
    reorderBrickWithin: (brickId: string, toIndex: number) => void;
    getPositionWithinParent: (brickId: Brick["id"]) => number | undefined;
    canMoveToWithinParent: (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>) => 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;
};
export declare const useDatarecordsSchemas: () => {
    [x: string]: {
        description?: string | undefined;
        id: string;
        label: string;
        provider: "internal" | "generic-webhook" | "google-sheets" | "airtable";
        schema: any;
    };
} | undefined;
export declare const usePageInfo: () => {
    id: string;
    path: string;
    label: string;
    siteLabel: string;
    siteId: string;
    hostname: string;
};
export declare const useSite: () => {
    sitePrompt: string;
    id: string;
    label: string;
    sitemap: {
        status?: "draft" | "published" | undefined;
        id: string;
        label: string;
        path: string;
        tags: string[];
        sectionsPlan: {
            id: string;
            name: string;
            description: string;
        }[];
    }[];
    attr: Attributes;
    theme: {
        id: string;
        name: string;
        description: string;
        tags: string[];
        browserColorScheme: string;
        colors: {
            primary: string;
            primaryContent: string;
            secondary: string;
            secondaryContent: string;
            accent: string;
            accentContent: string;
            neutral: string;
            neutralContent: string;
            base100: string;
            base200: string;
            base300: string;
            baseContent: string;
        };
        typography: {
            base: number;
            heading: {
                type: "theme" | "stack" | "google";
                family: string;
            };
            body: {
                type: "theme" | "stack" | "google";
                family: string;
            };
            alternatives: {
                heading: {
                    type: "theme" | "stack" | "google";
                    family: string;
                };
                body: {
                    type: "theme" | "stack" | "google";
                    family: string;
                };
            }[];
        };
    };
    themes: {
        id: string;
        name: string;
        description: string;
        tags: string[];
        browserColorScheme: string;
        colors: {
            primary: string;
            primaryContent: string;
            secondary: string;
            secondaryContent: string;
            accent: string;
            accentContent: string;
            neutral: string;
            neutralContent: string;
            base100: string;
            base200: string;
            base300: string;
            baseContent: string;
        };
        typography: {
            base: number;
            heading: {
                type: "theme" | "stack" | "google";
                family: string;
            };
            body: {
                type: "theme" | "stack" | "google";
                family: string;
            };
            alternatives: {
                heading: {
                    type: "theme" | "stack" | "google";
                    family: string;
                };
                body: {
                    type: "theme" | "stack" | "google";
                    family: string;
                };
            }[];
        };
    }[];
    attributes: import('@upstart.gg/sdk/shared/attributes').AttributesSchema;
    hostname: string;
};
export declare const useTheme: () => {
    id: string;
    name: string;
    description: string;
    tags: string[];
    browserColorScheme: string;
    colors: {
        primary: string;
        primaryContent: string;
        secondary: string;
        secondaryContent: string;
        accent: string;
        accentContent: string;
        neutral: string;
        neutralContent: string;
        base100: string;
        base200: string;
        base300: string;
        baseContent: string;
    };
    typography: {
        base: number;
        heading: {
            type: "theme" | "stack" | "google";
            family: string;
        };
        body: {
            type: "theme" | "stack" | "google";
            family: string;
        };
        alternatives: {
            heading: {
                type: "theme" | "stack" | "google";
                family: string;
            };
            body: {
                type: "theme" | "stack" | "google";
                family: string;
            };
        }[];
    };
};
export declare const useSectionsSubscribe: (callback: (sections: DraftState["sections"]) => void) => void;
export declare const useAttributesSubscribe: (callback: (attr: DraftState["attr"]) => void) => void;
export declare const useThemeSubscribe: (callback: (theme: DraftState["theme"]) => void) => void;
export declare const usePagePathSubscribe: (callback: (path: DraftState["path"]) => void) => void;
export declare function useGridConfig(): {
    colWidth: number;
    rowHeight: number;
};
