import { BaseNodeType } from '../_Base';
import { NodeContext } from '../../poly/NodeContext';
export type OnCookCompleteHook = () => void;
export declare class NodeCookController<NC extends NodeContext> {
    private node;
    private _corePerformance;
    private _cooking;
    private _cookingDirtyTimestamp;
    private _performanceController;
    private _inputContainers;
    private _inputContents;
    private _EMPTY_ARRAY;
    constructor(node: BaseNodeType);
    performanceRecordStarted(): boolean;
    dispose(): void;
    private _inputsEvaluationRequired;
    disallowInputsEvaluation(): void;
    isCooking(): boolean;
    private _startCookIfNoErrors;
    cookMain(): Promise<void>;
    private _onError;
    cookMainWithoutInputs(): Promise<void>;
    endCook(): void;
    private _initCookingState;
    private _terminateCookProcess;
    private _evaluateInputs;
    private _evaluateParams;
    cooksCount(): number;
    cookTime(): number;
    private _finalizeCookPerformance;
    private _onCookCompleteHookNames;
    private _onCookCompleteHooks;
    registerOnCookEnd(callbackName: string, callback: OnCookCompleteHook): void;
    private _clearHooks;
    deregisterOnCookEnd(callbackName: string): void;
    private _runOnCookCompleteHooks;
    onCookEndCallbackNames(): string[] | undefined;
}
