/**
* Cancelable debouncing of calls to trigger
* @example
waitTime
* ```ts
* const debounced = new Debouncer(a => console.log(a), 1, 100)
* debounce.trigger('first')
* debounce.trigger('second')
* // after 1ms
* // => 'second'
* ```
* @example maxWaitTime
* ```ts
* const debounced = new Debouncer(a => console.log(a), 3, 4)
* debounce.trigger('first')
* // after 1ms
* debounce.trigger('second')
* // after 1ms
* // => 'second'
* debounce.trigger('third')
* // after 2ms, 4ms elapsed since the first trigger
* // => 'third'
* ```
*/
export declare class Debouncer any> {
private cb;
private waitTime;
private maxWaitTime;
private timeout;
private maxTimeout;
private args;
private defer;
/**
*
* @param cb - trigger callback
* @param waitTime - time to wait before invoking cb
* @param maxWaitTime - maximum wait time from first triggering
*/
constructor(cb: T, waitTime: number, maxWaitTime: number);
private execute;
/**
*
* @param args - arguments to pass to cb
* @returns Promised resolved with cb return value
*/
trigger(...args: Parameters): Promise>;
/**
* Cancels pending invocation of cb
* @example
* ```ts
* const debounced = new Debouncer(a => console.log(a), 3, 4)
* debounce.trigger('first')
* debounce.cancel()
* // console.log will not be invoked
* ```
*/
cancel(): void;
setCb(cb: T): void;
}
//# sourceMappingURL=debouncer.d.ts.map