import { Express } from 'express'; import { BaseEventController } from './BaseEventController'; declare type StorageObject = Record; declare type DoArray = { controller: 'telegram'; action: 'sendMessage'; args: { chatId: string; text: string; mode?: 'HTML' | 'MarkdownV2' | 'Markdown'; }; } | { controller: 'telegram'; action: 'sendSticker'; args: { chatId: string; sticker: string; }; } | { controller: 'telegram'; action: 'readFile'; args: { fileId: string; encoding?: string; }; } | { controller: 'storage'; action: 'create'; args: { table: string; object: StorageObject; _message?: string; }; } | { controller: 'storage'; action: 'createOrUpdate'; args: { table: string; query: StorageObject; object: StorageObject; _message?: string; }; } | { controller: 'storage'; action: 'read'; args: { table: string; query: StorageObject; }; } | { controller: 'storage'; action: 'update'; args: { table: string; query: StorageObject; object: StorageObject; _message?: string; }; } | { controller: 'storage'; action: 'delete'; args: { table: string; query: StorageObject; _message?: string; }; } | { controller: 'utils'; action: 'match'; args: { pattern: string; text: string; }; } | { controller: 'utils'; action: 'abort'; args: { case: string; }; }; declare type RuleArray = { controller: 'telegram'; when: 'message'; } | { controller: 'github'; when: 'push'; } | { controller: 'github'; when: 'pull_request'; } | { controller: 'github'; when: 'issues'; } | { controller: 'github'; when: 'repository'; } | { controller: 'github'; when: 'check_run'; } | { controller: 'github'; when: 'issue_comment'; } | { controller: 'github'; when: 'pull_request_review'; } | { controller: 'github'; when: 'pull_request_review_comment'; } | { controller: 'jira'; when: 'issuelink'; } | { controller: 'jira'; when: 'issue'; } | { controller: 'jira'; when: 'comment'; } | { controller: 'jira'; when: 'attachment'; } | { controller: 'scheduler'; when: string; } | { controller: 'test'; when: 'message'; }; declare type Rule = RuleArray & { case?: string; do: Array; }; declare type Rules = Array; declare type RuleDisposer = { controller: BaseEventController; ruleWhen: string; eventHandler: (data: any, meta: any) => void; rule: Rule; ruleId: string; }; declare type RuleDisposers = Array; declare class RuntimeManager { private readonly emitter; constructor(); on(name: string, listener: (data: any, meta?: any) => void): void; off(name: string, listener: (data: any, meta?: any) => void): void; _onControllerEventStart(controllerName: string, eventId: string, meta: any, data: any): void; _onRuleEventHandle(controllerName: string, eventId: string, meta: any, data: any, rule: any, ruleId: string, ruleCaseResult?: Record | string): void; _onRuleEventHandleActionResult(controllerName: string, eventId: string, meta: any, data: any, rule: any, ruleId: string, doIndex: string, doAs: string, result: any): void; _onRuleEventHandleActionError(controllerName: string, eventId: string, meta: any, data: any, rule: any, ruleId: string, doIndex: string, doAs: string, error: Error): void; _onRuleEventHandleError(controllerName: string, eventId: string, meta: any, data: any, rule: any, ruleId: string, error: Error): void; } declare const manager: RuntimeManager; declare function updateRules(rules: Rules, existing: RuleDisposers, c: { [key: string]: BaseEventController; }): Promise; declare function setupRules(rules: Rules, c: { [key: string]: BaseEventController; }): Promise; declare function main(controllers: Array): Promise; export { manager, updateRules, setupRules, main, Rule, Rules, };