import { Milliseconds } from './time';
import { Function } from '../data/function';
/**
* tick runs a function in the "next tick" using process.nextTick in node
* or setTimeout(f, 0) elsewhere.
*/
export declare const tick: (f: () => void) => void | NodeJS.Timeout;
/**
* debounce delays the application of a function until the specified time
* has passed.
*
* If multiple attempts to apply the function have occured, then each attempt
* will restart the delay process. The function will only ever be applied once
* after the delay, using the value of the final attempt for application.
*/
export declare const debounce: (f: Function, delay: Milliseconds) => Function;
/**
* throttle limits the application of a function to occur only one within the
* specified duration.
*
* The first application will execute immediately subsequent applications
* will be ignored until the duration has passed.
*/
export declare const throttle: (f: Function, duration: Milliseconds) => Function;