import { AdaptableFlashingCell } from '../AdaptableState/Common/AdaptableFlashingCell';
import { AdaptablePredicateDef } from '../AdaptableState/Common/AdaptablePredicate';
import { ColumnScope } from '../AdaptableState/Common/ColumnScope';
import { FlashingCellDefinition, FlashingCellState } from '../AdaptableState/FlashingCellState';
import { AdaptableObjectLookupCriteria } from '../AdaptableState/Common/AdaptableObject';
import { LayoutExtendedConfig } from '../types';
/**
 * Provides run-time access to Flashing Cell functionality and associated State
 */
export interface FlashingCellApi {
    /**
     * Retrieves Flashing Cell section from Adaptable State
     * @returns Flashing Cell state
     */
    getFlashingCellState(): FlashingCellState;
    /**
     * Retrieves all Flashing Cell Definitions in Flashing Cell State
     */
    getFlashingCellDefinitions(config?: LayoutExtendedConfig): FlashingCellDefinition[];
    /**
     * Retrieves Flashing Cell Definition by the technical ID (from `FlashingCellState`)
     * @param id Flashing Cell Definition Id
     * @returns Flashing Cell Definition
     */
    getFlashingCellDefinitionById(id: FlashingCellDefinition['Uuid'], config?: LayoutExtendedConfig): FlashingCellDefinition;
    /**
     * Retrieves all active (non-suspended) cell Definitions in Flashing Cell State
     * @returns flashing cell definitions
     */
    getActiveFlashingCellDefinitions(config?: LayoutExtendedConfig): FlashingCellDefinition[];
    /**
     * Retrieves all suspended Cell Definitions in Flashing Cell State
     * @returns flashing cell definitions
     */
    getSuspendedFlashingCellDefinitions(config?: LayoutExtendedConfig): FlashingCellDefinition[];
    /**
     * Returns `FlashTarget` of the given Flashing Cell Definition
     * @param flashingCellDefinition Flashing Cell Definition to check
     */
    getFlashingCellFlashTarget(flashingCellDefinition: FlashingCellDefinition): FlashingCellDefinition['FlashTarget'];
    /**
     * Evaluates the given Flashing Cell Definition and flashes the correspondent cells/rows
     * @param flashingCellToShow Flashing Cell Definition to show
     */
    showFlashingCell(flashingCellToShow: AdaptableFlashingCell): void;
    /**
     * Edits Flashing Cell Definition in State with given one
     * @param flashingCellDefinition Flashing Cell Definition to Edit
     * @returns flashing definition
     */
    editFlashingCellDefinition(flashingCellDefinition: FlashingCellDefinition): FlashingCellDefinition;
    /**
     * Edits provided Flashing Cell Definitions
     * @param flashingCellDefinitions Flashing Cell Definitions to Edit
     * @returns Flashing Cell definitions
     */
    editFlashingCellDefinitions(flashingCellDefinitions: FlashingCellDefinition[]): FlashingCellDefinition[];
    /**
     * Adds a Flashing Cell Definition to State
     * @param flashingCellDefinition Flashing Cell Definition to Add
     */
    addFlashingCellDefinition(flashingCellDefinition: FlashingCellDefinition): FlashingCellDefinition;
    /**
     * Deletes a Flashing Cell
     * @param flashingCellDefinition flashing cell to delete
     */
    deleteFlashingCellDefinition(flashingCellDefinition: FlashingCellDefinition): void;
    /**
     * Sets a collection of Flashing Cell Definitions into State
     * @param flashingCellDefinitions Flashing Cell Definitions to Add to State
     */
    setFlashingCellDefinitions(flashingCellDefinitions: FlashingCellDefinition[]): void;
    /**
     * Adds provided Flashing Cell Definitions
     * @param flashingCellDefinitions Flashing Cell Definition to Add
     * @returns Flashing Cell Definition
     */
    addFlashingCellDefinitions(flashingCellDefinitions: FlashingCellDefinition[]): FlashingCellDefinition[];
    /**
     * Suspends a Flashing Cell Definition
     * @param flashingCellDefinition Flashing Cell Definition to Suspend
     * @returns Flashing Cell Definition
     */
    suspendFlashingCellDefinition(flashingCellDefinition: FlashingCellDefinition): FlashingCellDefinition;
    /**
     * Activates a suspended Flashing Cell Definition
     * @param flashingCellDefinition Flashing Cell Definition to Un-Suspend (activate)
     * @returns Flashing Cell Definition
     */
    unSuspendFlashingCellDefinition(flashingCellDefinition: FlashingCellDefinition): FlashingCellDefinition;
    /**
     * Suspends all FlashingCell Definitions
     */
    suspendAllFlashingCellDefinition(): void;
    /**
     * Activates all suspended Flashing Cell Definition
     */
    unSuspendAllFlashingCellDefinition(): void;
    /**
     * Retrieves all Predicate Defs that match given Scope
     * @param scope the Scope to check
     */
    getFlashingCellPredicateDefsForScope(scope: ColumnScope): AdaptablePredicateDef[];
    /**
     * Clears all Cells and Rows which have been flashed (primarily used if duration is 'Always')
     */
    clearAllFlashingCells(): void;
    /**
     * Is there any cells/rows currently being flashed
     */
    isAnyFlashingCellActive(): boolean;
    /**
     * Find all Flashing Cell Definitions which match the given criteria
     * @param flashingCellLookupCriteria lookup criteria
     */
    findFlashingCellDefinitions(flashingCellLookupCriteria: AdaptableObjectLookupCriteria): FlashingCellDefinition[];
}
