/**
 * A debounced version of a function that delays its execution until after
 * a specified wait time has elapsed since the last time it was invoked.
 * Inspired by https://davidwalsh.name/javascript-debounce-function
 *
 *
 * @typeParam Args - The argument types of the original function.
 * @typeParam F - The original function type.
 * @param func - The function to debounce.
 * @param wait - The number of milliseconds to delay (default: 50).
 * @param immediate - If `true`, trigger on the leading edge instead of the trailing.
 * @returns A new debounced function with the same arguments.
 *
 * @example
 * ```ts
 * const onResize = debounce(() => console.log('resized'), 100);
 * window.addEventListener('resize', onResize);
 * ```
 */
export declare function debounce<Args extends any[], F extends (...args: Args) => any>(func: F, wait?: number, immediate?: boolean): (this: ThisParameterType<F>, ...args: Args & Parameters<F>) => void;
//# sourceMappingURL=debounce.d.ts.map