export interface MapItemResult { index: number; item: unknown; result: T; success: boolean; error?: Error; duration: number; } export interface MapProgressEvent { total: number; completed: number; successful: number; failed: number; currentItem?: MapItemResult; pending: number; running: number; } export interface MapNodeConfig { name: string; items: (state: S) => unknown[]; mapper: (item: unknown, index: number, state: S) => Promise | T; concurrency?: number; continueOnError?: boolean; onProgress?: (progress: MapProgressEvent) => void; filter?: (item: unknown, index: number, state: S) => boolean; transform?: (item: unknown, index: number, state: S) => unknown; timeout?: number; retry?: { maxAttempts: number; delay?: number; backoff?: 'linear' | 'exponential'; }; } export interface ReduceNodeConfig { name: string; initial: R | ((state: S) => R); reducer: (accumulator: R, item: MapItemResult, state: S) => R; streaming?: boolean; successOnly?: boolean; finalize?: (result: R, state: S) => R; } export interface MapReduceResult { results: MapItemResult[]; reduced: R; stats: { total: number; successful: number; failed: number; duration: number; avgItemDuration: number; }; } export interface MapReduceNodeConfig { name: string; map: Omit, 'name'>; reduce: Omit, 'name'>; } export declare function executeMap(state: S, config: MapNodeConfig): Promise[]>; export declare function executeReduce(results: MapItemResult[], state: S, config: ReduceNodeConfig): R; export declare function executeMapReduce(state: S, config: MapReduceNodeConfig): Promise>; export declare function mapNode(name: string, config: Omit, 'name'>): MapNodeConfig; export declare function reduceNode(name: string, config: Omit, 'name'>): ReduceNodeConfig; export declare function mapReduceNode(name: string, config: Omit, 'name'>): MapReduceNodeConfig; export declare function parallelMap(state: S, items: (state: S) => unknown[], mapper: (item: unknown, index: number, state: S) => Promise | T, options?: { continueOnError?: boolean; onProgress?: (progress: MapProgressEvent) => void; }): Promise[]>; export declare function sequentialMap(state: S, items: (state: S) => unknown[], mapper: (item: unknown, index: number, state: S) => Promise | T, options?: { continueOnError?: boolean; onProgress?: (progress: MapProgressEvent) => void; }): Promise[]>; export declare function batchedMap(state: S, items: (state: S) => unknown[], mapper: (item: unknown, index: number, state: S) => Promise | T, batchSize: number, options?: { continueOnError?: boolean; onProgress?: (progress: MapProgressEvent) => void; }): Promise[]>; export declare function collect(): Omit, 'name'>; export declare function sum(): Omit, 'name'>; export declare function count(): Omit, 'name'>; export declare function first(): Omit, 'name'>; export declare function last(): Omit, 'name'>; export declare function groupBy(keyFn: (result: T, item: MapItemResult) => K): Omit>, 'name'>; export declare function partition(predicate: (result: T, item: MapItemResult) => boolean): Omit, 'name'>; export declare function flatMap(): Omit, 'name'>; export declare function stats(): Omit, 'name'>; //# sourceMappingURL=map-reduce.d.ts.map