import { StorageKey, StorageKeyType } from '../../core/storage/utils/storage-key';
export interface CacheMetadata {
    createdAt: number;
    updatedAt: number;
    expiresAt: number;
    tags?: string[];
}
export interface CacheOptions {
    ttl?: number;
    cleanup?: {
        enabled: boolean;
        interval?: number;
    };
    invalidateOnError?: boolean;
}
export interface CacheEntry<Data, Params extends Record<string, any> = any> {
    data: Data;
    metadata: CacheMetadata;
    params: Params;
}
export declare class CacheUtils {
    static createMetadata(ttl?: number, tags?: string[]): CacheMetadata;
    /** ISO timestamps are derived lazily (for logging/debugging) instead of being stored in the cache payload. */
    static formatDateTime(timestamp: number): string;
    static isExpired(metadata: CacheMetadata): boolean;
    static updateMetadata(metadata: CacheMetadata): CacheMetadata;
    static createKey(...parts: (string | number)[]): StorageKey;
    static createApiKey(endpoint: string, params?: Record<string, any>): [StorageKeyType, Record<string, any> | undefined];
    static hasAnyTag(metadata: CacheMetadata, tags?: string[]): boolean;
}
