import { IterableElementBase, IterableEntryBase } from '../../../data-structures'; import { LinearBase } from '../../../data-structures/base/linear-base'; export type EntryCallback = (value: V, key: K, index: number, original: IterableEntryBase) => R; export type ElementCallback = (element: E, index: number, original: IterableElementBase) => RT; export type ReduceEntryCallback = ( accumulator: R, value: V, key: K, index: number, original: IterableEntryBase ) => R; export type ReduceElementCallback = ( accumulator: U, value: E, index: number, self: IterableElementBase ) => U; export type ReduceLinearCallback = ( accumulator: RT, element: E, index: number, original: LinearBase ) => RT; export type IterableElementBaseOptions = { toElementFn?: (rawElement: R) => E; }; export type LinearBaseOptions = IterableElementBaseOptions & { maxLen?: number; };