import { Cache } from "./Cache.js";
import { AgentContext } from "../../agent/context/AgentContext.js";

//#region src/modules/cache/InMemoryLruCache.d.ts
interface InMemoryLruCacheOptions {
  /** The maximum number of entries allowed in the cache */
  limit: number;
}
/**
 * In memory LRU cache.
 *
 * This cache can be used with multiple agent context instances, however all instances will share the same cache.
 * If you need the cache to be isolated per agent context instance, make sure to use a different cache implementation.
 */
declare class InMemoryLruCache implements Cache {
  private readonly cache;
  constructor({
    limit
  }: InMemoryLruCacheOptions);
  get<CacheValue>(_agentContext: AgentContext, key: string): Promise<CacheValue | null>;
  set<CacheValue>(_agentContext: AgentContext, key: string, value: CacheValue, expiresInSeconds?: number): Promise<void>;
  clear(): void;
  remove(_agentContext: AgentContext, key: string): Promise<void>;
  private removeExpiredItems;
}
//#endregion
export { InMemoryLruCache, InMemoryLruCacheOptions };
//# sourceMappingURL=InMemoryLruCache.d.ts.map