import type { ReversibleFormatter } from "./common.js";
/**
 * Class representing a Debounce.
 * @template T
 * @implements {ReversibleFormatter<T, Promise<T>>}
 * @implements {Disposable}
 */
export declare class Debounce<T> implements ReversibleFormatter<T, Promise<T>>, Disposable {
    private delay;
    /**
     * Create a Debounce.
     * @param {number} delay - The delay in milliseconds.
     */
    constructor(delay: number);
    /**
     * Dispose of the Debounce.
     */
    [Symbol.dispose](): void;
    private timeout;
    private event;
    /**
     * Unformat a value.
     * @param {T} value - The value to unformat.
     * @returns {Promise<T>} A promise that resolves to the unformatted value.
     */
    unformat(value: T): Promise<T>;
    /**
     * Format a value.
     * @param {T} value - The value to format.
     * @returns {T} The formatted value.
     */
    format(value: T): T;
}
