export declare enum Direction {
    UP = "top",
    RIGHT = "right",
    DOWN = "bottom",
    LEFT = "left"
}
export interface IAutoFillRule {
    type: string;
    match: (cellData: Nullable<ICellData>, accessor: any) => boolean;
    isContinue: (prev: IRuleConfirmedData, cur: Nullable<ICellData>) => boolean;
    applyFunctions?: APPLY_FUNCTIONS;
    priority: number;
}
export interface IRuleConfirmedData {
    type?: string;
    cellData: Nullable<ICellData>;
}
export type APPLY_FUNCTIONS = {
    [key in APPLY_TYPE]?: (dataWithIndex: ICopyDataInType, len: number, direction: Direction, copyDataPiece: ISourceDataPiece, location?: IAutoFillLocation) => Array<Nullable<ICellData>>;
};
export declare enum APPLY_TYPE {
    COPY = "copy",
    SERIES = "series"
}
export interface IAutoFillLocation {
    source: IDiscreteRange;
    target: IDiscreteRange;
}
export interface IDiscreteRange {
    rows: number[];
    cols: number[];
}
export interface ISourceDataPiece {
    [key: string]: ICopyDataInType[];
}
export interface ICopyDataInType {
    data: Array<Nullable<ICellData>>;
    index: ICopyDataInTypeIndexInfo;
}
export type ICopyDataInTypeIndexInfo = number[];
export type CellValue = string | number | boolean;
export interface ICellData {
    v?: Nullable<CellValue>;
    t?: Nullable<CellValueType>;
}
export type CustomData = Nullable<Record<string, any>>;
export declare enum CellValueType {
    STRING = 1,
    NUMBER = 2,
    BOOLEAN = 3,
    FORCE_STRING = 4
}
export type Nullable<T> = T | null | undefined | void;
export interface IKeyValue {
    [key: string]: any;
}
export declare enum DATA_TYPE {
    NUMBER = "number",
    DATE = "date",
    EXTEND_NUMBER = "extendNumber",
    CHN_NUMBER = "chnNumber",
    CHN_WEEK2 = "chnWeek2",
    CHN_WEEK3 = "chnWeek3",
    LOOP_SERIES = "loopSeries",
    FORMULA = "formula",
    OTHER = "other"
}
