import type { Entity, World } from 'koota';
import { ColorFormat } from './buf/draw/v1/metadata_pb';
import { type Metadata } from './metadata';
export interface EntityChunk {
    /** Element offset (in points) where this chunk should be written. */
    start: number;
    /** Flat `[x, y, z, ...]` positions in meters. */
    positions: Float32Array;
    /** Optional colors aligned with `positions`. */
    colors?: Uint8Array;
    /** Optional per-vertex opacities aligned with `positions`. */
    opacities?: Uint8Array;
    /** `true` when the server has no more chunks for this entity. */
    done: boolean;
}
export type ChunkFetcher = (uuid: string, start: number, signal: AbortSignal) => Promise<EntityChunk | null>;
export interface ChunkLoaderOptions {
    world: World;
    invalidate: () => void;
    fetchChunk: ChunkFetcher;
    colorFormat?: ColorFormat;
}
export declare const createChunkLoader: ({ world, invalidate, fetchChunk, colorFormat, }: ChunkLoaderOptions) => {
    start(uuid: string, entity: Entity, metadata: Metadata): void;
    dispose(): void;
};
