import type { MetadataFile } from "./state-machine";
export declare const OWNED_FILE_NAMES: readonly ["arena.bin", "metadata-a.bin", "metadata-b.bin", "activation.bin"];
export type OwnedFileName = (typeof OWNED_FILE_NAMES)[number];
export type MetadataFileName = Extract<OwnedFileName, "metadata-a.bin" | "metadata-b.bin">;
export declare function metadataFileName(file: MetadataFile): MetadataFileName;
export interface RepackedPortEntry {
    name: string;
    kind: "file" | "directory";
}
export interface RepackedFileHandle {
    readonly name: OwnedFileName;
    getSize(label: string): number;
    read(target: Uint8Array, at: number, label: string): number;
    write(source: Uint8Array, at: number, label: string): number;
    truncate(size: number, label: string): void;
    flush(label: string): void;
    close(): void;
}
export interface RepackedPort {
    enumerate(label: string): Promise<readonly RepackedPortEntry[]>;
    acquire(name: OwnedFileName, label: string): Promise<RepackedFileHandle>;
}
export declare class PortWriteError extends Error {
    constructor(label: string);
}
export declare function readExact(handle: RepackedFileHandle, offset: bigint, length: number, maximumLength: number, label: string): Uint8Array;
export declare function writeExact(handle: RepackedFileHandle, offset: bigint, bytes: Uint8Array, label: string): void;
export declare function truncateChecked(handle: RepackedFileHandle, size: bigint, label: string): void;
export declare function arenaByteOffset(extentId: bigint, extentSize: number, withinExtent?: number): bigint;
//# sourceMappingURL=port.d.ts.map