import type { TransformValue } from './transform.js'; export type TransformNumericReducer = 'count' | 'sum' | 'mean' | 'min' | 'max'; export interface TransformReduceContext { values: readonly number[]; data: readonly TDatum[]; indexes: readonly number[]; group: Readonly>; } export type TransformReducer = TransformNumericReducer | ((context: TransformReduceContext) => TResult); export type TransformOutputSpec = { reduce: 'count'; value?: never; } | { value: TransformValue; reduce: TransformNumericReducer; } | { value?: TransformValue; reduce: (context: TransformReduceContext) => TResult; }; export type TransformOutputs = Record>; export type TransformOutputValue = TSpec extends { reduce: (context: any) => infer TResult; } ? TResult : number; export type TransformOutputRow = { readonly [TKey in keyof TOutputs]: TransformOutputValue; }; export declare function quantile(probability: number): (context: TransformReduceContext) => number; export declare function median(context: TransformReduceContext): number; export declare function variance({ values }: TransformReduceContext): number; export declare function deviation(context: TransformReduceContext): number; export declare function first({ values }: TransformReduceContext): number; export declare function last({ values }: TransformReduceContext): number; export declare function delta({ values }: TransformReduceContext): number; export declare function ratio({ values }: TransformReduceContext): number;