export type Accessor = string | ((value: T) => V); export declare const accessBy: (value: T, accessor: Accessor) => any; export declare const median: (values: number[]) => number; export type NumericalValues = { min?: number; max?: number; mean?: number; median?: number; total: number; count: number; }; /** * Returns an array of unique values. */ export declare const numericalValues: (values: T[], accessor: Accessor) => NumericalValues; /** * Returns an array of unique values. */ export declare const reduceSet: (values: T[], accessor: Accessor) => Set; /** * Returns an object containing values grouped by the given key accessor. */ export declare const reduceGroupBy: (values: T[], accessor: Accessor) => Map; /** * Generic composable reducer interface. */ export interface Reducer { /** * Get initial state. */ initialState(): S; /** * Apply event to state. */ reduce(state: S, event: T): S; } /** * Applies the reducer to the array of values. */ export declare const reduceSeries: (reducer: Reducer, events: T[]) => S; /** * Reducer to group values. */ export declare const createGroupReducer: (groupBy: (value: T) => string, sub: Reducer) => Reducer>; export type TimeRecord = { timestamp: Date | number | string; }; export type TimeBucket = { start: number; period: number; count: number; }; export declare const getDate: (value: Date | number | string) => Date; /** * Reducer to group by time period. */ export declare const createBucketReducer: (period: number) => Reducer; //# sourceMappingURL=reducers.d.ts.map