/**
 * Updates objects with JS nodes
 *
 *
 */
import { TypedSopNode } from './_Base';
import { CoreGroup } from '../../../core/geometry/Group';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { SopType } from '../../poly/registers/nodes/types/Sop';
import { ObjectBuilderPersistedConfig } from '../js/code/assemblers/objectBuilder/ObjectBuilderPersistedConfig';
import { AssemblerName } from '../../poly/registers/assemblers/_BaseRegister';
import { JsAssemblerController } from '../js/code/Controller';
import { JsAssemblerObjectBuilder } from '../js/code/assemblers/objectBuilder/ObjectBuilderAssembler';
import { ObjectContainer } from '../js/code/assemblers/objectBuilder/ObjectBuilderAssemblerCommon';
import { NodeContext } from '../../poly/NodeContext';
import { JsNodeChildrenMap } from '../../poly/registers/nodes/Js';
import { NodeCreateOptions } from '../utils/hierarchy/ChildrenController';
import { Constructor, valueof } from '../../../types/GlobalTypes';
import { BaseJsNodeType } from '../js/_Base';
import { ParamType } from '../../poly/ParamType';
import { SingleBodyFunctionData } from '../js/code/assemblers/_Base';
import { RegisterableVariable } from '../js/code/assemblers/_BaseJsPersistedConfigUtils';
declare class ObjectBuilderSopParamsConfig extends NodeParamsConfig {
    /** @param group to assign the material to */
    group: import("../utils/params/ParamsConfig").ParamTemplate<ParamType.STRING>;
}
export declare class ObjectBuilderSopNode extends TypedSopNode<ObjectBuilderSopParamsConfig> {
    paramsConfig: ObjectBuilderSopParamsConfig;
    static type(): SopType;
    readonly persisted_config: ObjectBuilderPersistedConfig;
    assemblerController(): JsAssemblerController<JsAssemblerObjectBuilder> | undefined;
    usedAssembler(): Readonly<AssemblerName.JS_OBJECT_BUILDER>;
    protected _assemblerController: JsAssemblerController<JsAssemblerObjectBuilder> | undefined;
    private _createAssemblerController;
    protected _childrenControllerContext: NodeContext;
    createNode<S extends keyof JsNodeChildrenMap>(node_class: S, options?: NodeCreateOptions): JsNodeChildrenMap[S];
    createNode<K extends valueof<JsNodeChildrenMap>>(node_class: Constructor<K>, options?: NodeCreateOptions): K;
    children(): BaseJsNodeType[];
    nodesByType<K extends keyof JsNodeChildrenMap>(type: K): JsNodeChildrenMap[K][];
    childrenAllowed(): boolean;
    sceneReadonly(): boolean;
    private _tmpParent;
    initializeNode(): void;
    cook(inputCoreGroups: CoreGroup[]): Promise<void>;
    private _getObjects;
    compileIfRequired(): void;
    private _objectContainer;
    private _paramConfigs;
    private _functionData;
    private _functionCreationArgs;
    private _functionEvalArgs;
    private _function;
    functionData(): SingleBodyFunctionData | undefined;
    compile(): void;
    updateFromFunctionData(functionData: SingleBodyFunctionData): void;
    functionEvalArgsWithParamConfigs(): (number | boolean | Function | RegisterableVariable | ObjectContainer)[];
}
export {};
