import { Grouper } from "../../data/Grouper"; import { View } from "../../data/View"; import { Instance } from "../Instance"; import { Prop, SortDirection, StructuredProp } from "../Prop"; import { RenderingContext } from "../RenderingContext"; import { ArrayAdapter, ArrayAdapterConfig, RecordStoreCache } from "./ArrayAdapter"; import { DataAdapterRecord } from "./DataAdapter"; export interface GroupKey { [field: string]: Prop | { value: Prop; direction: SortDirection; }; } export interface GroupingConfig { key: GroupKey; aggregates?: StructuredProp; text?: Prop; includeHeader?: boolean; includeFooter?: boolean; comparer?: ((a: any, b: any) => number) | null; header?: any; footer?: any; } export interface ResolvedGrouping extends GroupingConfig { grouper: Grouper; } export interface GroupData { $name: string; $level: number; $records: DataAdapterRecord[]; $key: string; [key: string]: any; } export interface GroupAdapterRecord extends DataAdapterRecord { group?: GroupData; grouping?: ResolvedGrouping; level?: number; } export interface GroupAdapterConfig extends ArrayAdapterConfig { aggregates?: StructuredProp; groupRecordsAlias?: string; groupRecordsName?: string; groupings?: GroupingConfig[] | null; groupName?: string; } export declare class GroupAdapter extends ArrayAdapter { aggregates?: StructuredProp; groupRecordsAlias?: string; groupRecordsName?: string; groupings?: ResolvedGrouping[] | null; groupName: string; constructor(config?: GroupAdapterConfig); init(): void; getRecords(context: RenderingContext, instance: Instance & Partial, records: T[], parentStore: View): DataAdapterRecord[]; protected processLevel(keys: any[], records: DataAdapterRecord[], result: DataAdapterRecord[], parentStore: View): void; groupBy(groupings: GroupingConfig[] | null): void; } //# sourceMappingURL=GroupAdapter.d.ts.map