import { GridApi as AgGridApi } from 'ag-grid-enterprise';
import { AlertApi } from './AlertApi';
import { PluginsApi } from './PluginsApi';
import { BulkUpdateApi } from './BulkUpdateApi';
import { CalendarApi } from './CalendarApi';
import { CalculatedColumnApi } from './CalculatedColumnApi';
import { CellSummaryApi } from './CellSummaryApi';
import { StateApi } from './StateApi';
import { CustomSortApi } from './CustomSortApi';
import { DashboardApi } from './DashboardApi';
import { ToolPanelApi } from './ToolPanelApi';
import { DataSetApi } from './DataSetApi';
import { EventApi } from './EventApi';
import { ExportApi } from './ExportApi';
import { EntitlementApi } from './EntitlementApi';
import { FormatColumnApi } from './FormatColumnApi';
import { FreeTextColumnApi } from './FreeTextColumnApi';
import { LayoutApi } from './LayoutApi';
import { PlusMinusApi } from './PlusMinusApi';
import { QuickSearchApi } from './QuickSearchApi';
import { ShortcutApi } from './ShortcutApi';
import { SmartEditApi } from './SmartEditApi';
import { SystemStatusApi } from './SystemStatusApi';
import { ThemeApi } from './ThemeApi';
import { UserInterfaceApi } from './UserInterfaceApi';
import { GridApi } from './GridApi';
import { ScheduleApi } from './ScheduleApi';
import { ExpressionApi } from './ExpressionApi';
import { TeamSharingApi } from './TeamSharingApi';
import { ColumnApi } from './ColumnApi';
import { ApplicationApi } from './ApplicationApi';
import { ColumnScopeApi } from './ColumnScopeApi';
import { PredicateApi } from './PredicateApi';
import { DataChangeHistoryApi } from './DataChangeHistoryApi';
import { FlashingCellApi } from './FlashingCellApi';
import { ChartingApi } from './ChartingApi';
import { SettingsPanelApi } from './SettingsPanelApi';
import { StatusBarApi } from './StatusBarApi';
import { StyledColumnApi } from './StyledColumnApi';
import { OptionsApi } from './OptionsApi';
import { ActionColumnApi } from './ActionColumnApi';
import { NoteApi } from './NoteApi';
import { Fdc3Api } from './Fdc3Api';
import { DataImportApi } from './DataImportApi';
import { NamedQueryApi } from './NamedQueryApi';
import { FilterApi } from './FilterApi';
import { CommentApi } from './CommentApi';
import { ColumnMenuApi } from './ColumnMenuApi';
import { ContextMenuApi } from './ContextMenuApi';
import { RowFormApi } from './RowFormApi';
/**
 * Provides developers with run-time access to AdapTable.  Contains many classes each dedicated to a specific AdapTable Module or functionality
 */
