/// <reference types="react" />
import { AxiosInstance } from "axios";
import { TextBoxFactory } from "../ComponentFactory/TextBoxFactory";
import { MainStateManager } from "../MainStateManager";
import { ElementsOfFormFactory } from "../Page/ElementsOfFormFactory";
import { Argument } from "../Page/ElementsOfFormFactory/Argument";
import { IMainStateFactory } from "../Types";
import { GridViewColumn, GridViewMergCaptionColumn } from "./Columns";
import { PATH } from "amisa-paths";
export type ISpinnerType = 'Main' | 'Form' | 'Table';
export type GridViewPATHS = PATH & {
    search: string;
    delete: string;
} & {
    unLock?: string;
    lock?: string;
};
export declare class GridViewFactory implements IMainStateFactory {
    mainStateManager: MainStateManager;
    urls: GridViewPATHS;
    spinnerType: ISpinnerType;
    hasPagination?: boolean | undefined;
    onAccept?: Function;
    onCancel?: Function;
    argument?: Argument;
    getTextBoxFactory: (fieldName: string) => TextBoxFactory;
    cach: {};
    forceUpdate: () => void;
    ContextMenuRow?: React.ComponentType<{
        headFactory: GridViewFactory;
        row: any;
    }>;
    apiAxios: AxiosInstance;
    columns: GridViewColumn[];
    columnsReverse: GridViewColumn[];
    mergeCaptionColumns: GridViewMergCaptionColumn[] | null;
    rows: any[];
    waitForLoad?: boolean;
    currentRowRef?: React.RefObject<HTMLTableRowElement>;
    showWaitingSpinner: () => void;
    closeWaitingSpinner: () => void;
    get any(): any;
    elementsOfForm: ElementsOfFormFactory;
    constructor(mainStateManager: MainStateManager, urls: GridViewPATHS, spinnerType: ISpinnerType, hasPagination?: boolean | undefined, initializeCustomPayLoad?: any);
    deleteRow: (caption: string, text: string, main: string) => void;
    private deleteRowFinal;
    loadData: () => void;
    private hideAutoHideColumns;
    selectThisRowById: (_rowId: number) => never;
    selectThisRowByIndex: (rowIndex: number) => boolean;
    showContextMenuForRow: (_rowData: any, _rowIndex: number, _arg2: number, _arg3: number) => never;
    hideContextMenuForRow: () => never;
    get isValidCurrenRowId(): boolean;
    get currentRow(): any;
    get currentRowId(): number | undefined;
    get currentRowYearId(): number | undefined;
    currentRowIndex: number;
    isThisCurrentRow: (rowIndex: number) => boolean;
    selectedRowsIds: number[];
    isSelectedThisRow: (rowId: number) => boolean;
    selectThisCell: (rowIndex: any, _columnIndex: number) => void;
    refreshList: () => void;
    getWidth(child: any): number;
    close: () => void;
    nextRow: () => void;
    previousRow: () => void;
    getLockOrginalValue: (row: any) => any;
    private setCachValueOfLockState;
    toggelLockUnlock: (fieldName: string) => void;
    lock: (fieldName: string) => void;
    unLock: (fieldName: string) => void;
    lockUnLock: (path: string, id: number, yearId: number, afterSuccessed: () => void) => void;
}
