import type { FilterConfig, PaginationConfig, Measure, Dimension, GroupConfig, AggregationType, Group, MeasureConfig, PivotTableState, AxisConfig } from '@mindfiredigital/pivothead'; export type PivotDataRecord = Record; export interface IField { uniqueName: string; caption?: string; dataType: string; } export interface FormatOptions { type?: 'currency' | 'number' | 'percentage' | 'date'; currency?: string; locale?: string; decimals?: number; thousandSeparator?: string; decimalSeparator?: string; align?: 'left' | 'right' | 'center'; currencyAlign?: 'left' | 'right'; nullValue?: string | null; percent?: boolean; } export interface EnhancedPivotEngine> { getState(): PivotTableState; subscribe(fn: (state: PivotTableState) => void): () => void; setLayout(rows: AxisConfig[], columns: AxisConfig[], measures: MeasureConfig[]): void; applyFilters(filters: FilterConfig[]): void; getFilterState(): FilterConfig[]; setMeasures(measures: Measure[]): void; setMeasures(measures: MeasureConfig[]): void; setDimensions(dimensions: Dimension[]): void; setGroupConfig(config: GroupConfig | null): void; setAggregation(type: AggregationType): void; sort(field: string, direction: 'asc' | 'desc'): void; formatValue(value: unknown, field: string): string; updateFieldFormatting(field: string, format: FormatOptions): void; getFieldAlignment(field: string): string; getGroupedData(): Group[]; getOrderedColumnValues(): string[] | null; getOrderedRowValues(): string[] | null; setCustomFieldOrder(fieldName: string, order: string[], isRowField?: boolean): void; exportToHTML(fileName: string): void; exportToPDF(fileName: string): void; exportToExcel(fileName: string): void; openPrintDialog(): void; dragRow(fromIndex: number, toIndex: number): void; dragColumn(fromIndex: number, toIndex: number): void; swapDataRows(fromIndex: number, toIndex: number): void; swapRawDataRows(fromIndex: number, toIndex: number): void; swapDataColumns(fromIndex: number, toIndex: number): void; setRowGroups(rowGroups: Group[]): void; setColumnGroups(columnGroups: Group[]): void; toggleRowExpansion(rowId: string): void; isRowExpanded(rowId: string): boolean; setPagination(config: PaginationConfig): void; getPagination(): PaginationConfig; getPaginationState(): PaginationConfig; setDataHandlingMode(mode: 'raw' | 'processed'): void; getDataHandlingMode(): 'raw' | 'processed'; updateDataSource(newData: T[]): void; reset(): void; } export interface PivotOptions { rows?: (string | AxisConfig)[]; columns?: (string | AxisConfig)[]; measures?: MeasureConfig[]; groupConfig?: GroupConfig; }