export type ThrottledFunction = (() => void) & {
    reset: () => void;
};
/**
 * Throttle a function with a given delay.
 * Similar to lodash.
 *
 * Throttling `F` for a delay of `D` means that
 * `F` will be called no more than 1 time every `D`.
 * In this implementation, `F` is called after `D`
 * has passed since the previous non-throttled invocation
 *
 * @param func  Function to throttle
 * @param delay  Throttle delay
 */
export declare function throttle(func: () => void, delay: number): ThrottledFunction;
export declare function asyncResettable<T extends (...args: any[]) => Promise<any>>(func: T): {
    run: T;
    finished: () => boolean;
    wait: () => Promise<any> | null;
    reset: () => void;
};
