import type { TransformLineage } from './transform.js'; export type FoldField = Extract; export interface FoldOutputNames { readonly key: TKey; readonly value: TValue; } export interface FoldOptions[] = readonly FoldField[], TOutputNames extends FoldOutputNames = FoldOutputNames<'key', 'value'>> { readonly fields: TFields; readonly as?: TOutputNames; } type FoldFieldDatum, TOutputNames extends FoldOutputNames> = TField extends FoldField ? Omit | TOutputNames['key'] | TOutputNames['value']> & TransformLineage & { readonly [TKey in TOutputNames['key']]: TField; } & { readonly [TValue in TOutputNames['value']]: TDatum[TField]; } : never; export type FoldDatum[], TOutputNames extends FoldOutputNames = FoldOutputNames<'key', 'value'>> = FoldFieldDatum; type LiteralFoldFields = number extends TFields['length'] ? never : TFields; export declare function fold[]>(source: Iterable, options: { readonly fields: LiteralFoldFields; readonly as?: undefined; }): FoldDatum[]; export declare function fold[], const TOutputNames extends FoldOutputNames>(source: Iterable, options: { readonly fields: LiteralFoldFields; readonly as: TOutputNames; }): FoldDatum[]; export {};