import { Tabbing } from ".";
import { MainStateManager } from "../../../MainStateManager";
import { IMainStateFactory } from "../../../Types";
import { IFocusAbleGridEditFactory } from "./GridEditTabbing";
export interface IFocusAbleElementFactory {
    mainStateManager: MainStateManager;
    tabIndex: number;
    element: HTMLElement;
    disabled: boolean;
    hidden: boolean;
    mainStateFactory: IMainStateFactory;
    factoryFieldName: string;
}
declare class MergeElementAndGridEdit {
    element: HTMLElement;
    tabIndex: number;
    factory: IFocusAbleElementFactory | IFocusAbleGridEditFactory;
    constructor(element: HTMLElement, tabIndex: number, factory: IFocusAbleElementFactory | IFocusAbleGridEditFactory);
}
export declare class ElementTabbing {
    tabbing: Tabbing;
    isEmpty: () => boolean;
    focusAbleElements: IFocusAbleElementFactory[];
    constructor(tabbing: Tabbing);
    getFocusAbleElements: () => MergeElementAndGridEdit[];
    focus: () => void;
    isThereAnyElement(element: EventTarget): MergeElementAndGridEdit | undefined;
    focusToActiveElementTabIndex: () => boolean;
    focusToZeroTabIndexOrFirstElementOrToolbox: () => void;
    focusToZeroTabIndexElement: () => boolean;
    focusToFirstTabIndexElement: () => boolean;
    focusToMaxTabIndexOrLastElement: () => void;
    focusToMaxTabIndexElement: () => boolean;
    focusToLastTabIndexElement: () => boolean;
    focusToElementByTabIndex: (tabIndex: number) => boolean;
    focusToElementByHTMLElement: (element: HTMLElement) => boolean;
    validateAndFocusNextElement: () => void;
    focusNextElement: () => void;
    focusPreviousElement: () => void;
    setFocus(find: MergeElementAndGridEdit): void;
}
export {};
