import type { MetadataFile, TxnRecord, VfsState } from "./state-machine";
export declare const ARENA_HEADER_CHECKSUM_OFFSET = 24;
export declare const METADATA_HEADER_BYTES = 80;
export declare const TXN_FRAME_HEADER_BYTES = 48;
export declare const ACTIVATION_SLOT_BYTES = 128;
export declare const METADATA_HEADER_CHECKSUM_OFFSET = 64;
export declare const FRAME_CHECKSUM_OFFSET = 40;
export declare const ACTIVATION_CHECKSUM_OFFSET = 52;
export interface ArenaHeader {
    extentSize: number;
    limitsProfileVersion: number;
    formatVersion: number;
}
export declare function encodeArenaHeader(options: {
    extentSize: number;
}): Uint8Array;
export declare function decodeArenaHeader(bytes: Uint8Array, configuredExtentSize?: number): ArenaHeader;
export interface DecodedMetadataBase {
    state: VfsState;
    payloadBytes: number;
    baseEnd: bigint;
    baseDigest: number;
}
export interface MetadataBaseHeader {
    formatVersion: number;
    limitsProfileVersion: number;
    generation: bigint;
    extentSize: number;
    metadataFileCode: number;
    rootInodeId: bigint;
    payloadLength: number;
    availableCount: number;
    quarantineCount: number;
    baseEnd: bigint;
}
export declare function inspectMetadataBaseHeader(header: Uint8Array): MetadataBaseHeader;
export declare function encodeMetadataBase(state: VfsState): Uint8Array;
/** @internal The caller must have validated this exact state immediately before encoding it. */
export declare function encodeValidatedMetadataBase(state: VfsState): Uint8Array;
export declare function decodeMetadataBase(bytes: Uint8Array): DecodedMetadataBase;
export interface TxnFrame {
    generation: bigint;
    sequence: bigint;
    record: TxnRecord;
}
export interface TxnFrameHeader {
    generation: bigint;
    sequence: bigint;
    payloadLength: number;
    frameBytes: number;
}
export declare function txnFrameBytes(record: TxnRecord): number;
export declare function inspectTxnFrameHeader(header: Uint8Array): TxnFrameHeader;
export declare function encodeTxnFrame(frame: TxnFrame): Uint8Array;
export declare function decodeTxnFrame(bytes: Uint8Array): TxnFrame;
export interface ActivationRecord {
    sequence: bigint;
    metadataFile: MetadataFile;
    generation: bigint;
    baseEnd: bigint;
    baseDigest: number;
}
export declare function encodeActivationSlot(record: ActivationRecord): Uint8Array;
export declare function decodeActivationSlot(bytes: Uint8Array): ActivationRecord;
export declare function tryDecodeActivationSlot(bytes: Uint8Array): ActivationRecord | null;
export declare function selectActivation(leftBytes: Uint8Array, rightBytes: Uint8Array): ActivationRecord;
export interface ActivationPairSelection {
    selected: ActivationRecord;
    other: ActivationRecord | null;
}
export declare function selectActivationPair(leftBytes: Uint8Array, rightBytes: Uint8Array): ActivationPairSelection;
export declare function metadataBaseDigest(bytes: Uint8Array): number;
//# sourceMappingURL=codec.d.ts.map