/// <reference types="react" />
import { ITypeOfFormForRoute } from "../../AmisaAuth/Menus/1-MenuFactory";
import { ModalFactory } from "../../ComponentFactory/ModalFactory";
import { IPopupMouseLocation, PopupFactory } from "../../ComponentFactory/PopupFactory";
import { ToolStripFactory } from "../../ComponentFactory/ToolStrip/ToolStripFactory";
import { MainStateManager } from "../../MainStateManager";
import { IMainStateFactory, OfficialAttacheFormsType } from "../../Types";
import { ElementFactory } from "./ElementFactory";
import { SubPageItem } from "./SubPageItem";
import { SubPagesFactory } from "./SubPagesFactory";
import { Tabbing } from "./Tabbing";
export type IParentFormManager = MainStateManager | SubPageItem;
interface IPageParameter {
    totalPages: number | null;
    itemsPerPage: number;
    currentPage: number;
}
export declare class ElementsOfFormFactory {
    mainStateFactory: IMainStateFactory;
    subPageItem?: SubPageItem;
    filters: any;
    isShowWaitingFormSpinner?: boolean;
    isShowWaitingTableSpinner?: boolean;
    tabbing: Tabbing;
    customPayLoad: any;
    initializeElements: () => void;
    get headPayLoad(): any;
    get searchParameter(): any;
    responses?: ElementFactory[];
    addResponseElement: (element: ElementFactory) => void;
    deserializedResponse: (data: any) => void;
    otherPayLoad: {
        object: any;
        payLoadKey: string;
        fieldName: string;
    }[];
    addOtherPayLoadKey: (object: any, payLoadKey: string, fieldName: string) => void;
    payLoad?: ElementFactory[];
    addPayloadElement: (element: ElementFactory) => void;
    pageParameter: IPageParameter;
    gotoPage: (page: number) => void;
    goNextPage: () => void;
    goPreviousPage: () => void;
    goLastPage: () => void;
    goFirstPage: () => void;
    mainStateManager: MainStateManager;
    showSendByLetterForm: (type: OfficialAttacheFormsType, object: {
        id: number;
    }) => void;
    closeSendByLetterForm: () => void;
    popup?: PopupFactory;
    showPopup: (children: JSX.Element, element?: IPopupMouseLocation, onClosedPopup?: () => void) => void;
    closePopup: () => void;
    currentModal?: ModalFactory;
    childModal?: ModalFactory;
    showModal: (children: JSX.Element, onClosedModal?: () => void, argument?: number | string | object, customPayload?: object, finedInRows?: boolean, ExtraStackMenuComponent?: React.ComponentType<{
        mainState: any;
    }>, typeOfForm?: ITypeOfFormForRoute, cssClasses?: string) => void;
    closeModal: () => void;
    onCloseModalGetFocus?: () => void;
    onCloseModalOpenNexWindow?: () => void;
    showFullScreenWaittingSpinner: (onClosedModal?: () => void) => void;
    closeFullScreenWaittingSpinner: () => void;
    showSomeThingWentWrong: (onClosedModal?: () => void) => void;
    showErrorMessageBox: (error: Error, onClosedModal?: () => void) => void;
    showInvalidArgumentMessageBox: (description: string, onClosedModal?: () => void) => void;
    showSuccessFullMessageBox: (caption?: string, text?: string, description?: string, onClosedModal?: () => void) => void;
    showAreYouSureDeleteMessageBox: (onClickDelete: () => void, caption?: string, text?: string, description?: string) => void;
    showThereAreSomeErrorYouCanNot: (countOfError: number, onClosedModal?: () => void) => void;
    showThereIsNotAnyChangeForSave: (onClosedModal?: () => void) => void;
    showAttachedFiles: (argument: string | number | object | undefined, axiosData: {
        controllerPath: string;
        acceptPath?: string;
        getListPath?: string;
        getByIdPath?: string;
        deletePath?: string;
    }, caption?: string, onClosedModal?: (() => void)) => void;
    showWaitingFormSpinner: () => void;
    closeWaitingFormSpinner: () => void;
    showWaitingTableSpinner: () => void;
    closeWaitingTableSpinner: () => void;
    get hasChange(): boolean;
    validate: () => number;
    elements: ElementFactory[];
    toolStripFactory: ToolStripFactory;
    subPageFactory?: SubPagesFactory;
    parentPageFactory?: SubPagesFactory;
    constructor(mainStateFactory: IMainStateFactory, initializeCustomPayLoad?: any);
    addElement: (element: ElementFactory) => void;
    removeElement: (element: ElementFactory) => void;
    focuseToThisElement: (factory: ElementFactory) => void;
    saveAttachedFiles: (id: number) => Promise<void>;
    close: () => void;
}
export {};
