import { Duration } from './types/helpers.js';
import { E as Emitter } from '../events-CkqPK7En.js';
import { GracePeriodOptions, FactoryTimeoutOptions, RawMasterCacheOptions } from './types/options/options.js';
import { Logger } from 'typescript-log';
import './types/bus.js';
import '@boringnode/bus/types/main';

/**
 * The default options to use throughout the library
 *
 * Some of them can be override on a per-cache basis
 * or on a per-operation basis
 */
declare class MasterCacheOptions {
    #private;
    /**
     * The default TTL for all caches
     *
     * @default 30m
     */
    ttl: Duration;
    /**
     * Default prefix for all caches
     */
    prefix: string;
    /**
     * The grace period options
     */
    gracePeriod: GracePeriodOptions;
    /**
     * Default early expiration percentage
     */
    earlyExpiration: number;
    /**
     * Whether to suppress L2 cache errors
     */
    suppressL2Errors: boolean;
    /**
     * The soft and hard timeouts for the factories
     */
    timeouts?: FactoryTimeoutOptions;
    /**
     * The logger used throughout the library
     */
    logger: Logger;
    /**
     * The emitter used throughout the library
     */
    emitter: Emitter;
    /**
     * Max time to wait for the lock to be acquired
     */
    lockTimeout?: Duration;
    constructor(options: RawMasterCacheOptions);
    cloneWith(options: RawMasterCacheOptions): MasterCacheOptions;
}

export { MasterCacheOptions };
