import type { Either } from './Either'; import type { FunctorMin } from './Functor'; import type { Option } from './Option'; import type { Predicate } from './Predicate'; import type { Refinement } from './Refinement'; import { Functor } from './Functor'; import * as HKT from './HKT'; export interface Filterable extends Functor { readonly partitionMap_: PartitionMapFn_; readonly partitionMap: PartitionMapFn; readonly partition_: PartitionFn_; readonly partition: PartitionFn; readonly filterMap_: FilterMapFn_; readonly filterMap: FilterMapFn; readonly filter_: FilterFn_; readonly filter: FilterFn; } export declare type FilterableMin = FunctorMin & ({ readonly filterMap_: FilterMapFn_; readonly partitionMap_: PartitionMapFn_; } | { readonly filterMap_: FilterMapFn_; readonly partitionMap_: PartitionMapFn_; readonly filter_: FilterFn_; readonly partition_: PartitionFn_; }); export declare function Filterable(F: FilterableMin): Filterable; export interface FilterFn { (refinement: Refinement): (fa: HKT.Kind) => HKT.Kind; (predicate: Predicate): (fa: HKT.Kind) => HKT.Kind; } export interface FilterFn_ { (fa: HKT.Kind, refinement: Refinement): HKT.Kind; (fa: HKT.Kind, predicate: Predicate): HKT.Kind; } export interface FilterMapFn { (f: (a: A) => Option): (fa: HKT.Kind) => HKT.Kind; } export interface FilterMapFn_ { (fa: HKT.Kind, f: (a: A) => Option): HKT.Kind; } export interface PartitionFn { (refinement: Refinement): (fa: HKT.Kind) => readonly [HKT.Kind, HKT.Kind]; (predicate: Predicate): (fa: HKT.Kind) => readonly [HKT.Kind, HKT.Kind]; } export interface PartitionFn_ { (fa: HKT.Kind, refinement: Refinement): readonly [HKT.Kind, HKT.Kind]; (fa: HKT.Kind, predicate: Predicate): readonly [HKT.Kind, HKT.Kind]; } export interface PartitionMapFn { (f: (a: A) => Either): (fa: HKT.Kind) => readonly [HKT.Kind, HKT.Kind]; } export interface PartitionMapFn_ { (fa: HKT.Kind, f: (a: A) => Either): readonly [HKT.Kind, HKT.Kind]; } //# sourceMappingURL=Filterable.d.ts.map