/**
 * @module decorator
 */
/**
 * Add debounce to a function.
 *
 * @typeparam T type or interface of origin function.
 * @param time debounce time.
 * @returns The behavior is the same as origin function, but with debounce.
 *
 * ```ts
 * const origin = () => ...;
 * const result = debounce(250)(origin);
 * ```
 *
 * ```ts
 * class Greeter {
 * 	greeting: string;
 * 	constructor(message: string) {
 * 		this.greeting = message;
 * 	}
 *
 * 	@debounce(500)
 * 	greet = () => `Hello, ${this.greeting}`;
 * }
 * ```
 */
export declare function debounce<T extends (...args: any[]) => void>(time: number): (fn: T) => (...args: Parameters<T>) => void;
