import { DynamicBuffer } from './dynamic-buffer.ts';
import { Writer } from './writer.ts';
export type EntryReader<OutputType> = (reader: Reader, index: number) => OutputType;
declare const instanceIdentifier: unique symbol;
export declare class Reader {
    buffer: DynamicBuffer;
    position: number;
    length: number;
    [instanceIdentifier]: boolean;
    static isReader(target: any): boolean;
    static from(buffer: Buffer | DynamicBuffer | Writer): Reader;
    constructor(buffer: DynamicBuffer);
    get remaining(): number;
    reset(buffer?: Buffer | DynamicBuffer): void;
    inspect(): string;
    skip(length: number): this;
    peekUnsignedInt8(position?: number): number;
    peekUnsignedInt16(position?: number): number;
    peekUnsignedInt32(position?: number): number;
    peekUnsignedInt64(position?: number): bigint;
    peekUnsignedVarInt(position?: number): number;
    peekUnsignedVarInt64(position?: number): bigint;
    peekInt8(position?: number): number;
    peekInt16(position?: number): number;
    peekInt32(position?: number): number;
    peekInt64(position?: number): bigint;
    peekFloat64(position?: number): number;
    peekVarInt(position?: number): number;
    peekVarInt64(position?: number): bigint;
    peekBoolean(position?: number): boolean;
    peekUUID(position?: number): string;
    readUnsignedInt8(): number;
    readUnsignedInt16(): number;
    readUnsignedInt32(): number;
    readUnsignedInt64(): bigint;
    readUnsignedVarInt(): number;
    readUnsignedVarInt64(): bigint;
    readInt8(): number;
    readInt16(): number;
    readInt32(): number;
    readInt64(): bigint;
    readFloat64(): number;
    readVarInt(): number;
    readVarInt64(): bigint;
    readBoolean(): boolean;
    readNullableString(compact?: boolean, encoding?: BufferEncoding): string | null;
    readString(compact?: boolean, encoding?: BufferEncoding): string;
    readUUID(): string;
    readNullableBytes(compact?: boolean): Buffer | null;
    readBytes(compact?: boolean): Buffer;
    readVarIntBytes(): Buffer;
    readNullableArray<OutputType>(reader: EntryReader<OutputType>, compact?: boolean, discardTrailingTaggedFields?: boolean): OutputType[] | null;
    readNullableMap<Key, Value>(reader: EntryReader<[Key, Value]>, compact?: boolean, discardTrailingTaggedFields?: boolean): Map<Key, Value> | null;
    readArray<OutputType>(reader: EntryReader<OutputType>, compact?: boolean, discardTrailingTaggedFields?: boolean): OutputType[];
    readMap<Key, Value>(reader: EntryReader<[Key, Value]>, compact?: boolean, discardTrailingTaggedFields?: boolean): Map<Key, Value>;
    readVarIntArray<OutputType>(reader: EntryReader<OutputType>): OutputType[];
    readVarIntMap<Key, Value>(reader: EntryReader<[Key, Value]>): Map<Key, Value>;
    readNullableStruct<V>(reader: () => V): V | null;
    readTaggedFields(): void;
}
export {};
