/** Floats per rectangle instance (posX, posY, sizeW, sizeH, r, g, b, a, shape). */ export declare const RECT_FLOATS_PER_INSTANCE = 9; /** Bytes per rectangle instance. */ export declare const RECT_BYTES_PER_INSTANCE: number; export declare class RectPipeline { readonly pipeline: GPURenderPipeline; readonly bindGroupLayout: GPUBindGroupLayout; private device; private instanceBuffer; private instanceCapacity; private instanceData; private instanceCount; private constructor(); /** Create the pipeline with its shader module and bind group layout. */ static create(device: GPUDevice, format: GPUTextureFormat, _uniformBuffer: GPUBuffer): RectPipeline; /** Reset instance count for a new frame. */ reset(): void; /** Push a filled rectangle instance. */ pushRect(x: number, y: number, w: number, h: number, r: number, g: number, b: number, a: number): void; /** Push a filled circle instance (rendered as quad with SDF circle in fragment shader). */ pushCircle(cx: number, cy: number, radius: number, r: number, g: number, b: number, a: number): void; /** Upload instance data to GPU and return the count for draw call. */ flush(uniformBuffer: GPUBuffer): { bindGroup: GPUBindGroup; vertexCount: number; instanceCount: number; } | null; /** Release GPU resources. */ destroy(): void; private _pushInstance; /** Grow the instance buffer and staging array if needed. */ private _ensureCapacity; }