/// <reference types="react" />
import { TabbingControl, IControlsElementType } from './TabbingControl';
import { ValidatingControl } from './ValidatingControl';
import { ChangingControl } from './ChangingControl';
import { MainStateManager } from '../MainStateManager';
import { Events } from './Events';
import { TouchingControl } from './TouchingControl';
import { IArmisaPageKey } from '../ArmisaImportPage';
import { MouseLocationProps, PopupPageData, TLocationPopup } from './Modal/ModalPopup';
import { StackIcon } from '../ModalOfStack/IconOfMenu';
import { MainStacksFactory } from '../ModalOfStack/Main';
import { UserOption } from '../User';
import { CaptionNaming, INaming } from '../NamingCaption';
export declare class PropsOfPage {
    static buildNewTag(tag: any, listOfUserOptions?: IArmisaPageKey[]): PropsOfPage;
    static buildNewCode(code: string): PropsOfPage;
    static buildNewHeadId(id: number): PropsOfPage;
    static buildNewArticleId(id: number): PropsOfPage;
    tag: any;
    headId?: number;
    articleId?: number;
    code?: string;
    listOfUserOptionsLoadBeforStart?: IArmisaPageKey[];
}
export declare class StackHeaderFields {
    index: number;
    fieldName: string;
    caption?: string | undefined;
    constructor(index: number, fieldName: string, caption?: string | undefined);
    static buildNew<T>(index: number, fieldName: keyof T, caption: string): StackHeaderFields;
}
export declare abstract class BasePageData {
    mainStateManager: MainStateManager;
    accessOfAcceptKeyIsAccepted: boolean;
    accessOfNewKeyIsAccepted: boolean;
    accessOfViewKeyIsAccepted: boolean;
    accessOfEditKeyIsAccepted: boolean;
    accessOfDeleteKeyIsAccepted: boolean;
    accessOfF9KeyIsAccepted: boolean;
    isMainOfStacks?: boolean;
    mainStacksFactory?: MainStacksFactory;
    Eventing: Events;
    initializeFieldSetListener: boolean;
    initializeFormListener: boolean;
    initializeHook: boolean;
    isInitializeHookForFirstTime: boolean;
    onLoadStartMethod?: Function;
    initializeStackMenuContainer: boolean;
    formType: 'accepting' | 'modifing';
    selfState: any;
    gridViewFactory: any;
    gridViewTabIndex: number | undefined;
    gridViewCurrentCellRef?: React.RefObject<IControlsElementType>;
    gridViewRef?: React.RefObject<HTMLDivElement>;
    isActive: boolean;
    abstract TabbingControl: TabbingControl;
    abstract ValidatingControl: ValidatingControl;
    abstract TouchingControl: TouchingControl;
    abstract ChangingControl: ChangingControl;
    protected abstract _modal?: BasePageData;
    protected abstract _popup?: BasePageData;
    abstract modal: BasePageData | undefined;
    abstract popup: PopupPageData | undefined;
    id: string;
    readonlyMode: boolean | undefined;
    caption: string;
    defaultCaptionOfPage?: string;
    activeElementIndex: number;
    dontHandleActiveElementBySelef: boolean;
    stackIcons?: StackIcon[];
    props?: PropsOfPage;
    component: any;
    stackHeaderFields?: StackHeaderFields[];
    addStackHeadersField: (data: StackHeaderFields) => void;
    private _pageKey?;
    get any(): any;
    get pageKey(): IArmisaPageKey;
    set pageKey(value: IArmisaPageKey);
    private _userOptions?;
    get userOptions(): UserOption[] | undefined;
    set userOptions(value: UserOption[] | undefined);
    addUserOption: (userOption: UserOption) => void;
    getNaming: (value: string | CaptionNaming | INaming) => string | undefined;
    getUserOption: (key: string) => any;
    setUserOption: <V>(key: string, value: V, defaultValue: V, columnOfReports: IArmisaPageKey[], isSave?: boolean) => void;
    constructor(mainStateManager: MainStateManager);
    updateFocuseState: (controlIndex?: number) => void;
    updateFocuseStateOld: (controlIndex?: number) => void;
    abstract get hasChange(): boolean;
    abstract updateHasChange: () => void;
    onClickCancelButton(): void;
    onClickHelpButton(): void;
    setHelpElementRef(): void;
    abstract selectThisPage: () => void;
    abstract closeThisPage: () => void;
    abstract showModal: (component: JSX.Element) => void;
    abstract showModalPage: (pageKey: IArmisaPageKey | undefined, props: PropsOfPage, isMainOfStacks?: boolean) => void;
    abstract showPopup: (component: JSX.Element, mouseLocation?: MouseLocationProps | React.MouseEvent, location?: TLocationPopup, byArrow?: boolean) => void;
    abstract showPopupPage: (pageKey: IArmisaPageKey | undefined, props: PropsOfPage) => void;
    abstract closeModal: () => void;
    abstract closePopup: () => void;
}
