import { PlusMinusState, PlusMinusNudge } from '../AdaptableState/PlusMinusState';
import { CellUpdateRequest, GridCell } from '../AdaptableState/Selection/GridCell';
/**
 * Provides run-time access to the Plus / Minus Module and associated state
 */
export interface PlusMinusApi {
    /**
     * Retrieves Plus Minus section from Adaptable State
     */
    getPlusMinusState(): PlusMinusState;
    /**
     * Retrieves all Plus Minus Rules in Adaptable State with those with expressions first
     * @returns plus minus rule
     */
    getAllPlusMinus(config?: {
        includeLayoutNotAssociatedObjects?: boolean;
    }): PlusMinusNudge[];
    /**
     * Retrieves Plus Minus Rule by the technical ID (from `PlusMinusState`)
     * @param id Plus Minus id
     * @returns plus minus rule
     */
    getPlusMinusById(id: PlusMinusNudge['Uuid']): PlusMinusNudge;
    /**
     * Retrieves all active (not-suspended) Plus Minus Rules in Adaptable State with those with expressions first
     * @returns plus minus rules
     */
    getAllActivePlusMinus(): PlusMinusNudge[];
    /**
     * Retrieves all suspended Plus Minus Rules in Adaptable State with those with expressions first
     * @returns plus minus rules
     */
    getAllSuspendedPlusMinus(): PlusMinusNudge[];
    /**
     * Applies a Plus Minus Rule to given cells
     * @param plusMinusNudge Plus Minus Rule to apply
     * @param cells cells to which Rule should be applied
     * @param direction Direction of the edit
     */
    runPlusMinusNudge(plusMinusNudge: PlusMinusNudge, cells: GridCell[], direction: 'up' | 'down'): void;
    /**
     * Applies a Plus Minus to given cells
     * @param cellUpdateRequests cells to which Rule should be applied
     */
    applyPlusMinus(cellUpdateRequests: CellUpdateRequest[]): void;
    /**
     * Opens Settings Panel with Plus Minus section selected and visible
     */
    openPlusMinusSettingsPanel(): void;
    /**
     * Replaces Plus Minus Rule in State with given one
     * @param plusMinusNudge Plus Minus Rule to edit
     * @returns plus minus rule
     */
    editPlusMinusNudge(plusMinusNudge: PlusMinusNudge): PlusMinusNudge;
    /**
     * Adds new Plus Minus Rule to State
     * @param plusMinusNudge Plus Minus Rule to add
     * @returns plus minus rule
     */
    addPlusMinusNudge(plusMinusNudge: PlusMinusNudge): PlusMinusNudge;
    /**
     * Suspends Plus Minus Rule
     * @param plusMinusNudge Plus Minus Rule to suspend
     * @returns plus minus rule
     */
    suspendPlusMinusNudge(plusMinusNudge: PlusMinusNudge): PlusMinusNudge;
    /**
     * Activates a suspended Plus Minus Rule
     * @param plusMinusNudge Plus Minus Rule to un-suspend
     * @returns plus minus rule
     */
    unSuspendPlusMinusNudge(plusMinusNudge: PlusMinusNudge): PlusMinusNudge;
}
