import { IRuleHarvesterConfig } from './index'; export interface IInputProvider { registerInput(applyInputCb: (input: any, runtimeContext?: any, ruleGroupOverrides?: string[]) => Promise, ruleHarvesterConfig?: IRuleHarvesterConfig): void; } export interface IOutputResult { facts: any; error?: any; errorGroup?: any; context?: any; } export interface IOutputProvider { outputResult(result: IOutputResult): Promise; } export interface ICorpusRuleGroup { name: string; config?: any; rules: ICorpusRule[]; } export interface IRuleObject { closure: string; [key: string]: any; } export interface IRuleBranch { when?: ICorpusRule | ICorpusRule[]; then?: ICorpusRule | ICorpusRule[]; } export declare type ICorpusRule = string | IRuleObject | IRuleBranch; export interface ICorpusProvider { corpuses: ICorpusRuleGroup[]; closures: any[]; } export interface IClosure { name: string; handler?(facts: any, context: any): any | Promise; rules?: ICorpusRule[]; options?: object; } interface IAnyFunction { (...args: any[]): any; } export interface ILogger { debug: IAnyFunction; error: IAnyFunction; fatal: IAnyFunction; info: IAnyFunction; trace: IAnyFunction; } export {};