import type { CacheDependency } from '../interfaces/cache-dependency.interface'; /** * Chain dependency - combines multiple dependencies * * The cache is invalidated when ANY of the dependencies change. * This allows you to create complex invalidation logic by combining simpler dependencies. * * @example * ```typescript * // Invalidate when either user data changes OR config changes * @Cacheable({ * key: (id) => `user:${id}:view`, * dependencies: [ * new ChainDependency([ * new TagDependency(['user-data']), * new CallbackDependency(() => ConfigService.get('app.version')), * new DbDependency('SELECT updated_at FROM users WHERE id = ?', (id) => [id]) * ]) * ] * }) * async getUserView(id: string) { } * ``` */ export declare class ChainDependency implements CacheDependency { private readonly dependencies; constructor(dependencies: CacheDependency[]); getKey(): string; getData(): Promise>; isChanged(oldData: Array<{ key: string; data: any; }>): Promise; reset(): Promise; /** * Get all dependencies in this chain */ getDependencies(): CacheDependency[]; /** * Check which dependencies have changed */ getChangedDependencies(oldData: Array<{ key: string; data: any; }>): Promise; }