/** * Pure Slug algorithm types — no dependency on three-text internals. * Based on Eric Lengyel's reference implementation (MIT License, 2017). */ interface QuadCurve { p1: [number, number]; p2: [number, number]; p3: [number, number]; } interface SlugShape { curves: QuadCurve[]; bounds: [number, number, number, number]; } interface SlugPackedTexture { data: Float32Array | Uint32Array; width: number; height: number; } interface SlugGPUData { curveTexture: SlugPackedTexture & { data: Float32Array; }; bandTexture: SlugPackedTexture & { data: Uint32Array; }; /** 5 attribs x 4 components x 4 verts per shape, tightly packed per-shape */ vertices: Float32Array; indices: Uint16Array; shapeCount: number; } interface SlugPackOptions { bandCount?: number; evenOdd?: boolean; } /** * Slug shader source re-exports. * The .glsl/.wgsl files are the single source of truth — imported as strings * at build time via the glslPlugin in rollup.config.js. */ declare const vertexShaderGLSL300: string; declare const fragmentShaderGLSL300: string; declare const vertexShaderWGSL: string; declare const fragmentShaderWGSL: string; /** * CPU-side data packer for the Slug algorithm. * Faithful to Eric Lengyel's reference layout (MIT License, 2017). * * Takes generic quadratic Bezier shapes (not text-specific) and produces * GPU-ready packed textures + vertex attribute buffers. */ /** * Pack an array of shapes into Slug's GPU data layout. * * Each shape is a closed region defined by quadratic Bezier curves. * Returns textures + vertex buffers ready for GPU upload. */ declare function packSlugData(shapes: SlugShape[], options?: SlugPackOptions): SlugGPUData; export { QuadCurve, SlugGPUData, SlugPackOptions, SlugPackedTexture, SlugShape, fragmentShaderGLSL300, fragmentShaderWGSL, packSlugData, vertexShaderGLSL300, vertexShaderWGSL };