import { MerkleArchiveCommitment } from '../../osBindings';
import { DirectoryContents } from './directoryContents';
import { FileContents } from './fileContents';
export type Signer = {
    pubkey: Uint8Array;
    signature: Uint8Array;
    maxSize: bigint;
    context: string;
};
export declare class ArrayBufferReader {
    private buffer;
    constructor(buffer: ArrayBuffer);
    next(length: number): ArrayBuffer;
    nextU64(): bigint;
    nextVarint(): number;
    nextVarstring(): string;
}
export declare class MerkleArchive {
    readonly signer: Signer;
    readonly contents: DirectoryContents;
    static readonly headerSize: number;
    private constructor();
    static deserialize(source: Blob, context: string, header: ArrayBufferReader, commitment: MerkleArchiveCommitment | null): Promise<MerkleArchive>;
}
export declare class Entry {
    readonly hash: Uint8Array;
    readonly size: bigint;
    readonly contents: EntryContents;
    private constructor();
    static deserialize(source: Blob, header: ArrayBufferReader): Promise<Entry>;
    verifiedFileContents(): Promise<ArrayBuffer>;
}
export type EntryContents = null | FileContents | DirectoryContents;
