import type { ChannelAccessorContext, ChartValue } from './types.js'; export { quantile } from './transform-reduce.js'; export type TransformAccessorContext = ChannelAccessorContext; export type TransformField = { [TKey in Extract]-?: NonNullable extends TValue ? TKey : never; }[Extract]; export type TransformAccessor = (datum: TDatum, context: TransformAccessorContext) => TValue; export type TransformValue = TransformField | TransformAccessor; export type TransformValueOutput = TValue extends keyof TDatum ? TDatum[TValue] : TValue extends TransformAccessor ? TOutput : never; export type TransformKey = ChartValue | boolean | null | undefined | readonly TransformKey[]; export interface TransformLineage { readonly source: readonly TDatum[]; readonly sourceIndexes: readonly number[]; } export type TransformGroupSpec = TransformField | Readonly>>; export type TransformGroupRow = TBy extends Extract ? Pick : TBy extends Readonly> ? { readonly [TKey in keyof TBy]: Extract, TransformKey>; } : Record; export type TransformOrder = 'ascending' | 'descending'; export interface TransformOrderOptions { orderBy?: TransformValue; order?: TransformOrder; }