import { ApiBase } from '../Implementation/ApiBase';
import { AdaptableAlertCommand, AlertButton, AlertButtonForm, AlertDefinition, AlertRule } from '../../AdaptableState/AlertState';
import { AdaptableForm, AdaptableFormData } from '../../AdaptableState/Common/AdaptableForm';
import { AlertFormContext } from '../../AdaptableOptions/AlertOptions';
import { AdaptableAlert, AdaptableCellChangedAlert, AdaptableRowChangedAlert } from '../../AdaptableState/Common/AdaptableAlert';
import { CellDataChangedInfo } from '../../AdaptableState/Common/CellDataChangedInfo';
import { ColumnScope } from '../../AdaptableState/Common/ColumnScope';
import { AdaptablePredicateDef } from '../../AdaptableState/Common/AdaptablePredicate';
import { AdaptableMessageType } from '../../AdaptableState/Common/AdaptableMessageType';
import { IRowNode } from 'ag-grid-enterprise';
import { RowDataChangedInfo } from '../../types';
export declare class AlertInternalApi extends ApiBase {
    getExpressionForAlertRule(alertRule: AlertRule): string | undefined;
    /**
     * Retrieves the Adaptable Form with the given name
     * @param name name of the Form
     */
    getAdaptableFormByName(name: string): AdaptableForm<AlertFormContext> | undefined;
    /**
     * Retrieves all Alert Definitions in Alert State which are NOT Reactive (BooleanQuery)
     * @returns alert definitions
     */
    getNonReactiveAlertDefinitions(): AlertDefinition[];
    /**
     * Retrieves all active (non-suspended) Alert Definitions in Alert State which are NOT Reactive (BooleanQuery)
     * @returns alert definitions
     */
    getActiveNonReactiveAlertDefinitions(): AlertDefinition[];
    /**
     *
     * Retrieves all Alert Definitions in Alert State which are reactive (ObservableQuery & AggregationQuery)
     * @returns alert definitions
     */
    getReactiveAlertDefinitions(): AlertDefinition[];
    /**
     *
     * Retrieves all active (non-suspended) Alert Definitions in Alert State which are reactive (ObservableQuery & AggregationQuery)
     * @returns alert definitions
     */
    getActiveReactiveAlertDefinitions(): AlertDefinition[];
    /**
     * Retrieves all Alert Definitions which prevent a Cell Edit
     * @returns alert definitions
     */
    getAlertDefinitionsWithPreventEdit(): AlertDefinition[];
    /**
     * Retrieves all Alert Definitions which allow a Cell Edit
     *  @returns alert definitions
     */
    getAlertDefinitionsWithAllowEdit(): AlertDefinition[];
    /**
     * Runs after a button in an Alert Form is clicked
     */
    executeAlertButton(button: AlertButton<AlertFormContext>, context: AlertFormContext): void;
    /**
     * Runs after an Alert Command is invoked
     * @param command Action which has been invoked
     * @param details Info about the Alert and Form
     */
    executeAlertCommand(command: AdaptableAlertCommand | string, details: {
        alertDefinition: AlertDefinition;
        cellDataChangedInfo?: CellDataChangedInfo;
        rowDataChangedInfo?: RowDataChangedInfo;
        formData?: AdaptableFormData;
    }): void;
    /**
     * Retrieves all Predicate Defs that match given Scope
     * @param scope the Scope to check
     */
    getAlertPredicateDefsForScope(scope: ColumnScope): AdaptablePredicateDef[];
    /**
     * Returns a description of an Alert Definition
     * @param alertDefinition Alert Definition to use
     */
    getAlertDescriptionForDataChange(alertDefinition: AlertDefinition, cellDataChangedInfo?: CellDataChangedInfo): string;
    /**
     * Returns a description title of an Alert Definition
     * @param alertDefinition Alert Definition to use
     */
    getAlertMessageHeaderForDataChange(alertDefinition: AlertDefinition, cellDataChangedInfo?: CellDataChangedInfo): string;
    getAlertMessageForRowDataChange(alertDefinition: AlertDefinition, rowDataChangedInfo: RowDataChangedInfo): string;
    getAlertHeaderForRowDataChange(alertDefinition: AlertDefinition, rowDataChangedInfo: RowDataChangedInfo): string;
    /**
     * Returns custom description for alert using the 'alertMessageText' property
     *
     * @param alertDefinition Alert Definition to use
     * @param dataChangedInfo data change info, it can be eighter grid or cell data chantged info
     */
    getCustomAlertDescription(alertDefinition: AlertDefinition, dataChangedInfo?: {
        cellDataChangedInfo?: CellDataChangedInfo;
        rowDataChangedInfo?: RowDataChangedInfo;
    }): string;
    /**
     * Returns custom title defined by 'alertMessageHeader' property
     * @param alertDefinition Alert Definition to use
     * @param dataChangedInfo Data change info, it can be eighter grid or cell data chantged info
     */
    getCustomAlertMessageHeader(alertDefinition: AlertDefinition, dataChangedInfo?: {
        cellDataChangedInfo?: CellDataChangedInfo;
        rowDataChangedInfo?: RowDataChangedInfo;
    }): string;
    /**
     * Returns a description of an Alert Definition's Rule
     * @param alertDefinition Alert Definition to use
     */
    getAlertRuleDescription(alertDefinition: AlertDefinition): string;
    /**
     * Was Adaptable Alert fired due to a Cell Change
     * @param alert AdaptableAlert to check
     */
    isCellChangedAdaptableAlert(alert: AdaptableAlert): boolean;
    /**
     * Was Adaptable Alert fired due to a Row Change
     * @param alert AdaptableAlert to check
     */
    isRowChangedAdaptableAlert(alert: AdaptableAlert): boolean;
    /**
     * Is Adaptable Alert a Generic one
     * @param alert AdaptableAlert to check
     */
    isGenericAdaptableAlert(alert: AdaptableAlert): boolean;
    /**
     * Returns for the Alert Type for an Adaptable Alert
     * @param alert AdaptableAlert to check
     */
    getAlertTypeForAdaptableAlert(alert: AdaptableAlert): 'cellChanged' | 'rowChanged' | 'generic';
    getAdaptableFormFromAlertForm(alertForm: string | AlertButtonForm, context: any, defaultMessageType?: AdaptableMessageType): AdaptableForm<AlertFormContext> | undefined;
    clearAdaptableAlerts(): void;
    getAdaptableAlerts(): AdaptableAlert[];
    getAdaptableCellChangedAlerts(): AdaptableCellChangedAlert[];
    getAdaptableRowChangedAlerts(): AdaptableRowChangedAlert[];
    getAdaptableAlertWithHighlightCell(columnId: string, rowNode: IRowNode): AdaptableAlert | undefined;
    getAdaptableAlertWithHighlightRow(rowNode: IRowNode): AdaptableAlert | undefined;
    isAlertDefinitionForAddedRowChangeEvent(alertDefinition: AlertDefinition): boolean;
    isAlertDefinitionForRemovedRowChangeEvent(alertDefinition: AlertDefinition): boolean;
    setUpReactiveAlerts(): void;
    getAlertDefinitionsForCellDataChange(dataChangedEvent: CellDataChangedInfo): AlertDefinition[];
    private isAggregationAlertTriggered;
    private isAlertPredicateTriggered;
    isAlertDefinitionForRowChangeEvent(alertDefinition: AlertDefinition): boolean;
    showAlertForDefinitions(dataChangedInfo: CellDataChangedInfo | RowDataChangedInfo, alertDefinitions?: AlertDefinition[]): void;
    showAlertsForRowDataChanges(rowDataChangedInfo: RowDataChangedInfo, alertDefinitions: AlertDefinition[]): void;
    shouldFireAlertOnClient(alertDefinition: AlertDefinition): boolean;
    getDefaultAlertNotificationForm(): AlertButtonForm;
    getDefaultButton(): AlertButton<AlertFormContext<any>>;
    /**
     * Supported tokens:
     * - column-that-changed-name -> [column]
     * - rowData.newValue -> [rowData.newValue]
     * - rowData.oldValue -> [rowData.oldValue]
     * - primaryKey -> [primaryKeyValue]
     * - timestamp -> [timestamp]
     * - trigger -> [trigger]
     */
    private annotateAlertText;
}
