import type { Goo, GooHeader, Vec2, GooLayersConfig, GlobalConfig, Motions, LiftRetract, MotionConfig, GooLayer, LayerDefinition, GooPreview } from './interfaces.js';
import { BinaryReader } from './BinaryReader.js';
export declare class GooReader {
    protected reader: BinaryReader;
    constructor(reader: BinaryReader);
    read(): Promise<Goo>;
    protected readHeader(): Promise<GooHeader>;
    protected readLayerConfig(): Promise<GooLayersConfig>;
    protected readSummary(): Promise<{
        time: number;
        volume: number;
        weight: number;
        price: number;
        currency: string;
    }>;
    protected readGlobalConfig<T>(map: () => Promise<T>): Promise<GlobalConfig<T>>;
    protected readMotions<T>(map: () => Promise<T>): Promise<Motions<T>>;
    protected readLiftRetract<T>(map: () => Promise<T>): Promise<LiftRetract<T>>;
    protected readMotionTimes(): Promise<{
        before: {
            lift: number;
        };
        after: {
            lift: number;
            retract: number;
        };
    }>;
    protected readMotionConfig(): Promise<MotionConfig>;
    protected readPreview(dimensions: Vec2<number>): Promise<GooPreview & {
        input: {
            buffer: Buffer;
            channels: 4;
        };
    }>;
    protected readDelimiter(): Promise<void>;
    protected readLayer(): Promise<GooLayer>;
    protected readLayerDefinition(): Promise<LayerDefinition>;
}
