import { PointRange } from './point-range';
import * as Matrix from './matrix';
import * as Types from './types';
import * as Point from './point';
import { Selection, RangeSelection, EntireColumnsSelection, EntireRowsSelection } from './selection';
export declare function applyBoldToCells(currentData: Matrix.Matrix<Types.CellBase<any>>, selectedRange: PointRange, editable: boolean): Matrix.Matrix<Types.CellBase<any>>;
export declare function applyItalicToCells(currentData: Matrix.Matrix<Types.CellBase<any>>, selectedRange: PointRange, editable: boolean): Matrix.Matrix<Types.CellBase<any>>;
export declare function applyFontFamily(currentData: Matrix.Matrix<Types.CellBase<any>>, selectedRange: PointRange, value: string, editable: boolean): Matrix.Matrix<Types.CellBase<any>>;
export declare function applyFontSize(currentData: Matrix.Matrix<Types.CellBase<any>>, selectedRange: PointRange, value: string, editable: boolean): Matrix.Matrix<Types.CellBase<any>>;
export declare function applyBorderToCells(currentData: Matrix.Matrix<Types.CellBase<any>>, selectedRange: PointRange, value: string, color: string, editable: boolean): Matrix.Matrix<Types.CellBase<any>>;
export declare function applyTextAlign(currentData: Matrix.Matrix<Types.CellBase<any>>, selectedRange: PointRange, value: string, editable: boolean): Matrix.Matrix<Types.CellBase<any>>;
export declare function applyUnderlineToCells(currentData: Matrix.Matrix<Types.CellBase<any>>, selectedRange: PointRange, editable: boolean): Matrix.Matrix<Types.CellBase<any>>;
export declare function isValidHexColor(color: string): boolean;
export declare function applyColorToCells(currentData: Matrix.Matrix<Types.CellBase<any>>, selectedRange: PointRange | null, color: string, editable: boolean): Matrix.Matrix<Types.CellBase<any>>;
export declare function applyBackgroundColorToCells(currentData: Matrix.Matrix<Types.CellBase<any>>, selectedRange: PointRange | null, backgroundColor: string, editable: boolean): Matrix.Matrix<Types.CellBase<any>>;
export declare function applyFormatePainter(currentData: Matrix.Matrix<Types.CellBase<any>>, activePoint: Point.Point | null): React.CSSProperties | undefined;
export declare function cellFormatePainter(currentData: Matrix.Matrix<Types.CellBase<any>>, formattedStyle: Types.formattedStyle, activePoint: Point.Point | null): Matrix.Matrix<Types.CellBase<any>>;
export declare function dragEndFormatePainter(currentData: Matrix.Matrix<Types.CellBase<any>>, selectedRange: PointRange | null, formattedStyle: Types.formattedStyle): Matrix.Matrix<Types.CellBase<any>>;
export declare function dragEndAutoFill(currentData: Matrix.Matrix<Types.CellBase<any>>, selectedRange: PointRange | null, cellValue: Types.CellBase, activeCell: Point.Point | null): Matrix.Matrix<Types.CellBase<any>>;
export declare function edit(state: Types.StoreState): Types.StoreState;
export declare function clear(state: Types.StoreState): Types.StoreState;
export declare function clearEditMode(state: Types.StoreState): Types.StoreState;
export declare function enterFunctionality(state: Types.StoreState): Types.StoreState;
export declare function blur(state: Types.StoreState): Types.StoreState;
export declare function view(state: Types.StoreState): Types.StoreState;
export declare function commit(changes: Types.CommitChanges): Partial<Types.StoreState>;
export declare const go: (rowDelta: number, columnDelta: number) => KeyDownHandler;
export type KeyDownHandler = (state: Types.StoreState, event: React.KeyboardEvent) => Types.StoreState | void;
export declare enum Direction {
    Left = "Left",
    Right = "Right",
    Top = "Top",
    Bottom = "Bottom"
}
export declare function getKeyDownHandler(state: Types.StoreState, event: React.KeyboardEvent): KeyDownHandler | undefined;
/** Returns whether the reducer has a handler for the given keydown event */
export declare function hasKeyDownHandler(state: Types.StoreState, event: React.KeyboardEvent): boolean;
/** Returns whether the active cell is read only */
export declare function isActiveReadOnly(state: Types.StoreState): boolean;
/** Gets active cell from given state */
export declare function getActive(state: Types.StoreState): Types.CellBase | null;
/** Modify given edge according to given active point and data */
export declare function modifyEdge<T extends Selection>(selection: T, active: Point.Point | null, data: Matrix.Matrix<unknown>, direction: Direction): T;
export declare function modifyRangeSelectionEdge(rangeSelection: RangeSelection, active: Point.Point, data: Matrix.Matrix<unknown>, edge: Direction): RangeSelection;
export declare function modifyEntireRowsSelection(selection: EntireRowsSelection, active: Point.Point, data: Matrix.Matrix<unknown>, edge: Direction): EntireRowsSelection;
export declare function modifyEntireColumnsSelection(selection: EntireColumnsSelection, active: Point.Point, data: Matrix.Matrix<unknown>, edge: Direction): EntireColumnsSelection;
