import type { ApplicationService } from '@adonisjs/core/types'; import type { CacheEvents } from 'bentocache/types'; import type { CacheService } from '../src/types.ts'; /** * Extend Adonis.js types to include cache */ declare module '@adonisjs/core/types' { /** * Adding cache type to the application container */ interface ContainerBindings { 'cache.manager': CacheService; } /** * Add cache events to the application events list */ interface EventsList { 'cache:cleared': CacheEvents['cache:cleared']; 'cache:deleted': CacheEvents['cache:deleted']; 'cache:hit': CacheEvents['cache:hit']; 'cache:miss': CacheEvents['cache:miss']; 'cache:written': CacheEvents['cache:written']; 'bus:message:published': CacheEvents['bus:message:published']; 'bus:message:received': CacheEvents['bus:message:received']; } } /** * Cache provider to register cache specific bindings */ export default class CacheProvider { #private; protected app: ApplicationService; constructor(app: ApplicationService); /** * Register bindings */ register(): void; /** * Boot provider */ boot(): Promise; /** * Gracefully shutdown connections when app goes down */ shutdown(): Promise; }