import type { GlobalConfig, Goo, GooHeader, GooLayer, GooLayersConfig, GooPreview, GooSummary, LayerDefinition, LiftRetract, MotionConfig, Motions, MotionTimes, PrinterDefinition } from './interfaces.js';
import { BinaryWriter } from './BinaryWriter.js';
export declare class GooWriter {
    protected writer: BinaryWriter;
    constructor(writer: BinaryWriter);
    write(goo: Goo, consumer: (buffer: Buffer) => Promise<unknown>): Promise<number>;
    protected writeData(goo: Goo): AsyncGenerator<Buffer | ((pos: number) => Buffer), void, any>;
    protected writeHeader(header: GooHeader): AsyncGenerator<Buffer | ((pos: number) => Buffer), void, any>;
    protected mark(offset: number): Generator<Buffer | ((pos: number) => Buffer), void, unknown>;
    protected writeLayerConfig(config: GooLayersConfig): Generator<Buffer, void, any>;
    protected writeSummary(summary: GooSummary): Generator<Buffer, void, unknown>;
    protected writeGlobalConfig<T>(config: GlobalConfig<T>, map: (item: T) => Generator<Buffer>): Generator<Buffer, void, any>;
    protected writeMotions<T>(config: Motions<T>, map: (item: T) => Generator<Buffer>): Generator<Buffer, void, any>;
    protected writeLiftRetract<T>(config: LiftRetract<T>, map: (item: T) => Generator<Buffer>): Generator<Buffer, void, any>;
    protected writeMotionTimes(times: MotionTimes): Generator<Buffer, void, unknown>;
    protected writeMotionConfig(config: MotionConfig): Generator<Buffer, void, unknown>;
    protected writePreview(preview: GooPreview): AsyncGenerator<Buffer>;
    protected writeDelimiter(): Generator<Buffer, void, unknown>;
    protected writeLayer(layer: GooLayer, printer: PrinterDefinition): AsyncGenerator<Buffer, void, any>;
    protected writeLayerDefinition(definition: LayerDefinition): Generator<Buffer, void, any>;
}
