import type { IterSource, IteratorOrIterable, Predicate, StrictPredicate } from './types';
/**
 * Returns a new iterator that has each element in this iterator filtered by the predicate.
 * @param predicate A function that returns a truthy value to indicate to keep that value.
 */
export declare function filter<T extends IteratorOrIterable<any>>(arg: T, predicate: BooleanConstructor): IterableIterator<NonNullable<IterSource<T>>>;
export declare function filter<T extends IteratorOrIterable<any>>(predicate: BooleanConstructor): (arg: T) => IterableIterator<NonNullable<IterSource<T>>>;
export declare function filter<T extends IteratorOrIterable<any>, S extends IterSource<T>>(arg: T, predicate: StrictPredicate<IterSource<T>, S>): IterableIterator<S>;
export declare function filter<T extends IteratorOrIterable<any>, S extends IterSource<T>>(predicate: StrictPredicate<IterSource<T>, S>): (arg: T) => IterableIterator<S>;
export declare function filter<T extends IteratorOrIterable<any>>(arg: T, predicate: Predicate<IterSource<T>>): IterableIterator<IterSource<T>>;
export declare function filter<T extends IteratorOrIterable<any>>(predicate: Predicate<IterSource<T>>): (arg: T) => IterableIterator<IterSource<T>>;
export default filter;
//# sourceMappingURL=filter.d.ts.map