/**
 * Open handles by integer id.
 *
 * The table every encoder used to hand-roll beside its handle type:
 * ids are dense from `firstId` upward and never reused within a run.
 * Generic because the entries differ (a FUSE core holds its
 * kernel-dialect handle beside prefetched data), while the bookkeeping
 * never does. Mirrors Python's `FileTable`.
 */
export declare class FileTable<T> {
    private nextId;
    private readonly entries;
    constructor(firstId?: number);
    /** Track an entry under a fresh id and return the id. */
    add(entry: T): number;
    /** The entry under `fd`, or undefined. */
    get(fd: number): T | undefined;
    /** Remove and return the entry under `fd`, or undefined. */
    pop(fd: number): T | undefined;
    /** Place an entry under an explicit id. */
    set(fd: number, entry: T): void;
    /** Every tracked entry. */
    values(): IterableIterator<T>;
    /** Whether an entry sits under `fd`. */
    has(fd: number): boolean;
}
//# sourceMappingURL=file_table.d.ts.map