import { AuthParams, ID } from '@zeniai/client-epic-state';
/**
 * Stable key per tenant + attachment (preferred) or tenant + download URL.
 */
export declare function buildReceiptBlobCacheKey(tenantId: string, attachmentId: ID | undefined, fileDownloadUrl: string): string;
/**
 * Returns a cached blob URL if present (updates LRU order). Does not fetch.
 */
export declare function getCachedReceiptBlobUrl(key: string): string | undefined;
/**
 * Returns an object URL for the file, using the LRU cache when possible.
 * Callers must not revoke URLs returned from here — the cache owns them until LRU eviction.
 */
export declare function getOrFetchReceiptBlobObjectUrl(cacheKey: string, fileDownloadUrl: string, authParams: AuthParams, signal?: AbortSignal): Promise<string>;
/** Test-only: clear cache and revoke all URLs. */
export declare function __resetReceiptBlobCacheForTests(): void;