export interface AdaptableApi {
    /**
     * AG Grid API; try to use the API methods provided by Adaptable instead of using this directly
     */
    agGridApi: AgGridApi;
    /**
     * Provides access to Action Columns
     */
    actionColumnApi: ActionColumnApi;
    /**
     * Provides access to the Alert Module
     */
    alertApi: AlertApi;
    /**
     * Provides access to the Application Module
     */
    applicationApi: ApplicationApi;
    /**
     * Provides access to the Bulk Update Module
     */
    bulkUpdateApi: BulkUpdateApi;
    /**
     * Provides access to the Calculated Column Module
     */
    calculatedColumnApi: CalculatedColumnApi;
    /**
     * Functions for managing Holidays
     */
    calendarApi: CalendarApi;
    /**
     * Provides access to the Cell Summary Module
     */
    cellSummaryApi: CellSummaryApi;
    /**
     * Provides run-time access to Charting Module and state
     */
    chartingApi: ChartingApi;
    /**
     * Provides a number of column-related methods
     */
    columnApi: ColumnApi;
    /**
     * Provides access to Column Menu
     */
    columnMenuApi: ColumnMenuApi;
    /**
     * Provides access to Context Menu
     */
    contextMenuApi: ContextMenuApi;
    /**
     * Provides access to the Comment Module
     */
    commentApi: CommentApi;
    /**
     * Manages the `Scope` object - used widely to determine where objects are applied
     */
    columnScopeApi: ColumnScopeApi;
    /**
     * Provides access to the Custom Sort Module
     */
    customSortApi: CustomSortApi;
    /**
     * Provides access to the Dashboard
     */
    dashboardApi: DashboardApi;
    /**
     * Provides run-time access to the Data Changes Module
     **/
    dataChangeHistoryApi: DataChangeHistoryApi;
    /**
     * Provides access to the Data Import Module
     */
    dataImportApi: DataImportApi;
    /**
     * Provides access to Data Sets
     */
    dataSetApi: DataSetApi;
    /**
     * Functions for managing Entitlements and Permissions
     */
    entitlementApi: EntitlementApi;
    /**
     * Used for listenning / subscribing to the various Events published by AdapTable
     */
    eventApi: EventApi;
    /**
     * Provides access to the Export Module and Reports
     */
    exportApi: ExportApi;
    /**
     * Manages AdapTableQL Expressions
     */
    expressionApi: ExpressionApi;
    /**
     * Manages the FDC3 capabilities of AdapTable
     */
    fdc3Api: Fdc3Api;
    /**
     * Provides access to Filtering in AdapTable
     */
    filterApi: FilterApi;
    /**
     * Provides access to the Flashing Cell Module
     */
    flashingCellApi: FlashingCellApi;
    /**
     * Provides access to the Format Column Module
     */
    formatColumnApi: FormatColumnApi;
    /**
     * Provides access to the FreeText Column Module
     */
    freeTextColumnApi: FreeTextColumnApi;
    /**
     * Provides methods for managing the Grid, and Grid data, directly
     */
    gridApi: GridApi;
    /**
     * Provides access to the Layout Module
     */
    layoutApi: LayoutApi;
    /**
     * Provides access to the Named Query Module
     */
    namedQueryApi: NamedQueryApi;
    /**
     * Provides access to the Note Module
     */
    noteApi: NoteApi;
    /**
     * Provides access to Adaptable Options
     */
    optionsApi: OptionsApi;
    /**
     * Provides access to the Plus Minus Module
     */
    plusMinusApi: PlusMinusApi;
    /**
     * Offers access to AdapTable Plugin (e.g. ipushpull, OpenFin etc)
     */
    pluginsApi: PluginsApi;
    /**
     * Manages the Predicate - a  boolean-return function used in Filters and Alerts
     */
    predicateApi: PredicateApi;
    /**
     * Provides access to the Quick Search Module
     */
    quickSearchApi: QuickSearchApi;
    /**
     * Creates Row Forms
     */
    rowFormApi: RowFormApi;
    /**
     * Provides access to the Schedule Module
     */
    scheduleApi: ScheduleApi;
    /**
     * Provides access to the Settings Panel
     */
    settingsPanelApi: SettingsPanelApi;
    /**
     * Provides access to the Shortcut Module
     */
    shortcutApi: ShortcutApi;
    /**
     * Provides access to the Smart Edit Module
     */
    smartEditApi: SmartEditApi;
    /**
     * Methods giving access to Adaptable State
     */
    stateApi: StateApi;
    /**
     * Provides run-time access to the AdapTable Status Bar
     */
    statusBarApi: StatusBarApi;
    /**
     * Provides access to the Styled Column Module
     */
    styledColumnApi: StyledColumnApi;
    /**
     * Methods related to displaying System Status and application health messages
     */
    systemStatusApi: SystemStatusApi;
    /**
     * Functions related to run-time Team Sharing of AdapTable objects between colleagues
     */
    teamSharingApi: TeamSharingApi;
    /**
     * Api methods related to Theme management
     */
    themeApi: ThemeApi;
    /**
     * Provides access to the AdapTable Tool Panel on the right hand side of the grid
     */
    toolPanelApi: ToolPanelApi;
    /**
     * Manages User Interface Options where colours, styles and custom column values are configured
     */
    userInterfaceApi: UserInterfaceApi;
    /**
     * Cleanup method - call only for vanilla JavaScript components, as framework components handle cleanup on destroy/unmount. By default, it unmounts the Adaptable component and destroys the AG Grid instance.
     * @param config - optional configuration object
     */
    destroy: (config?: DestroyConfig) => void;
    /**
     * Whether the Adaptable instance has been destroyed
     */
    isDestroyed: () => boolean;
}
/**
 * Adaptable Destroy Configuration
 */
export interface DestroyConfig {
    /**
     * Unmount the Adaptable component (Dashboard)
     *
     * @defaultValue true
     */
    unmount: boolean;
    /**
     * Destroy the AgGrid instance
     *
     * @defaultValue true
     */
    destroyAgGrid: boolean;
}
