import { Pausable, MapSources, MapOldSources } from '../utils/types.js';
import { WatchStopHandle, WatchSource, WatchCallback } from '../watch/index.js';
import { WatchWithFilterOptions } from '../watchWithFilter/index.js';
import 'solid-js';
import 'solid-js/types/reactive/signal';
import '../utils/filters.js';

interface WatchPausableReturn extends Pausable {
    stop: WatchStopHandle;
}
declare function watchPausable<T extends Readonly<Array<WatchSource<unknown>>>>(sources: [...T], cb: WatchCallback<MapSources<T>, MapOldSources<T>>, options?: WatchWithFilterOptions): WatchPausableReturn;
declare function watchPausable<T>(source: WatchSource<T>, cb: WatchCallback<T>, options?: WatchWithFilterOptions): WatchPausableReturn;
declare function watchPausable<T extends object>(source: T, cb: WatchCallback<T>, options?: WatchWithFilterOptions): WatchPausableReturn;

export { WatchPausableReturn, watchPausable as pausableWatch, watchPausable };