import type { ProviderParameters, SurrogateUnwrapped } from '../../interfaces';
import type { HandlerContainer } from '../../containers';
import type { TimeTracking } from '../../timeTracker';
import type { Context } from '../../context';
import type { NextNode } from '../../next';
export declare abstract class Provider<T extends object, Arguments extends Array<any>, Result> implements ProviderParameters<T, Arguments, Result> {
    protected readonly node: NextNode<T>;
    readonly receivedArgs: any[];
    readonly error?: Error | undefined;
    protected readonly returnValue: any;
    constructor(node: NextNode<T>, receivedArgs: any[], error?: Error | undefined);
    get action(): string;
    get correlationId(): string;
    get currentArgs(): any[];
    get hookType(): string;
    get instance(): SurrogateUnwrapped<T>;
    get originalArgs(): Arguments;
    get provide(): any;
    get result(): any;
    get timeTracker(): TimeTracking;
    protected get context(): Context<T>;
    protected get container(): HandlerContainer<T>;
}
