export interface EphemeralFileRecord { data: Buffer; fileName: string; purpose: string; /** MIME type for `GET /v1/files/{id}/content`. Defaults to `application/octet-stream`. */ contentType: string; createdAtMs: number; /** Wall-clock ms at which this record becomes eligible for eviction; null when TTL is disabled. */ expiresAtMs: number | null; } export type EphemeralFileEvictReason = 'ttl' | 'max_files' | 'max_bytes'; export interface EphemeralFilesStoreOptions { /** Hard cap on total bytes across the store; oldest records evicted first when exceeded. */ maxBytes?: number; /** Hard cap on number of records. */ maxFiles?: number; /** Records older than this (ms) are evicted on every put. */ ttlMs?: number; /** Optional callback fired for each evicted record (lets operators surface eviction in logs). */ onEvict?: (id: string, reason: EphemeralFileEvictReason) => void; } export interface EphemeralFilesStore { /** Store bytes and return an OpenAI-shaped `file-…` id. */ put: (record: Omit & { contentType?: string; }) => string; /** Return the record if present; does not remove. */ get: (id: string) => EphemeralFileRecord | null; /** Return all current records (newest first), without their bytes. */ list: () => Array<{ id: string; record: EphemeralFileRecord; }>; /** Remove a file by id if present. */ remove: (id: string) => void; } export declare function createEphemeralFilesStore(nowMs?: () => number, options?: EphemeralFilesStoreOptions): EphemeralFilesStore; //# sourceMappingURL=ephemeral-files-store.d.ts.map