import type { Dispatch, SetStateAction } from 'react';
import type { ColumnTable, ExpandableConfig, IFormat, IGroupSetting, IWrapSettings, Locale, PaginationConfig, RangeState, RecordDoubleClickEventArgs, RowClassName, SelectionSettings, SourceFilter } from "../grid-component/type";
import type { SubmitHandler } from "react-hook-form";
import type { ExpandedState, Row, Table } from '@tanstack/react-table';
export type IPositionCell = {
    rowId: string;
    colId: string;
};
export interface IContext<T> {
    t?: any;
    prefix: string;
    id: string;
    rowKey: string;
    originData: any[];
    dataSource: any[];
    format?: IFormat;
    expandable?: ExpandableConfig<T>;
    wrapSettings?: IWrapSettings;
    setExpanded: Dispatch<SetStateAction<ExpandedState>>;
    expanded: ExpandedState;
    recordDoubleClick?: (args: RecordDoubleClickEventArgs<T>) => void;
    selectionSettings?: SelectionSettings;
    isSelectionChange?: {
        isChange: boolean;
        type: string;
        rowData: T;
        rowsData: T[];
    };
    setIsSelectionChange: Dispatch<SetStateAction<{
        isChange: boolean;
        type: string;
        rowData: T;
        rowsData: T[];
    }>>;
    setSorterChange: Dispatch<SetStateAction<boolean>>;
    setFilterChange: Dispatch<SetStateAction<boolean>>;
    onContextMenu?: (data: T) => (event: any) => void;
    locale?: Locale;
    windowSize: {
        innerHeight: number;
        innerWidth: number;
    };
    control?: any;
    errors?: any;
    handleSubmit?: any;
    onSubmit?: SubmitHandler<any>;
    getValues?: any;
    reset?: any;
    setValue?: any;
    handleCellChange?: (args: ContextCellChange) => void;
    handleCellChangeAndAddRow?: (args: ContextCellChange) => void;
    editingKey?: string;
    setEditingKey?: Dispatch<SetStateAction<string>>;
    rangeState?: RangeState;
    setRangeState?: Dispatch<SetStateAction<RangeState | undefined>>;
    rangePasteState?: RangeState;
    setRangePasteState?: Dispatch<SetStateAction<RangeState | undefined>>;
    startCell?: IPositionCell;
    setStartCell?: Dispatch<SetStateAction<IPositionCell | undefined>>;
    endCell?: IPositionCell;
    setEndCell?: Dispatch<SetStateAction<IPositionCell | undefined>>;
    startPasteCell?: IPositionCell;
    setStartPasteCell?: Dispatch<SetStateAction<IPositionCell | undefined>>;
    endPasteCell?: IPositionCell;
    setEndPasteCell?: Dispatch<SetStateAction<IPositionCell | undefined>>;
    isSelecting?: boolean;
    setIsSelecting?: Dispatch<SetStateAction<boolean>>;
    isPasting?: boolean;
    setIsPasting?: Dispatch<SetStateAction<boolean>>;
    focusedCell?: IPositionCell;
    setFocusedCell?: Dispatch<SetStateAction<IPositionCell | undefined>>;
    cellActive?: any;
    triggerPaste?: (pastedRows: T[], pastedColumnsArray: string[], newData: T[], copyRows: T[]) => void;
    handleDeleteContent?: () => void;
    handleAddMulti?: (item: any, n: number, id?: string) => void;
    dataErrors?: any[];
    isDataTree: boolean;
    handleCellClick?: (rowNumber: number, record: T, column: ColumnTable, rowId: string, cellValue: any) => void;
    pagination?: false | PaginationConfig;
    rowClassName?: string | RowClassName<T>;
    table?: Table<T>;
    rowEditable?: (rowData: T) => boolean;
    onRowStyles?: Omit<React.CSSProperties, 'display' | 'transform' | 'gridTemplateColumns' | 'height' | 'minHeight'> | ((data: T, row: Row<T>) => Omit<React.CSSProperties, 'display' | 'transform' | 'gridTemplateColumns' | 'height' | 'minHeight'>);
    onRowHeaderStyles?: Omit<React.CSSProperties, 'display' | 'transform' | 'gridTemplateColumns' | 'height' | 'minHeight'> | (() => Omit<React.CSSProperties, 'display' | 'transform' | 'gridTemplateColumns' | 'height' | 'minHeight'>);
    onRowFooterStyles?: Omit<React.CSSProperties, 'display' | 'transform' | 'gridTemplateColumns' | 'height' | 'minHeight'> | (() => Omit<React.CSSProperties, 'display' | 'transform' | 'gridTemplateColumns' | 'height' | 'minHeight'>);
    groupSetting?: IGroupSetting;
    dataSourceFilter?: SourceFilter[];
}
export declare const TableContext: import("react").Context<IContext<any>>;
export type ContextCellChange = {
    key: string;
    record: any;
    field: string;
    option: any;
    indexRow: number;
    indexCol: number;
    newState?: any;
    prevState?: any;
    type: 'enter' | 'blur' | 'outClick';
};
