export type TFunction = (...args: unknown[]) => unknown; type TDebounceFnReturn = T extends unknown[] ? (...params: T) => void : (param: T) => void; export type TDebounce = TDebounceFnReturn & { cancel: () => void; } extends infer U ? U : never; /** * Cria uma função com debounce. * * A execução de `func` é adiada até que o intervalo `wait` termine após a última invocação. * * @param func Função que será executada com debounce. * @param wait Tempo de espera em milissegundos. * @param immediate Quando `true`, executa imediatamente na primeira chamada e aguarda o intervalo para novas execuções. * @returns Função com debounce e método `cancel`. */ export declare const debounce: (func: TFunc, wait?: number, immediate?: boolean) => ((...args: Parameters) => void) & { cancel: () => void; }; export {};