import { type Observable, type ObservableInput, Subject } from 'rxjs';
import type { ObservableType } from '../types';
export type UseDebounceOptions<TArgs extends any[]> = {
    debounce: ((value: TArgs) => ObservableInput<unknown>) | number;
    queuer?: Subject<TArgs>;
};
export declare const useDebounce: <TFn extends (...args: TArgs) => TType, TType extends ObservableInput<any> = ReturnType<TFn>, TArgs extends any[] = Parameters<TFn>>(fn: TFn, options: UseDebounceOptions<TArgs>) => {
    value$: Observable<TType extends ObservableInput<any> ? ObservableType<TType> : TType>;
    next: (...args: TArgs) => void;
    idle: boolean;
};
