/**
 * State for a single ReactiveCanvasBuilder instance. Multiple builders
 * can coexist on a page; each is keyed by `builderId`.
 *
 * A canvas is a fixed-size positioning surface. Blocks are absolutely
 * positioned by their `x` / `y` / `width` / `height`. Block `type`
 * resolves to a Vue component at runtime via a registry the consumer
 * supplies; for the MVP we treat `type` as an opaque string and let
 * the inspector edit it.
 */
export interface ReactiveCanvasBlock {
    id: string;
    type: string;
    x: number;
    y: number;
    width: number;
    height: number;
    props: Record<string, unknown>;
}
export interface ReactiveCanvasBuilderSchema {
    width: number;
    height: number;
    blocks: ReactiveCanvasBlock[];
}
/** Identifies which block is currently selected. */
export interface ReactiveCanvasBuilderSelection {
    id: string | null;
}
/** Built-in block types exposed by the palette in the MVP. */
export declare const REACTIVE_CANVAS_BLOCK_TYPES: readonly ["text-block", "image-block", "button-block", "spacer-block", "container-block"];
export type ReactiveCanvasBlockType = (typeof REACTIVE_CANVAS_BLOCK_TYPES)[number];
/** Test helper to make ids deterministic. */
export declare function __resetReactiveCanvasBuilderIdCounter(): void;
export declare const useReactiveCanvasBuilderStore: import('pinia').StoreDefinition<"gx-modui/reactiveCanvasBuilder", Pick<{
    builders: import('vue').Ref<Record<string, ReactiveCanvasBuilderSchema>, Record<string, ReactiveCanvasBuilderSchema>>;
    selections: import('vue').Ref<Record<string, ReactiveCanvasBuilderSelection>, Record<string, ReactiveCanvasBuilderSelection>>;
    ensureBuilder: (builderId: string) => ReactiveCanvasBuilderSchema;
    loadSchema: (builderId: string, schema: ReactiveCanvasBuilderSchema) => void;
    resetBuilder: (builderId: string) => void;
    addBlock: (builderId: string, type: string) => string;
    removeBlock: (builderId: string, blockId: string) => void;
    updateBlock: (builderId: string, blockId: string, patch: Partial<Omit<ReactiveCanvasBlock, "id">>) => void;
    setCanvasSize: (builderId: string, patch: {
        width?: number;
        height?: number;
    }) => void;
    select: (builderId: string, id: string | null) => void;
    getSelection: (builderId: string) => ReactiveCanvasBuilderSelection;
    getSchema: (builderId: string) => ReactiveCanvasBuilderSchema;
}, "builders" | "selections">, Pick<{
    builders: import('vue').Ref<Record<string, ReactiveCanvasBuilderSchema>, Record<string, ReactiveCanvasBuilderSchema>>;
    selections: import('vue').Ref<Record<string, ReactiveCanvasBuilderSelection>, Record<string, ReactiveCanvasBuilderSelection>>;
    ensureBuilder: (builderId: string) => ReactiveCanvasBuilderSchema;
    loadSchema: (builderId: string, schema: ReactiveCanvasBuilderSchema) => void;
    resetBuilder: (builderId: string) => void;
    addBlock: (builderId: string, type: string) => string;
    removeBlock: (builderId: string, blockId: string) => void;
    updateBlock: (builderId: string, blockId: string, patch: Partial<Omit<ReactiveCanvasBlock, "id">>) => void;
    setCanvasSize: (builderId: string, patch: {
        width?: number;
        height?: number;
    }) => void;
    select: (builderId: string, id: string | null) => void;
    getSelection: (builderId: string) => ReactiveCanvasBuilderSelection;
    getSchema: (builderId: string) => ReactiveCanvasBuilderSchema;
}, never>, Pick<{
    builders: import('vue').Ref<Record<string, ReactiveCanvasBuilderSchema>, Record<string, ReactiveCanvasBuilderSchema>>;
    selections: import('vue').Ref<Record<string, ReactiveCanvasBuilderSelection>, Record<string, ReactiveCanvasBuilderSelection>>;
    ensureBuilder: (builderId: string) => ReactiveCanvasBuilderSchema;
    loadSchema: (builderId: string, schema: ReactiveCanvasBuilderSchema) => void;
    resetBuilder: (builderId: string) => void;
    addBlock: (builderId: string, type: string) => string;
    removeBlock: (builderId: string, blockId: string) => void;
    updateBlock: (builderId: string, blockId: string, patch: Partial<Omit<ReactiveCanvasBlock, "id">>) => void;
    setCanvasSize: (builderId: string, patch: {
        width?: number;
        height?: number;
    }) => void;
    select: (builderId: string, id: string | null) => void;
    getSelection: (builderId: string) => ReactiveCanvasBuilderSelection;
    getSchema: (builderId: string) => ReactiveCanvasBuilderSchema;
}, "select" | "ensureBuilder" | "loadSchema" | "resetBuilder" | "getSelection" | "getSchema" | "addBlock" | "removeBlock" | "updateBlock" | "setCanvasSize">>;
/** Composable wrapper around `useReactiveCanvasBuilderStore`. */
export declare function useReactiveCanvasBuilder(builderId: string): {
    schema: import('vue').ComputedRef<ReactiveCanvasBuilderSchema>;
    selection: import('vue').ComputedRef<ReactiveCanvasBuilderSelection>;
    addBlock: (type: string) => string;
    removeBlock: (id: string) => void;
    updateBlock: (id: string, patch: Partial<Omit<ReactiveCanvasBlock, "id">>) => void;
    setCanvasSize: (patch: {
        width?: number;
        height?: number;
    }) => void;
    select: (id: string | null) => void;
    loadSchema: (schema: ReactiveCanvasBuilderSchema) => void;
    reset: () => void;
};
//# sourceMappingURL=reactiveCanvasBuilderStore.d.ts.map