import type { BaseDocument } from "../types/index.js";
export default class Cache<T = BaseDocument> {
    #private;
    constructor(cacheTimout?: number, maxSize?: number);
    /**
     * Gets the current cache timeout duration.
     * Defaults to 60 seconds (1 minute).
     * @returns The duration in milliseconds after which cached items are automatically removed.
     */
    get timeout(): number;
    /**
     * Sets the cache timeout duration.
     *
     * @param timeout - The duration in milliseconds after which the cached item should be removed.
     */
    set timeout(timeout: number);
    /**
     * Updates the cache with the given id and value.
     *
     * If the cache has reached its maximum size, it will remove 10% of the items
     * in the cache before adding the new item.
     *
     * @param id - The id of the item to be updated.
     * @param value - The value of the item to be updated.
     */
    update(id: string, value: T): void;
    /**
     * Retrieves an item from the cache by its id.
     *
     * If the item is not found or has exceeded the cache timeout, it returns null.
     * Otherwise, it returns the cached value.
     *
     * @param id - The id of the item to retrieve from the cache.
     * @returns The cached value, or null if not found or expired.
     */
    get(id: string): T | null;
    /**
     * Removes the item with the specified id from the cache.
     *
     * @param id - The id of the item to be removed from the cache.
     */
    delete(id: string): void;
    /**
     * Destroys the cache by stopping the automatic cleanup interval.
     *
     * Use this method when you are finished with the cache.
     */
    destroy(): void;
}
