import { Slot } from './slot';
import { SlotPointer } from './slot-pointer';
import type { Slotted } from './slotted';
import { Database, type PathPart } from './database';
import { Bytes } from './writeable-data';
export declare class KeyValuePairCursor {
    valueCursor: ReadCursor;
    keyCursor: ReadCursor;
    hash: Uint8Array;
    constructor(valueCursor: ReadCursor, keyCursor: ReadCursor, hash: Uint8Array);
}
export declare class ReadCursor implements Slotted {
    slotPtr: SlotPointer;
    db: Database;
    constructor(slotPtr: SlotPointer, db: Database);
    slot(): Slot;
    readPath(path: PathPart[]): ReadCursor | null;
    readPathSlot(path: PathPart[]): Slot | null;
    readUint(): number;
    readInt(): number;
    readFloat(): number;
    readBytes(maxSizeMaybe?: number | null): Uint8Array;
    readBytesObject(maxSizeMaybe?: number | null): Bytes;
    readKeyValuePair(): KeyValuePairCursor;
    reader(): Reader;
    count(): number;
    [Symbol.iterator](): Iterator<ReadCursor>;
    iterator(): CursorIterator;
}
export declare class Reader {
    parent: ReadCursor;
    size: number;
    startPosition: number;
    relativePosition: number;
    constructor(parent: ReadCursor, size: number, startPosition: number, relativePosition: number);
    read(buffer: Uint8Array): number;
    readFully(buffer: Uint8Array): void;
    readByte(): number;
    readShort(): number;
    readInt(): number;
    readLong(): number;
    seek(position: number): void;
}
export declare class CursorIterator {
    cursor: ReadCursor;
    size: number;
    index: number;
    private stack;
    private nextCursorMaybe;
    constructor(cursor: ReadCursor);
    init(): void;
    private initStack;
    hasNext(): boolean;
    next(): ReadCursor | null;
    private nextInternal;
}
