/**
 * A single cell in the grid layout. The shape mirrors the
 * `GridItem` used by `GridViewCard` but is flattened down to the
 * minimum a designer cares about: a label, a column/row position,
 * and a column/row span.
 */
export interface GridBuilderItem {
    id: string;
    /** Display label shown in the canvas. */
    label: string;
    /** 12-column grid x position (0-indexed). */
    x: number;
    /** Row position (0-indexed). */
    y: number;
    /** Width in column units (1-12). */
    w: number;
    /** Height in row units. */
    h: number;
}
/** Full grid schema produced by the builder. */
export interface GridBuilderSchema {
    /** Number of columns in the grid. Default 12. */
    cols: number;
    /** Pixel height of a single row. Default 60. */
    rowHeight: number;
    /** Ordered list of grid items. */
    items: GridBuilderItem[];
}
/** Identifies which grid item is currently selected. */
export interface GridBuilderSelection {
    id: string | null;
}
/** Test helper to make ids deterministic. */
export declare function __resetGridBuilderIdCounter(): void;
export declare const useGridBuilderStore: import('pinia').StoreDefinition<"gx-modui/gridBuilder", Pick<{
    builders: import('vue').Ref<Record<string, GridBuilderSchema>, Record<string, GridBuilderSchema>>;
    selections: import('vue').Ref<Record<string, GridBuilderSelection>, Record<string, GridBuilderSelection>>;
    ensureBuilder: (builderId: string) => GridBuilderSchema;
    loadSchema: (builderId: string, schema: GridBuilderSchema) => void;
    resetBuilder: (builderId: string) => void;
    addItem: (builderId: string, template?: Partial<Pick<GridBuilderItem, "w" | "h" | "label">>) => string;
    removeItem: (builderId: string, itemId: string) => void;
    updateItem: (builderId: string, itemId: string, patch: Partial<Omit<GridBuilderItem, "id">>) => void;
    setCols: (builderId: string, cols: number) => void;
    setRowHeight: (builderId: string, rowHeight: number) => void;
    select: (builderId: string, id: string | null) => void;
    getSelection: (builderId: string) => GridBuilderSelection;
    getSchema: (builderId: string) => GridBuilderSchema;
}, "builders" | "selections">, Pick<{
    builders: import('vue').Ref<Record<string, GridBuilderSchema>, Record<string, GridBuilderSchema>>;
    selections: import('vue').Ref<Record<string, GridBuilderSelection>, Record<string, GridBuilderSelection>>;
    ensureBuilder: (builderId: string) => GridBuilderSchema;
    loadSchema: (builderId: string, schema: GridBuilderSchema) => void;
    resetBuilder: (builderId: string) => void;
    addItem: (builderId: string, template?: Partial<Pick<GridBuilderItem, "w" | "h" | "label">>) => string;
    removeItem: (builderId: string, itemId: string) => void;
    updateItem: (builderId: string, itemId: string, patch: Partial<Omit<GridBuilderItem, "id">>) => void;
    setCols: (builderId: string, cols: number) => void;
    setRowHeight: (builderId: string, rowHeight: number) => void;
    select: (builderId: string, id: string | null) => void;
    getSelection: (builderId: string) => GridBuilderSelection;
    getSchema: (builderId: string) => GridBuilderSchema;
}, never>, Pick<{
    builders: import('vue').Ref<Record<string, GridBuilderSchema>, Record<string, GridBuilderSchema>>;
    selections: import('vue').Ref<Record<string, GridBuilderSelection>, Record<string, GridBuilderSelection>>;
    ensureBuilder: (builderId: string) => GridBuilderSchema;
    loadSchema: (builderId: string, schema: GridBuilderSchema) => void;
    resetBuilder: (builderId: string) => void;
    addItem: (builderId: string, template?: Partial<Pick<GridBuilderItem, "w" | "h" | "label">>) => string;
    removeItem: (builderId: string, itemId: string) => void;
    updateItem: (builderId: string, itemId: string, patch: Partial<Omit<GridBuilderItem, "id">>) => void;
    setCols: (builderId: string, cols: number) => void;
    setRowHeight: (builderId: string, rowHeight: number) => void;
    select: (builderId: string, id: string | null) => void;
    getSelection: (builderId: string) => GridBuilderSelection;
    getSchema: (builderId: string) => GridBuilderSchema;
}, "select" | "ensureBuilder" | "loadSchema" | "resetBuilder" | "getSelection" | "getSchema" | "addItem" | "removeItem" | "updateItem" | "setCols" | "setRowHeight">>;
/** Composable wrapping store access for a single builder instance. */
export declare function useGridBuilder(builderId: string): {
    schema: import('vue').ComputedRef<GridBuilderSchema>;
    selection: import('vue').ComputedRef<GridBuilderSelection>;
    addItem: (template?: Partial<Pick<GridBuilderItem, "w" | "h" | "label">>) => string;
    removeItem: (id: string) => void;
    updateItem: (id: string, patch: Partial<Omit<GridBuilderItem, "id">>) => void;
    setCols: (cols: number) => void;
    setRowHeight: (rowHeight: number) => void;
    select: (id: string | null) => void;
    loadSchema: (schema: GridBuilderSchema) => void;
    reset: () => void;
};
//# sourceMappingURL=gridBuilderStore.d.ts.map