interface Data { rule: Rule; stop: () => void; logger: Logger; } interface Rule { id: string | number; name?: string; weight?: number; condition: (fact: T, data: Data) => Promise | boolean; action: (fact: T, data: Data) => Promise | void; } interface Logger { info: (message?: unknown, ...optionalParams: unknown[]) => void; warn: (message?: unknown, ...optionalParams: unknown[]) => void; error: (message?: unknown, ...optionalParams: unknown[]) => void; } interface RuleEngineOptions { ignoreFactChanges?: boolean; maxIterations?: number; logger?: Logger; } declare class RuleEngine { private rules; private rulesDirty; private readonly fact; private readonly ignoreFactChanges; private iteration; private readonly maxIterations; private terminate; private running; private readonly logger; constructor(fact?: T, options?: RuleEngineOptions); addRule(rule: Rule): void; addRules(rules: Rule[]): void; updateRule(id: string | number, newRule: Rule): boolean; removeRule(id: string | number): void; stop(): void; sort(): void; run(): Promise; private runPass; private evaluateRule; private executeRule; } export { RuleEngine }; export type { Data, Logger, Rule, RuleEngineOptions }; //# sourceMappingURL=index.d.mts.map