import type * as P from "@principia/prelude";
import type { Monoid } from "@principia/prelude/Monoid";
import type { Option, URI, V } from "./model";
/**
* ```haskell
* reduce_ :: Foldable f => (f a, b, ((b, a) -> b)) -> b
* ```
*/
export declare const reduce_: (fa: Option, b: B, f: (b: B, a: A) => B) => B;
/**
* ```haskell
* reduce :: Foldable f => (b, ((b, a) -> b)) -> f a -> b
* ```
*/
export declare const reduce: (b: B, f: (b: B, a: A) => B) => (fa: Option) => B;
/**
* ```haskell
* reduceRight_ :: Foldable f => (f a, b, ((b, a) -> b)) -> b
* ```
*/
export declare const reduceRight_: (fa: Option, b: B, f: (a: A, b: B) => B) => B;
/**
* ```haskell
* reduceRight :: Foldable f => (b, ((b, a) -> b)) -> f a -> b
* ```
*/
export declare const reduceRight: (b: B, f: (a: A, b: B) => B) => (fa: Option) => B;
/**
* ```haskell
* foldMap_ :: (Foldable f, Monoid m) => Instance m b -> (f a, (a -> b)) -> b
* ```
*/
export declare const foldMap_: (M: P.Monoid) => (fa: Option, f: (a: A) => M) => M;
/**
* ```haskell
* foldMap :: (Foldable f, Monoid m) => Instance m b -> (a -> b) -> f a -> b
* ```
*/
export declare const foldMap: (M: P.Monoid) => (f: (a: A) => M) => (fa: Option) => M;
export declare const Foldable: P.Foldable<[URI], V>;
//# sourceMappingURL=foldable.d.ts.map