import { PreviewInfo } from '../Utilities/Interface/Preview';
import { InternalState } from './InternalState';
import { BulkUpdateValidationResult } from '../Strategy/Interface/IBulkUpdateModule';
import { CellAddress, CellDataChangedInfo, GridCell, SmartEditOperation } from '../types';
import type { IPushPullState, IPushPullReport, IPushPullDomain } from './IPushPullState';
import { OpenFinState, OpenFinReport } from './OpenFinState';
import { AdaptableAlert } from './Common/AdaptableAlert';
import { CellHighlightInfo } from './Common/CellHighlightInfo';
import { RowHighlightInfo } from './Common/RowHighlightInfo';
import { SystemStatusMessageInfo } from './Common/SystemStatusMessageInfo';
import { SummaryOperation } from './Common/Enums';
import { ChartModel } from '@ag-grid-community/core';
import { ExternalChartDefinition } from './ChartingState';
import { CachedQuery } from './NamedQueryState';
import { ProgressIndicatorConfig } from './Common/ProgressIndicatorConfig';
export type { IPushPullReport, IPushPullDomain };
export type { OpenFinReport };
export type DataChangeHistoryMode = 'ACTIVE' | 'INACTIVE' | 'SUSPENDED';
export type SystemRowSummary = {
    Position: 'Top' | 'Bottom';
    RowData: Record<string, any>;
};
/**
 * Internal state, used by Adaptable during a session; none of it is provided through Predefined Config, nor is it persisted
 */
export interface SystemState extends InternalState, IPushPullState, OpenFinState {
    AdaptableAlerts: AdaptableAlert[];
    SystemStatusMessages: SystemStatusMessageInfo[];
    HighlightedCells: CellHighlightInfo[];
    HighlightedRows: RowHighlightInfo[];
    IsValidSmartEditSelection: boolean;
    SmartEditPreviewInfo: PreviewInfo;
    BulkUpdateValidationResult: BulkUpdateValidationResult;
    BulkUpdatePreviewInfo: PreviewInfo;
    CalculatedColumnErrorMessage: string;
    ReportErrorMessage: string;
    LastAppliedShortCut: GridCell | undefined;
    CachedQueries: CachedQuery[];
    BulkUpdateValue?: string;
    SmartEditValue?: number;
    SmartEditOperation?: SmartEditOperation;
    CellSummaryOperation?: SummaryOperation | string;
    ProgressIndicator: ProgressIndicator;
    License: {
        watermark: {
            show: boolean;
            text: string;
        };
        disablePersistence: boolean;
    };
    DataChangeHistory: {
        logs: Record<string, CellDataChangedInfo>;
        currentMode: DataChangeHistoryMode;
        enableTime: Date;
        suspendTime: Date;
    };
    SettingsPanel: {
        [key: string]: {
            position: {
                x: number;
                y: number;
            };
            size: {
                width: number;
                height: number;
            };
        };
    };
    ShowLayoutNotAssociatedObjects: boolean;
    DashboardRevision: number;
    IsQuickFilterVisible: boolean;
    CurrentDataSet: string;
    /**
     * Chart modes are saved here for every chart event.
     * This way any part of the application can listen to chart-model changes without directly listening to AG Grid events
     */
    Charting: {
        currentChartModels: ChartModel[];
        externalChartingDefinitions: ExternalChartDefinition<unknown>[];
    };
    /**
     * Keeps session relevant information
     * currently it holds the previous location of a grouped column.
     */
    Layout: {
        previousGroupedColumns: Record<string, Record<string, number>>;
    };
    /**
     * Equivalent of `UserInterfaceOptions.disableDeleteConfirmation`
     * It will suppress the deletion confirmation dialog in the current session.
     */
    DisableDeleteConfirmation: boolean;
    Export: {
        visualDataExportInProgress: boolean;
    };
    QuickSearch?: {
        floatingVisible?: boolean;
    };
    NotesAndComments?: {
        editMode?: boolean;
        focusedEntity?: 'Note' | 'Comment';
        popupPosition?: CellAddress | null;
    };
    RowSummary?: {
        rowSummaries?: SystemRowSummary[];
    };
}
export interface ProgressIndicator extends ProgressIndicatorConfig {
    active: boolean;
}
