import { ServiceProperties } from 'knifecycle'; import { type LogService } from './log.js'; import { type JsonValue } from 'type-fest'; import { type DelayService } from './delay.js'; export interface LRUPoolManagerService { create: (config: U) => Promise; release: (item: T) => Promise; } export interface LRUPoolServiceConfig { MAX_POOL_SIZE: number; POOL_TTL?: number; } export type LRUPoolServiceDependencies = LRUPoolServiceConfig & { poolManager: LRUPoolManagerService; delay: DelayService; log?: LogService; }; export interface LRUPoolService { use: (config: U) => Promise; } export interface LRUPoolProvider { service: LRUPoolService; dispose: () => Promise; } /** * Instantiate the LRU Pool service * @name initRandom * @function * @param {Object} services The services to inject * @param {Object} [services.log = noop] A logging function * @return {Promise} A promise of the LRUPool service * @example * import { * DEFAULT_LOGGER, * initLog, * initLRUPool * } from 'common-services'; * * const log = await initLog({ * logger: DEFAULT_LOGGER, * }); * * const random = await initLRUPool({ * MAX_POOL_SIZE: 50, * poolManager: { * // ... * }, * log, * }); */ export declare function initLRUPool({ MAX_POOL_SIZE, POOL_TTL, poolManager, delay, log, }: LRUPoolServiceDependencies): Promise<{ service: { use(config: U): Promise; }; dispose: () => Promise; }>; declare const _default: ServiceProperties & typeof initLRUPool; export default _default;