import { HandlerConstructor } from './rules';
import type { OptionsHandler } from '../options';
import { NextProvider } from '../provider';
import type { NextNode } from '../next';
export interface SurrogateHandlerRunner {
    run(args: any[], error?: Error): void;
}
export declare abstract class HandlerRunner<T extends object> implements SurrogateHandlerRunner {
    protected node: NextNode<T>;
    protected argsHandlers: HandlerConstructor<T>[];
    constructor(node: NextNode<T>);
    static for<T extends object>(node: NextNode<T>, options: OptionsHandler<T>): SurrogateHandlerRunner;
    run(args: any[], error?: Error): void;
    protected findRule(): import("./rules").HandlerRule<T>;
    protected abstract runWithoutNext(nextProvider: NextProvider<T>): void;
    protected abstract runWithNext(nextProvider: NextProvider<T>): void;
    protected shouldRunWithNext(): boolean;
}
