export type BehaviorTreeStatus = "success" | "failure" | "running"; export type BlackboardValue = number | string | boolean | readonly unknown[] | Record | null | undefined; export interface BlackboardChange { readonly key: string; readonly value: BlackboardValue; readonly previous: BlackboardValue; readonly version: number; } export interface BehaviorTreeContext { readonly blackboard: Blackboard; readonly deltaSeconds: number; readonly depth: number; } export interface BehaviorTreeTickResult { readonly status: BehaviorTreeStatus; readonly tickCount: number; readonly trace: readonly string[]; readonly blackboardVersion: number; } export declare abstract class BehaviorTreeNode { readonly name: string; status: BehaviorTreeStatus; running: boolean; constructor(name: string); abstract tick(context: BehaviorTreeContext): BehaviorTreeStatus; reset(): void; } export declare class Blackboard { readonly parent?: Blackboard | undefined; private readonly values; private readonly changes; private localVersion; constructor(parent?: Blackboard | undefined); get version(): number; set(key: string, value: BlackboardValue): void; get(key: string, fallback?: T): T; has(key: string): boolean; snapshot(): Record; changeLog(): readonly BlackboardChange[]; } export declare class BehaviorAction extends BehaviorTreeNode { private readonly action; constructor(name: string, action: (context: BehaviorTreeContext) => BehaviorTreeStatus); tick(context: BehaviorTreeContext): BehaviorTreeStatus; } export declare class BehaviorCondition extends BehaviorTreeNode { private readonly condition; constructor(name: string, condition: (context: BehaviorTreeContext) => boolean); tick(context: BehaviorTreeContext): BehaviorTreeStatus; } export declare class BehaviorSequence extends BehaviorTreeNode { readonly children: readonly BehaviorTreeNode[]; private currentIndex; constructor(name: string, children: readonly BehaviorTreeNode[]); tick(context: BehaviorTreeContext): BehaviorTreeStatus; reset(): void; } export declare class BehaviorSelector extends BehaviorTreeNode { readonly children: readonly BehaviorTreeNode[]; private currentIndex; constructor(name: string, children: readonly BehaviorTreeNode[]); tick(context: BehaviorTreeContext): BehaviorTreeStatus; reset(): void; } export declare class BehaviorTree { readonly root: BehaviorTreeNode; readonly blackboard: Blackboard; private tickCounter; private lastTrace; constructor(root: BehaviorTreeNode, blackboard?: Blackboard); tick(deltaSeconds: number): BehaviorTreeTickResult; reset(): void; private tickNode; } //# sourceMappingURL=BehaviorTree.d.ts.map