import { NodeContext } from '../../engine/poly/NodeContext';
import { ParamType } from '../../engine/poly/ParamType';
import { NodeStatesController } from '../../engine/nodes/utils/StatesController';
import { PolyScene } from '../../engine/scene/PolyScene';
import { InputCloneMode } from '../../engine/poly/InputCloneMode';
import { BaseNodeType } from '../nodes/_Base';
import { SimpleParamJsonExporterData } from '../nodes/utils/io/IOController';
import { DefaultOperationParams } from '../../core/operations/_Base';
import { OnOperationRegisterCallback } from '../poly/registers/nodes/NodesRegister';
export interface ConvertExportParamDataParams {
    paramName: string;
    paramData: SimpleParamJsonExporterData<ParamType>;
    params: DefaultOperationParams;
}
export declare const OPERATIONS_COMPOSER_NODE_TYPE: Readonly<string>;
export declare class BaseOperation<NC extends NodeContext> {
    protected _scene: PolyScene;
    protected states?: NodeStatesController<NC> | undefined;
    protected _node?: BaseNodeType | undefined;
    static type(): string;
    type(): string;
    static onRegister: OnOperationRegisterCallback | undefined;
    static context(): NodeContext;
    context(): NodeContext;
    static readonly DEFAULT_PARAMS: DefaultOperationParams;
    static readonly INPUT_CLONED_STATE: InputCloneMode | InputCloneMode[];
    constructor(_scene: PolyScene, states?: NodeStatesController<NC> | undefined, _node?: BaseNodeType | undefined);
    scene(): PolyScene;
    cook(input_contents: any[], params: object): any;
    convertExportParamData(options: ConvertExportParamDataParams): string | number | boolean | void;
}
