import { E as Emitter, e as CacheEvent } from '../../../events-CkqPK7En.js';
import { Bus } from '../../bus/bus.js';
import { LocalCache } from '../facades/local-cache.js';
import { RemoteCache } from '../facades/remote-cache.js';
import { BaseDriver } from '../../drivers/base-driver.js';
import { MasterCacheOptions } from '../../mastercache-options.js';
import { CacheEntryOptions } from '../cache-entry/cache-entry-options.js';
import { d as CacheStackDrivers } from '../../../mastercache-Di19srNZ.js';
import { Logger } from 'typescript-log';
import { CacheBusMessage } from '../../types/bus.js';
import '@boringnode/bus/types/main';
import '../cache-entry/cache-entry.js';
import '../../types/driver.js';
import '../../types/provider.js';
import '../../types/helpers.js';
import '../../types/options/methods-options.js';
import '../../types/options/options.js';
import '../../types/options/drivers-options.js';
import 'knex';
import 'kysely';
import '@aws-sdk/client-dynamodb';
import 'ioredis';
import 'orchid-orm';

declare class CacheStack extends BaseDriver {
    #private;
    name: string;
    options: MasterCacheOptions;
    l1?: LocalCache;
    l2?: RemoteCache;
    bus?: Bus;
    defaultOptions: CacheEntryOptions;
    logger: Logger;
    constructor(name: string, options: MasterCacheOptions, drivers: CacheStackDrivers, bus?: Bus);
    get emitter(): Emitter;
    namespace(namespace: string): CacheStack;
    /**
     * Publish a message to the bus channel
     *
     * @returns true if the message was published, false if not
     * and undefined if a bus is not part of the stack
     */
    publish(message: CacheBusMessage): Promise<boolean | undefined>;
    emit(event: CacheEvent): void;
    serialize(value: any): string;
    deserialize(value: string): any;
}

export { CacheStack };
