import { ISignal } from 'ste-signals';
export declare function debounce<T extends (...args: any[]) => void>(func: T, delay: number): [(...args: Parameters<T>) => void, () => void];
/**
 * A debounced signal that dispatches at most once per animation frame.
 */
export declare class DebouncedSignal {
    private _dispatcher;
    private _frameRequestId;
    /**
     * Indicates whether a dispatch is currently scheduled.
     *
     * @returns `true` if a dispatch is scheduled; otherwise `false`.
     */
    get isScheduled(): boolean;
    /**
     * Returns the signal interface that subscribers can listen to.
     *
     * @returns An `ISignal` that is dispatched once per frame when requested.
     */
    get signal(): ISignal;
    /**
     * Schedules the signal to be dispatched on the next animation frame.
     * Has no effect if a dispatch is already scheduled.
     */
    requestDispatch(): void;
    /**
     * Cancels a scheduled signal dispatch if one exists.
     */
    cancel(): void;
}
