import type { RecoverableProvider, Contexts } from '../../../../../interfaces';
import type { NextNode, NextOptions } from '../../../../interfaces';
import type { NextRule, Recoverable } from '../../interfaces';
export declare abstract class RecoverableRule<T extends object> implements NextRule<T> {
    protected readonly nextOptions: NextOptions;
    abstract run(node: NextNode<T>): void;
    abstract shouldRun(): boolean;
    constructor(nextOptions: NextOptions);
    protected attemptRecovery(provider: RecoverableProvider<T>, recoverable: Recoverable<T>, context: Contexts): boolean;
    protected recover(node: NextNode<T>, overrideOptions: NextOptions): void;
}
