/**
 * State for a single DependencyListBuilder instance. Multiple builders
 * can coexist on a page; each is keyed by `builderId`.
 *
 * A "dependency list" is an ordered set of conditional rules — each
 * with a name, conditions (combined via AND / OR), and actions to run
 * when the conditions match.
 */
export type DependencyOperator = "equals" | "not_equals" | "greater_than" | "less_than" | "contains" | "is_truthy" | "is_falsy";
export type DependencyActionType = "show" | "hide" | "require" | "set_value" | "emit_event";
export interface DependencyCondition {
    field: string;
    operator: DependencyOperator;
    value?: unknown;
}
export interface DependencyAction {
    type: DependencyActionType;
    target?: string;
    payload?: unknown;
}
export interface DependencyRule {
    id: string;
    name: string;
    enabled: boolean;
    conditions: DependencyCondition[];
    conditionsLogic: "AND" | "OR";
    actions: DependencyAction[];
}
export interface DependencyListBuilderSchema {
    rules: DependencyRule[];
}
/** Identifies which rule is currently selected for editing. */
export interface DependencyListBuilderSelection {
    id: string | null;
}
/** Test helper to make ids deterministic. */
export declare function __resetDependencyListBuilderIdCounter(): void;
/** Built-in rule templates exposed to the palette. */
export type DependencyRuleTemplate = "blank" | "show-field" | "hide-field" | "set-value";
export declare function buildRuleFromTemplate(template: DependencyRuleTemplate, id: string): DependencyRule;
export declare const useDependencyListBuilderStore: import('pinia').StoreDefinition<"gx-modui/dependencyListBuilder", Pick<{
    builders: import('vue').Ref<Record<string, DependencyListBuilderSchema>, Record<string, DependencyListBuilderSchema>>;
    selections: import('vue').Ref<Record<string, DependencyListBuilderSelection>, Record<string, DependencyListBuilderSelection>>;
    ensureBuilder: (builderId: string) => DependencyListBuilderSchema;
    loadSchema: (builderId: string, schema: DependencyListBuilderSchema) => void;
    resetBuilder: (builderId: string) => void;
    addRule: (builderId: string, template?: DependencyRuleTemplate) => string;
    removeRule: (builderId: string, ruleId: string) => void;
    reorderRule: (builderId: string, fromIndex: number, toIndex: number) => void;
    updateRule: (builderId: string, ruleId: string, patch: Partial<Omit<DependencyRule, "id">>) => void;
    addCondition: (builderId: string, ruleId: string) => void;
    updateCondition: (builderId: string, ruleId: string, conditionIndex: number, patch: Partial<DependencyCondition>) => void;
    removeCondition: (builderId: string, ruleId: string, conditionIndex: number) => void;
    addAction: (builderId: string, ruleId: string) => void;
    updateAction: (builderId: string, ruleId: string, actionIndex: number, patch: Partial<DependencyAction>) => void;
    removeAction: (builderId: string, ruleId: string, actionIndex: number) => void;
    select: (builderId: string, id: string | null) => void;
    getSelection: (builderId: string) => DependencyListBuilderSelection;
    getSchema: (builderId: string) => DependencyListBuilderSchema;
}, "builders" | "selections">, Pick<{
    builders: import('vue').Ref<Record<string, DependencyListBuilderSchema>, Record<string, DependencyListBuilderSchema>>;
    selections: import('vue').Ref<Record<string, DependencyListBuilderSelection>, Record<string, DependencyListBuilderSelection>>;
    ensureBuilder: (builderId: string) => DependencyListBuilderSchema;
    loadSchema: (builderId: string, schema: DependencyListBuilderSchema) => void;
    resetBuilder: (builderId: string) => void;
    addRule: (builderId: string, template?: DependencyRuleTemplate) => string;
    removeRule: (builderId: string, ruleId: string) => void;
    reorderRule: (builderId: string, fromIndex: number, toIndex: number) => void;
    updateRule: (builderId: string, ruleId: string, patch: Partial<Omit<DependencyRule, "id">>) => void;
    addCondition: (builderId: string, ruleId: string) => void;
    updateCondition: (builderId: string, ruleId: string, conditionIndex: number, patch: Partial<DependencyCondition>) => void;
    removeCondition: (builderId: string, ruleId: string, conditionIndex: number) => void;
    addAction: (builderId: string, ruleId: string) => void;
    updateAction: (builderId: string, ruleId: string, actionIndex: number, patch: Partial<DependencyAction>) => void;
    removeAction: (builderId: string, ruleId: string, actionIndex: number) => void;
    select: (builderId: string, id: string | null) => void;
    getSelection: (builderId: string) => DependencyListBuilderSelection;
    getSchema: (builderId: string) => DependencyListBuilderSchema;
}, never>, Pick<{
    builders: import('vue').Ref<Record<string, DependencyListBuilderSchema>, Record<string, DependencyListBuilderSchema>>;
    selections: import('vue').Ref<Record<string, DependencyListBuilderSelection>, Record<string, DependencyListBuilderSelection>>;
    ensureBuilder: (builderId: string) => DependencyListBuilderSchema;
    loadSchema: (builderId: string, schema: DependencyListBuilderSchema) => void;
    resetBuilder: (builderId: string) => void;
    addRule: (builderId: string, template?: DependencyRuleTemplate) => string;
    removeRule: (builderId: string, ruleId: string) => void;
    reorderRule: (builderId: string, fromIndex: number, toIndex: number) => void;
    updateRule: (builderId: string, ruleId: string, patch: Partial<Omit<DependencyRule, "id">>) => void;
    addCondition: (builderId: string, ruleId: string) => void;
    updateCondition: (builderId: string, ruleId: string, conditionIndex: number, patch: Partial<DependencyCondition>) => void;
    removeCondition: (builderId: string, ruleId: string, conditionIndex: number) => void;
    addAction: (builderId: string, ruleId: string) => void;
    updateAction: (builderId: string, ruleId: string, actionIndex: number, patch: Partial<DependencyAction>) => void;
    removeAction: (builderId: string, ruleId: string, actionIndex: number) => void;
    select: (builderId: string, id: string | null) => void;
    getSelection: (builderId: string) => DependencyListBuilderSelection;
    getSchema: (builderId: string) => DependencyListBuilderSchema;
}, "select" | "ensureBuilder" | "loadSchema" | "resetBuilder" | "getSelection" | "getSchema" | "addRule" | "removeRule" | "reorderRule" | "updateRule" | "addCondition" | "updateCondition" | "removeCondition" | "addAction" | "updateAction" | "removeAction">>;
/** Composable wrapper around `useDependencyListBuilderStore`. */
export declare function useDependencyListBuilder(builderId: string): {
    schema: import('vue').ComputedRef<DependencyListBuilderSchema>;
    selection: import('vue').ComputedRef<DependencyListBuilderSelection>;
    addRule: (template?: DependencyRuleTemplate) => string;
    removeRule: (id: string) => void;
    reorderRule: (from: number, to: number) => void;
    updateRule: (id: string, patch: Partial<Omit<DependencyRule, "id">>) => void;
    addCondition: (id: string) => void;
    updateCondition: (id: string, index: number, patch: Partial<DependencyCondition>) => void;
    removeCondition: (id: string, index: number) => void;
    addAction: (id: string) => void;
    updateAction: (id: string, index: number, patch: Partial<DependencyAction>) => void;
    removeAction: (id: string, index: number) => void;
    select: (id: string | null) => void;
    loadSchema: (schema: DependencyListBuilderSchema) => void;
    reset: () => void;
};
//# sourceMappingURL=dependencyListBuilderStore.d.ts.map