import type * as P from "@principia/prelude";
import type { Monoid } from "@principia/prelude/Monoid";
import type { URI, V } from "./model";
/**
* ```haskell
* reduceWithIndex_ :: (FoldableWithIndex t, Index k) =>
* (t a, b, ((k, b, a) -> b)) -> b
* ```
*
* @category FoldableWithIndex
* @since 1.0.0
*/
export declare const reduceWithIndex_: (fa: readonly A[], b: B, f: (i: number, b: B, a: A) => B) => B;
/**
* ```haskell
* reduceWithIndex :: (FoldableWithIndex t, Index k) =>
* (b, ((k, b, a) -> b)) -> t a -> b
* ```
*
* @category FoldableWithIndex
* @since 1.0.0
*/
export declare const reduceWithIndex: (b: B, f: (i: number, b: B, a: A) => B) => (fa: readonly A[]) => B;
/**
* ```haskell
* reduce_ :: Foldable t => (t a, b, ((b, a) -> b)) -> b
* ```
*
* @category Foldable
* @since 1.0.0
*/
export declare const reduce_: (fa: readonly A[], b: B, f: (b: B, a: A) => B) => B;
/**
* ```haskell
* reduce :: Foldable t => (b, ((b, a) -> b)) -> t a -> b
* ```
*
* @category Foldable
* @since 1.0.0
*/
export declare const reduce: (b: B, f: (b: B, a: A) => B) => (fa: readonly A[]) => B;
/**
* ```haskell
* reduceRightWithIndex_ :: (FoldableWithIndex t, Index k) =>
* (t a, b, ((k, a, b) -> b)) -> b
* ```
*
* @category FoldableWithIndex
* @since 1.0.0
*/
export declare const reduceRightWithIndex_: (fa: readonly A[], b: B, f: (i: number, a: A, b: B) => B) => B;
/**
* ```haskell
* reduceRightWithIndex :: (FoldableWithIndex t, Index k) =>
* (b, ((k, a, b) -> b)) -> t a -> b
* ```
*
* @category FoldableWithIndex
* @since 1.0.0
*/
export declare const reduceRightWithIndex: (b: B, f: (i: number, a: A, b: B) => B) => (fa: readonly A[]) => B;
/**
* ```haskell
* reduceRight_ :: Foldable t => (t a, b, ((a, b) -> b)) -> b
* ```
*
* @category Foldable
* @since 1.0.0
*/
export declare const reduceRight_: (fa: readonly A[], b: B, f: (a: A, b: B) => B) => B;
/**
* ```haskell
* reduceRight :: Foldable t => (b, ((a, b) -> b)) -> t a -> b
* ```
*
* @category Foldable
* @since 1.0.0
*/
export declare const reduceRight: (b: B, f: (a: A, b: B) => B) => (fa: readonly A[]) => B;
/**
* ```haskell
* foldMapWithIndex_ :: (Monoid m, FoldableWithIndex f, Index k) =>
* m b -> (f a, ((k, a) -> b) -> b
* ```
*
* @category FoldableWithIndex
* @since 1.0.0
*/
export declare const foldMapWithIndex_: (M: P.Monoid) => (fa: readonly A[], f: (i: number, a: A) => M) => M;
/**
* ```haskell
* foldMapWithIndex :: (Monoid m, FoldableWithIndex f, Index k) =>
* m b -> ((k, a) -> b) -> f a -> b
* ```
*
* @category FoldableWithIndex
* @since 1.0.0
*/
export declare const foldMapWithIndex: (M: P.Monoid) => (f: (i: number, a: A) => M) => (fa: readonly A[]) => M;
/**
* ```haskell
* foldMap_ :: (Monoid m, Foldable f) =>
* m b -> (f a, (a -> b)) -> b
* ```
*
* @category Foldable
* @since 1.0.0
*/
export declare const foldMap_: (M: P.Monoid) => (fa: readonly A[], f: (a: A) => M) => M;
/**
* ```haskell
* foldMap :: (Monoid m, Foldable f) => m b -> (a -> b) -> f a -> b
* ```
*
* @category Foldable
* @since 1.0.0
*/
export declare const foldMap: (M: P.Monoid) => (f: (a: A) => M) => (fa: readonly A[]) => M;
export declare const FoldableWithIndex: P.FoldableWithIndex<[URI], V>;
export declare const Foldable: P.Foldable<[URI], V>;
//# sourceMappingURL=foldable.d.ts.map