export interface IShuffledElement { element: T; shuffleIndex: number; } export type GroupMatchingFunction = (value: T) => string; export interface IGrouping { [index: string]: T[]; } export type TransformFunction = (item: T) => R;