import { Duration } from '../../types/helpers.cjs';
import { RawCommonOptions } from '../../types/options/options.cjs';
import 'typescript-log';
import '../../../events-BJQnbTp3.cjs';
import '../../types/bus.cjs';
import '@boringnode/bus/types/main';

declare class CacheEntryOptions {
    #private;
    /**
     * Unique identifier that will be used when logging
     * debug information.
     */
    id: string;
    /**
     * Logical TTL is when the value is considered expired
     * but still can be in the cache ( Grace period )
     */
    logicalTtl?: number;
    /**
     * Physical TTL is the time when value will be automatically
     * removed from the cache. This is the Grace period
     * duration
     */
    physicalTtl?: number;
    /**
     * Early expiration TTL is when the value should be
     * refreshed in the background.
     */
    earlyExpireTtl?: number;
    /**
     * Timeouts for the cache operations
     */
    timeouts?: {
        soft?: number;
        hard?: number;
    };
    /**
     * Resolved grace period options
     */
    gracePeriod: {
        enabled: false;
    } | {
        enabled: true;
        duration?: number;
        fallbackDuration?: number;
    };
    /**
     * Max time to wait for the lock to be acquired
     */
    lockTimeout?: number;
    constructor(options?: RawCommonOptions, defaults?: Partial<RawCommonOptions>);
    /**
     * Returns a new instance of `CacheItemOptions` with the same
     * options as the current instance, but with any provided
     * options overriding the current
     *
     * For performance reasons, if no options are provided, the
     * current instance is returned
     */
    cloneWith(options?: Partial<RawCommonOptions>): CacheEntryOptions;
    get isGracePeriodEnabled(): boolean | undefined;
    get suppressL2Errors(): boolean | undefined;
    /**
     * Set a new logical TTL
     */
    setLogicalTtl(ttl: Duration): this;
    /**
     * Compute the logical TTL timestamp from now
     */
    logicalTtlFromNow(): number | undefined;
    /**
     * Compute the physical TTL timestamp from now
     */
    physicalTtlFromNow(): number | undefined;
    /**
     * Compute the early expiration TTL timestamp from now
     */
    earlyExpireTtlFromNow(): number | undefined;
    /**
     * Compute the lock timeout we should use for the
     * factory
     */
    factoryTimeout(hasFallbackValue: boolean): number | undefined;
    /**
     * Compute the maximum time we should wait for the
     * lock to be acquired
     */
    getApplicableLockTimeout(hasFallbackValue: boolean): number | undefined;
}

export { CacheEntryOptions };
