import { KVGroupTransform } from '../types/base'; import { ItemType } from '../types'; import { Mapper } from 'augmentative-iterable'; /** * Return a transformation function for use in group operation to guarantee distinct elements for each group, following the informed grouping mapper * @param valueDistinctMapper must return the unicity key. The unicity is respected by group */ export declare function getGroupingDistinct(valueDistinctMapper: keyof T): KVGroupTransform; /** * Return a transformation function for use in group operation to guarantee distinct elements for each group, following the informed grouping mapper * @param valueMapper maps the value for a Iterable of values. Useful if you need to flat map your values per group somehow * @param valueDistinctMapper must return the unicity key. The unicity is respected by group */ export declare function getGroupingDistinct = ItemType>(valueMapper: KT, valueDistinctMapper: keyof ItemType): KVGroupTransform; /** * Return a transformation function for use in group operation to guarantee distinct elements for each group, following the informed grouping mapper * @param valueDistinctMapper must return the unicity key. The unicity is respected by group */ export declare function getGroupingDistinct(valueDistinctMapper: Mapper): KVGroupTransform; /** * Return a transformation function for use in group operation to guarantee distinct elements for each group, following the informed grouping mapper * @param valueMapper maps the value for a Iterable of values. Useful if you need to flat map your values per group somehow * @param valueDistinctMapper must return the unicity key. The unicity is respected by group */ export declare function getGroupingDistinct(valueMapper: Mapper>, valueDistinctMapper?: Mapper | keyof NewT): KVGroupTransform;