import * as THREE from 'three'; export type Rgb = readonly [number, number, number]; type PolylineOptions = { color1: Rgb; color2: Rgb; points: THREE.Vector3[]; uvdx: number; uvx: number; }; export declare const samplePalette: (palette: readonly Rgb[], amount: number) => Rgb; export declare class CurtainPolyline { color1: Rgb; color2: Rgb; count: number; geometry: THREE.BufferGeometry; points: THREE.Vector3[]; private color; private next; private position; private prev; private readonly tmp; private uvdx; private uvx; constructor({ color1, color2, points, uvdx, uvx }: PolylineOptions); dispose(): void; updateColors(color1: Rgb, color2: Rgb): void; updateGeometry(): void; private init; } declare class CurtainParticle { pinned: THREE.Vector2 | null; pos: THREE.Vector2; previous: THREE.Vector2; constructor(position: THREE.Vector2); integrate(gravity: number): void; pin(): void; } declare class DistanceConstraint { private readonly a; private readonly b; private restLength; constructor(a: CurtainParticle, b: CurtainParticle); solve(): void; } export declare class CurtainSegment { constraints: DistanceConstraint[]; particles: CurtainParticle[]; constructor(points: THREE.Vector2[]); frame(gravity: number, iterations: number): void; pin(index: number): void; } export {};