import { PreviewInfo } from '../Utilities/Interface/Preview';
import { BulkUpdateValidationResult } from '../Strategy/Interface/IBulkUpdateModule';
import { CellAddress, CellDataChangedInfo, ExportDestinationType, ReportFormatType, ReportNameType, SmartEditOperation } from '../types';
import type { IPushPullState, IPushPullReport, IPushPullDomain } from './IPushPullState';
import { OpenFinState, OpenFinReport } from './OpenFinState';
import { AdaptableAlert } from './Common/AdaptableAlert';
import { CellSummmaryInfo } from './Common/CellSummary';
import { SystemStatusMessageInfo } from './Common/SystemStatusMessageInfo';
import { SummaryOperation } from './Common/Enums';
import { ChartModel } from 'ag-grid-enterprise';
import { ExternalChartDefinition } from './ChartingState';
import { CachedQuery } from './NamedQueryState';
import { AdaptableColumn } from './Common/AdaptableColumn';
import { SelectedCellInfo } from './Selection/SelectedCellInfo';
import { SelectedRowInfo } from './Selection/SelectedRowInfo';
import { AdaptableMenuItem } from './Common/Menu';
import { CellHighlightInfo } from './Common/CellHighlightInfo';
import { ColumnHighlightInfo } from './Common/ColumnHighlightInfo';
import { RowHighlightInfo } from './Common/RowHighlightInfo';
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 Initial Adaptable State, nor is it persisted
 */
export interface InternalState extends IPushPullState, OpenFinState {
    Columns: AdaptableColumn[];
    SelectedCellInfo: SelectedCellInfo;
    SelectedRowInfo: SelectedRowInfo;
    CellHighlightInfo: CellHighlightInfo[];
    ColumnHighlightInfo: ColumnHighlightInfo[];
    RowHighlightInfo: RowHighlightInfo[];
    SettingsPanelModuleEntries: AdaptableMenuItem[];
    AdaptableAlerts: AdaptableAlert[];
    SystemStatusMessages: SystemStatusMessageInfo[];
    Dashboard: {
        DashboardModuleButtons: AdaptableMenuItem[];
        DashboardRevision: number;
    };
    SmartEdit: {
        IsValidSmartEditSelection: boolean;
        SmartEditPreviewInfo: PreviewInfo;
        SmartEditValue?: number;
        SmartEditOperation?: SmartEditOperation;
    };
    BulkUpdate: {
        BulkUpdateValidationResult: BulkUpdateValidationResult;
        BulkUpdatePreviewInfo: PreviewInfo;
        BulkUpdateValue?: string;
    };
    CachedQueries: CachedQuery[];
    CellSummary: {
        CellSummaryOperation?: SummaryOperation | string;
        CellSummaryInfo: CellSummmaryInfo;
    };
    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;
            };
        };
    };
    IsQuickFilterVisible: boolean;
    CurrentDataSet: string;
    /**
     * Chart Models are saved here for every chart event, so we can listen to chart-model changes without directly listening to AG Grid events
     */
    Charting: {
        currentChartModels: ChartModel[];
        externalChartingDefinitions: ExternalChartDefinition<unknown>[];
    };
    /**
     * Keeps session-relevant information for Layout
     */
    Layout: {
        showLayoutNonExtendedObjects: boolean;
    };
    /**
     * Equivalent of `UserInterfaceOptions.disableDeleteConfirmation`
     * It will suppress the deletion confirmation dialog in the current session.
     */
    DisableDeleteConfirmation: boolean;
    Export: {
        inProgress?: {
            reportName: ReportNameType;
            reportFormat: ReportFormatType;
            exportDestination: ExportDestinationType;
        };
    };
    QuickSearch?: {
        floatingVisible?: boolean;
    };
    NotesAndComments?: {
        editMode?: boolean;
        focusedEntity?: 'Note' | 'Comment';
        popupPosition?: CellAddress | null;
    };
    RowSummary?: {
        rowSummaries?: SystemRowSummary[];
    };
}
