import type { Color, Matrix2, Matrix3, Matrix4, Node, NodeBuilder, StorageBufferNode, Texture, TextureNode, UniformArrayNode, UniformNode, Vector2, Vector3, Vector4 } from 'three/webgpu'; /** Stable, package-owned aliases for values composed through Three.js TSL. */ export type TSLNode = Node; export type TSLFloatNode = TSLNode<'float'>; export type TSLIntNode = TSLNode<'int'>; export type TSLUintNode = TSLNode<'uint'>; export type TSLBoolNode = TSLNode<'bool'>; export type TSLColorNode = TSLNode<'color'>; export type TSLVec2Node = TSLNode<'vec2'>; export type TSLVec3Node = TSLNode<'vec3'>; export type TSLVec4Node = TSLNode<'vec4'>; export type TSLUVec2Node = TSLNode<'uvec2'>; export type TSLUVec3Node = TSLNode<'uvec3'>; export type TSLUVec4Node = TSLNode<'uvec4'>; export type TSLMat2Node = TSLNode<'mat2'>; export type TSLMat3Node = TSLNode<'mat3'>; export type TSLMat4Node = TSLNode<'mat4'>; export type TSLVoidNode = TSLNode<'void'>; export type TSLStorageNode = StorageBufferNode; export type TSLUniformArrayNode = UniformArrayNode; export type TSLUniformNode = UniformNode; export type TSLTextureNode = TextureNode; export type TSLFloatInput = TSLFloatNode | TSLIntNode | TSLUintNode | number; export type TSLIntInput = TSLIntNode | TSLUintNode | number; export type TSLUintInput = TSLUintNode | TSLIntNode | number; export type TSLNumericNode = TSLFloatNode | TSLIntNode | TSLUintNode; export type TSLIntegerNode = TSLIntNode | TSLUintNode; export type TSLIntegerInput = TSLIntegerNode | number; export type TSLBoolInput = TSLBoolNode | boolean; export type TSLVec2Input = TSLVec2Node | Vector2; export type TSLVec3Input = TSLVec3Node | Vector3 | Color; export type TSLVec4Input = TSLVec4Node | Vector4; export type TSLMat2Input = TSLMat2Node | Matrix2; export type TSLMat3Input = TSLMat3Node | Matrix3; export type TSLMat4Input = TSLMat4Node | Matrix4; export type TSLTextureInput = TSLTextureNode | Texture; export interface TSLFunctionLayoutInput { name: string; type: string; qualifier?: 'in' | 'out' | 'inout'; } export interface TSLFullFunctionLayout { name: string; type: string; inputs: TSLFunctionLayoutInput[]; } export interface TSLAbbreviatedFunctionLayout { return: string; [inputName: string]: string; } export type TSLFunctionLayout = TSLFullFunctionLayout | TSLAbbreviatedFunctionLayout; /** Public callable surface for a TSL builder function, without private upstream helper types. */ export interface TSLFunction { (...arguments_: TArguments): TResult; shaderNode: TSLNode; id: number; setLayout(layout: TSLFunctionLayout): this; generateNodeType(builder: NodeBuilder): string; once(subBuilds?: string[] | null): this; } /** Public callable surface for a `nodeProxy()` factory. */ export interface TSLNodeFactory { (...arguments_: TArguments): TResult; }