import { CardElement } from '../definitions/elements';
import { ElementCategory, ElementType } from '../definitions/shared/base';
/**
 * State for a single ElementListBuilder instance. Like FormBuilder but
 * without cards / tabs — the schema is just a flat list of
 * CardElements. Useful for forms-as-arrays and list-of-fields configs.
 */
export interface ElementListBuilderSchema {
    elements: CardElement[];
}
/** Identifies which element is currently selected in the inspector. */
export interface ElementListBuilderSelection {
    id: string | null;
}
/** Test helper to make ids deterministic. */
export declare function __resetElementListBuilderIdCounter(): void;
export declare const useElementListBuilderStore: import('pinia').StoreDefinition<"gx-modui/elementListBuilder", Pick<{
    builders: import('vue').Ref<Record<string, ElementListBuilderSchema>, Record<string, ElementListBuilderSchema>>;
    selections: import('vue').Ref<Record<string, ElementListBuilderSelection>, Record<string, ElementListBuilderSelection>>;
    ensureBuilder: (builderId: string) => ElementListBuilderSchema;
    loadSchema: (builderId: string, schema: ElementListBuilderSchema) => void;
    resetBuilder: (builderId: string) => void;
    addElement: (builderId: string, type: ElementType | ElementCategory) => string;
    removeElement: (builderId: string, elementId: string) => void;
    reorderElement: (builderId: string, fromIndex: number, toIndex: number) => void;
    updateElement: (builderId: string, elementId: string, patch: Partial<CardElement>) => void;
    select: (builderId: string, id: string | null) => void;
    getSelection: (builderId: string) => ElementListBuilderSelection;
    getSchema: (builderId: string) => ElementListBuilderSchema;
}, "builders" | "selections">, Pick<{
    builders: import('vue').Ref<Record<string, ElementListBuilderSchema>, Record<string, ElementListBuilderSchema>>;
    selections: import('vue').Ref<Record<string, ElementListBuilderSelection>, Record<string, ElementListBuilderSelection>>;
    ensureBuilder: (builderId: string) => ElementListBuilderSchema;
    loadSchema: (builderId: string, schema: ElementListBuilderSchema) => void;
    resetBuilder: (builderId: string) => void;
    addElement: (builderId: string, type: ElementType | ElementCategory) => string;
    removeElement: (builderId: string, elementId: string) => void;
    reorderElement: (builderId: string, fromIndex: number, toIndex: number) => void;
    updateElement: (builderId: string, elementId: string, patch: Partial<CardElement>) => void;
    select: (builderId: string, id: string | null) => void;
    getSelection: (builderId: string) => ElementListBuilderSelection;
    getSchema: (builderId: string) => ElementListBuilderSchema;
}, never>, Pick<{
    builders: import('vue').Ref<Record<string, ElementListBuilderSchema>, Record<string, ElementListBuilderSchema>>;
    selections: import('vue').Ref<Record<string, ElementListBuilderSelection>, Record<string, ElementListBuilderSelection>>;
    ensureBuilder: (builderId: string) => ElementListBuilderSchema;
    loadSchema: (builderId: string, schema: ElementListBuilderSchema) => void;
    resetBuilder: (builderId: string) => void;
    addElement: (builderId: string, type: ElementType | ElementCategory) => string;
    removeElement: (builderId: string, elementId: string) => void;
    reorderElement: (builderId: string, fromIndex: number, toIndex: number) => void;
    updateElement: (builderId: string, elementId: string, patch: Partial<CardElement>) => void;
    select: (builderId: string, id: string | null) => void;
    getSelection: (builderId: string) => ElementListBuilderSelection;
    getSchema: (builderId: string) => ElementListBuilderSchema;
}, "select" | "ensureBuilder" | "loadSchema" | "resetBuilder" | "addElement" | "removeElement" | "reorderElement" | "updateElement" | "getSelection" | "getSchema">>;
/**
 * Composable wrapper around `useElementListBuilderStore` for a single
 * builder instance.
 */
export declare function useElementListBuilder(builderId: string): {
    schema: import('vue').ComputedRef<ElementListBuilderSchema>;
    selection: import('vue').ComputedRef<ElementListBuilderSelection>;
    addElement: (type: ElementType | ElementCategory) => string;
    removeElement: (id: string) => void;
    reorderElement: (from: number, to: number) => void;
    updateElement: (id: string, patch: Partial<CardElement>) => void;
    select: (id: string | null) => void;
    loadSchema: (schema: ElementListBuilderSchema) => void;
    reset: () => void;
};
//# sourceMappingURL=elementListBuilderStore.d.ts.map