export type DecisionTreeNodeType = "decision" | "action"; export interface DecisionTreeContext { readonly values?: Record; } export interface DecisionTreeStats { readonly totalNodes: number; readonly decisionNodes: number; readonly actionNodes: number; readonly maxDepth: number; readonly averageActionDepth: number; } export interface DecisionTreeDecision { readonly action: string; readonly path: readonly string[]; readonly executed: boolean; } export type DecisionCondition = (context: DecisionTreeContext) => boolean; export type DecisionAction = (context: DecisionTreeContext) => void; export interface DecisionTreeNode { readonly type: DecisionTreeNodeType; readonly name: string; condition?: DecisionCondition; action?: DecisionAction; trueBranch?: DecisionTreeNode; falseBranch?: DecisionTreeNode; parent?: DecisionTreeNode; } export declare class DecisionTree { private root; createDecision(name: string, condition: DecisionCondition): DecisionTreeNode; createAction(name: string, action?: DecisionAction): DecisionTreeNode; setBranches(node: DecisionTreeNode, trueBranch: DecisionTreeNode, falseBranch: DecisionTreeNode): void; setRoot(node: DecisionTreeNode): void; getRoot(): DecisionTreeNode | undefined; decide(context: DecisionTreeContext, maxDepth?: number): DecisionTreeDecision; traverse(context: DecisionTreeContext, maxDepth?: number): DecisionTreeNode | undefined; getTraversalPath(context: DecisionTreeContext, maxDepth?: number): readonly string[]; validate(): boolean; getStats(): DecisionTreeStats; clone(): DecisionTree; } //# sourceMappingURL=DecisionTree.d.ts.map