import { Slot } from './slot';
import { SlotPointer } from './slot-pointer';
import { Database, type PathPart } from './database';
import { ReadCursor, KeyValuePairCursor, CursorIterator } from './read-cursor';
import type { WriteableData } from './writeable-data';
export declare class WriteKeyValuePairCursor extends KeyValuePairCursor {
    valueCursor: WriteCursor;
    keyCursor: WriteCursor;
    constructor(valueCursor: WriteCursor, keyCursor: WriteCursor, hash: Uint8Array);
}
export declare class WriteCursor extends ReadCursor {
    constructor(slotPtr: SlotPointer, db: Database);
    writePath(path: PathPart[]): WriteCursor;
    write(data: WriteableData | null): void;
    writeIfEmpty(data: WriteableData): void;
    readKeyValuePair(): WriteKeyValuePairCursor;
    writer(): Writer;
    [Symbol.iterator](): Iterator<WriteCursor>;
    iterator(): WriteCursorIterator;
}
export declare class Writer {
    parent: WriteCursor;
    size: number;
    slot: Slot;
    startPosition: number;
    relativePosition: number;
    formatTag: Uint8Array | null;
    constructor(parent: WriteCursor, size: number, slot: Slot, startPosition: number, relativePosition: number);
    write(buffer: Uint8Array): void;
    finish(): void;
    seek(position: number): void;
}
export declare class WriteCursorIterator extends CursorIterator {
    constructor(cursor: WriteCursor);
    next(): WriteCursor | null;
}
