import type FrameBuffer from '../FrameBuffer'; import type Renderer from '../Renderer'; import type Texture from '../Texture'; import CompositeNode, { CompositeNodeInput, CompositeNodeOutput } from './CompositeNode'; export declare class GroupInput implements CompositeNodeInput { output: string; /** * Group node is self. Must have here to compatitable with CompositeNode#inputs */ node: GroupCompositeNode; constructor(node: GroupCompositeNode, output: string); } export interface GroupOutput extends CompositeNodeOutput { } export declare class GroupOutput { name: string; /** * The alactul output info of group * Will be updated in the prepare */ groupOutput?: CompositeNodeOutput; constructor(name: string); } type InputLinksMap = Record; type OutputLinksMap = Record; declare class GroupCompositeNode extends CompositeNode { private _nodes; /** * Input links to internal node inputs * Key is group input name. */ private _inputLinks; /** * Input links to internal node output * Key is group output name. */ private _outputLinks; /** * Add a child node */ addNode(...newNodes: CompositeNode[]): void; /** * Remove a child node */ removeNode(node: CompositeNode): void; eachNode(cb: (node: CompositeNode) => void): void; /** * Get node by name. */ getNodeByName(name: string): CompositeNode | undefined; updateInnerLinks(): void; prepare(renderer: Renderer): void; /** * Get a handle of group input. Group will know how to link to the inside nodes to outside. */ getGroupInput(inputName: InputKey): GroupInput; /** * Get a handle of group output. Group will know how to link to the inside nodes to outside. */ getGroupOutput(outputName: OutputKey): GroupOutput; getInputInnerLink(groupInputName: InputKey): InputLinksMap[InputKey]; getOutputInnerLink(groupInputName: OutputKey): OutputLinksMap[OutputKey]; render(renderer: Renderer, inputTextures?: Record, outputTextures?: Record, frameBuffer?: FrameBuffer): void; } export default GroupCompositeNode;