import { type ColorRepresentation, type Object3D } from 'three/webgpu'; import type OutlineNode from 'three/addons/tsl/display/OutlineNode.js'; import type { OutputNodeEffect } from '../viewers/RenderPipeline'; export interface TSLOutlineOptions { selectedObjects?: readonly Object3D[]; edgeStrength?: number; edgeThickness?: number; edgeGlow?: number; visibleEdgeColor?: ColorRepresentation; hiddenEdgeColor?: ColorRepresentation; downSampleRatio?: number; instanceBoundsProxy?: boolean; instanceBoundsPadding?: number; instanceBoundsMinSize?: number; } export type TSLOutlineUpdateOptions = Omit; export interface TSLOutlineEffect extends OutputNodeEffect { readonly outlineNode: OutlineNode | null; readonly selectedObjects: readonly Object3D[]; setSelectedObjects(objects: readonly Object3D[]): TSLOutlineEffect; update(options: TSLOutlineUpdateOptions): TSLOutlineEffect; dispose(): void; } export declare class TSLEffects { static flow(parameters?: { baseColor?: ColorRepresentation; flowColor?: ColorRepresentation; speed?: number; scale?: number; intensity?: number; }): import("three/webgpu").Node<"vec3">; static breathe(parameters?: { baseColor?: ColorRepresentation; breathColor?: ColorRepresentation; speed?: number; intensity?: number; }): import("three/webgpu").Node<"vec3">; static fluid(parameters?: { baseColor?: ColorRepresentation; flowColor?: ColorRepresentation; speed?: number; scale?: number; intensity?: number; distortion?: number; }): import("three/webgpu").Node<"vec3">; static outline(options?: TSLOutlineOptions): TSLOutlineEffect; }