export type Logger = (line: string) => void;
export interface PtyCensusSnapshot {
    /** Count of live trackers (livePtyCount()). */
    live: number;
    /** RC_DAEMON_CAPACITY — the daemon's own concurrent-session cap. */
    capacity: number;
    /** VmRSS (kB) per live pid whose /proc entry exists; gone pids excluded. */
    rssListKb: number[];
    /** Live pids whose /proc/<pid>/status was absent/unreadable (not dropped). */
    goneCount: number;
    /** /proc/meminfo MemTotal (kB). */
    sysTotalKb: number;
    /** /proc/meminfo MemAvailable (kB). Named "avail" (not "free") because the
     *  source is MemAvailable and the rendered field is sysAvailMb. */
    sysAvailKb: number;
    /** /proc/sys/fs/file-nr field 1 — allocated file handles. */
    fdOpen: number;
    /** /proc/sys/fs/file-nr field 3 — max file handles. */
    fdMax: number;
}
/** Pure renderer — no I/O. One structured line from an injected snapshot. */
export declare function formatPtyCensus(s: PtyCensusSnapshot): string;
/** Impure — gathers a snapshot from the live tracker map and /proc. A pid
 *  whose /proc entry is gone contributes 0 to RSS and increments goneCount
 *  (never silently dropped). On a non-Linux host (no /proc) the memory and
 *  fd fields read 0; the pure formatter is the unit-tested surface and the
 *  collector is exercised on the Pi. */
export declare function collectPtyCensus(): PtyCensusSnapshot;
export interface PtyCensus {
    start(): void;
    stop(): void;
    /** Collect + log one census line synchronously. Returns the snapshot. */
    tickOnce(): PtyCensusSnapshot;
}
export interface PtyCensusDeps {
    intervalMs: number;
    logger: Logger;
}
export declare function createPtyCensus(deps: PtyCensusDeps): PtyCensus;
//# sourceMappingURL=pty-census.d.ts.map