import { ModuleMetadata, InjectionToken, OptionalFactoryDependency, Type, DynamicModule, OnApplicationBootstrap, OnApplicationShutdown } from '@nestjs/common';
import CacheMongoose, { CacheOptions } from '../index.mjs';
import 'mongoose';
import 'ioredis';

type CacheModuleOptions = CacheOptions;
interface CacheOptionsFactory {
    createCacheOptions(): CacheModuleOptions | Promise<CacheModuleOptions>;
}
interface CacheModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
    isGlobal?: boolean;
    inject?: (InjectionToken | OptionalFactoryDependency)[];
    useClass?: Type<CacheOptionsFactory>;
    useExisting?: Type<CacheOptionsFactory>;
    useFactory?: (...args: any[]) => CacheModuleOptions | Promise<CacheModuleOptions>;
}

declare class CacheModule {
    static forRoot(options: CacheModuleOptions & {
        isGlobal?: boolean;
    }): DynamicModule;
    static forRootAsync(options: CacheModuleAsyncOptions): DynamicModule;
    private static createAsyncProviders;
}

declare const CACHE_OPTIONS: unique symbol;
declare class CacheService implements OnApplicationBootstrap, OnApplicationShutdown {
    private readonly logger;
    private readonly options;
    private cacheMongoose;
    constructor(options: CacheModuleOptions);
    get instance(): CacheMongoose;
    onApplicationBootstrap(): Promise<void>;
    onApplicationShutdown(): Promise<void>;
    clear(customKey?: string): Promise<void>;
}

export { CACHE_OPTIONS, CacheModule, CacheService };
export type { CacheModuleAsyncOptions, CacheModuleOptions, CacheOptionsFactory };
//# sourceMappingURL=index.d.mts.map
