///
import * as events from 'events';
import type Engine from '..';
import type AppExecutor from './app_executor';
import ExecWrapper from './exec_wrapper';
import { OutputDelegate } from './exec_wrapper';
export default class RuleExecutor extends events.EventEmitter {
engine: Engine;
app: AppExecutor;
private _output;
private _env;
private _tt;
private _finished;
private _finishPromise;
constructor(engine: Engine, app: AppExecutor, compiled: (env: ExecWrapper) => Promise, output: OutputDelegate);
private _ruleThread;
start(): void;
waitFinished(): Promise;
end(): Promise;
stop(): void;
}