import { PlusMinusState, PlusMinusNudge } from '../AdaptableState/PlusMinusState';
import { CellUpdateRequest, GridCell } from '../AdaptableState/Selection/GridCell';
import { LayoutExtendedConfig } from '../types';
/**
 * Provides run-time access to the Plus / Minus Module and associated state
 */
export interface PlusMinusApi {
    /**
     * Retrieves Plus Minus section from Adaptable State (nudge rules only).
     * Keyboard triggers are optional on each {@link PlusMinusNudge}; unset fields fall back to
     * `AdaptableOptions.plusMinusOptions`, then `+` / `-`.
     */
    getPlusMinusState(): PlusMinusState;
    /**
     * Retrieves all Plus Minus Rules in Adaptable State with those with expressions first
     * @returns all plus minus rules
     */
    getAllPlusMinus(config?: LayoutExtendedConfig): PlusMinusNudge[];
    /**
     * Retrieves Plus Minus Rule by the technical ID (from `PlusMinusState`)
     * @param id Plus Minus id
     * @returns plus minus rule
     */
    getPlusMinusById(id: PlusMinusNudge['Uuid'], config?: LayoutExtendedConfig): PlusMinusNudge;
    /**
     * Retrieves a Plus Minus Nudge by its Name
     * @param name Name of the Plus Minus Nudge
     * @returns Plus Minus Nudge or undefined if not found
     */
    getPlusMinusNudgeByName(name: string): PlusMinusNudge | undefined;
    /**
     * Retrieves all active (not-suspended) Plus Minus Rules in Adaptable State with those with expressions first
     * @returns plus minus rules
     */
    getAllActivePlusMinus(config?: LayoutExtendedConfig): PlusMinusNudge[];
    /**
     * Retrieves all suspended Plus Minus Rules in Adaptable State with those with expressions first
     * @returns plus minus rules
     */
    getAllSuspendedPlusMinus(config?: LayoutExtendedConfig): 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;
    /**
     * Deletes a plus minus rule
     * @param plusMinusNudge Plus Minus Rule to delete
     */
    deletePlusMinusNudge(plusMinusNudge: PlusMinusNudge): void;
    /**
     * 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;
}
