import { DisplayNodeControllerCallbacks, DisplayNodeController } from '../../../utils/DisplayNodeController';
import { SubnetOutputSopNode } from '../../SubnetOutput';
import { TypedSopNode, BaseSopNodeType } from '../../_Base';
import { NodeContext } from '../../../../poly/NodeContext';
import { GeoNodeChildrenMap } from '../../../../poly/registers/nodes/Sop';
import { NodeParamsConfig } from '../../../utils/params/ParamsConfig';
import { CoreGroup } from '../../../../../core/geometry/Group';
import { Constructor, valueof } from '../../../../../types/GlobalTypes';
import { NodeCreateOptions } from '../../../utils/hierarchy/ChildrenController';
import { BaseNodeClassWithDisplayFlag } from '../../../_Base';
export declare class SubnetSopNodeLike<T extends NodeParamsConfig> extends TypedSopNode<T> {
    private _overrideOutputNode;
    initializeBaseNode(): void;
    readonly childrenDisplayController: SopSubnetChildrenDisplayController;
    readonly displayNodeController: DisplayNodeController;
    protected _childrenControllerContext: NodeContext;
    createNode<S extends keyof GeoNodeChildrenMap>(node_class: S, options?: NodeCreateOptions): GeoNodeChildrenMap[S];
    createNode<K extends valueof<GeoNodeChildrenMap>>(node_class: Constructor<K>, options?: NodeCreateOptions): K;
    children(): BaseSopNodeType[];
    nodesByType<K extends keyof GeoNodeChildrenMap>(type: K): GeoNodeChildrenMap[K][];
    cook(inputCoreGroups: CoreGroup[]): Promise<void>;
    private _cookFromChildOutputNode;
    outputNode(): SubnetOutputSopNode | BaseNodeClassWithDisplayFlag | undefined;
    setOverrideOutputNode(overrideOutputNode: boolean): void;
}
interface SopSubnetChildrenDisplayControllerOptions {
    dependsOnDisplayNode: boolean;
}
export declare class SopSubnetChildrenDisplayController {
    private node;
    private options;
    private _outputNodeNeedsUpdate;
    private _outputNode;
    private _graphNode;
    constructor(node: SubnetSopNodeLike<any>, options?: SopSubnetChildrenDisplayControllerOptions);
    dispose(): void;
    displayNodeControllerCallbacks(): DisplayNodeControllerCallbacks;
    outputNode(): SubnetOutputSopNode | undefined;
    initializeNode(): void;
    private _updateOutputNode;
    private _createGraphNode;
}
export {};
