import * as React from 'react';
import { IFocusZone, IFocusZoneProps } from './FocusZone.Props';
import { BaseComponent } from '../../Utilities';
export declare class FocusZone extends BaseComponent<IFocusZoneProps, {}> implements IFocusZone {
    static defaultProps: IFocusZoneProps;
    refs: {
        [key: string]: React.ReactInstance;
        root: HTMLElement;
    };
    private _id;
    private _activeElement;
    private _focusAlignment;
    private _isInnerZone;
    constructor(props: IFocusZoneProps);
    componentDidMount(): void;
    componentWillUnmount(): void;
    render(): React.DetailedReactHTMLElement<{
        onMouseDownCapture: (ev: React.MouseEvent<HTMLElement>) => void;
        className: string;
        ref: string;
        'data-focuszone-id': string;
        'aria-labelledby': string | undefined;
        'aria-describedby': string | undefined;
        onKeyDown: (ev: React.KeyboardEvent<HTMLElement>) => void;
        onFocus: (ev: React.FocusEvent<HTMLElement>) => void;
        role: string;
    } | {
        onMouseDownCapture: (ev: React.MouseEvent<HTMLElement>) => void;
        className: string;
        ref: string;
        'data-focuszone-id': string;
        'aria-labelledby': string | undefined;
        'aria-describedby': string | undefined;
        onKeyDown: (ev: React.KeyboardEvent<HTMLElement>) => void;
        onFocus: (ev: React.FocusEvent<HTMLElement>) => void;
        defaultChecked?: boolean | undefined;
        defaultValue?: string | string[] | undefined;
        suppressContentEditableWarning?: boolean | undefined;
        accessKey?: string | undefined;
        contentEditable?: boolean | undefined;
        contextMenu?: string | undefined;
        dir?: string | undefined;
        draggable?: boolean | undefined;
        hidden?: boolean | undefined;
        id?: string | undefined;
        lang?: string | undefined;
        slot?: string | undefined;
        spellCheck?: boolean | undefined;
        style?: React.CSSProperties | undefined;
        tabIndex?: number | undefined;
        title?: string | undefined;
        inputMode?: string | undefined;
        is?: string | undefined;
        radioGroup?: string | undefined;
        role: string;
        about?: string | undefined;
        datatype?: string | undefined;
        inlist?: any;
        prefix?: string | undefined;
        property?: string | undefined;
        resource?: string | undefined;
        typeof?: string | undefined;
        vocab?: string | undefined;
        autoCapitalize?: string | undefined;
        autoCorrect?: string | undefined;
        autoSave?: string | undefined;
        color?: string | undefined;
        itemProp?: string | undefined;
        itemScope?: boolean | undefined;
        itemType?: string | undefined;
        itemID?: string | undefined;
        itemRef?: string | undefined;
        results?: number | undefined;
        security?: string | undefined;
        unselectable?: boolean | undefined;
        children?: React.ReactNode;
        dangerouslySetInnerHTML?: {
            __html: string;
        } | undefined;
        onCopy?: React.EventHandler<React.ClipboardEvent<HTMLDivElement>> | undefined;
        onCopyCapture?: React.EventHandler<React.ClipboardEvent<HTMLDivElement>> | undefined;
        onCut?: React.EventHandler<React.ClipboardEvent<HTMLDivElement>> | undefined;
        onCutCapture?: React.EventHandler<React.ClipboardEvent<HTMLDivElement>> | undefined;
        onPaste?: React.EventHandler<React.ClipboardEvent<HTMLDivElement>> | undefined;
        onPasteCapture?: React.EventHandler<React.ClipboardEvent<HTMLDivElement>> | undefined;
        onCompositionEnd?: React.EventHandler<React.CompositionEvent<HTMLDivElement>> | undefined;
        onCompositionEndCapture?: React.EventHandler<React.CompositionEvent<HTMLDivElement>> | undefined;
        onCompositionStart?: React.EventHandler<React.CompositionEvent<HTMLDivElement>> | undefined;
        onCompositionStartCapture?: React.EventHandler<React.CompositionEvent<HTMLDivElement>> | undefined;
        onCompositionUpdate?: React.EventHandler<React.CompositionEvent<HTMLDivElement>> | undefined;
        onCompositionUpdateCapture?: React.EventHandler<React.CompositionEvent<HTMLDivElement>> | undefined;
        onFocusCapture?: React.EventHandler<React.FocusEvent<HTMLDivElement>> | undefined;
        onBlur?: React.EventHandler<React.FocusEvent<HTMLDivElement>> | undefined;
        onBlurCapture?: React.EventHandler<React.FocusEvent<HTMLDivElement>> | undefined;
        onChange?: React.EventHandler<React.FormEvent<HTMLDivElement>> | undefined;
        onChangeCapture?: React.EventHandler<React.FormEvent<HTMLDivElement>> | undefined;
        onInput?: React.EventHandler<React.FormEvent<HTMLDivElement>> | undefined;
        onInputCapture?: React.EventHandler<React.FormEvent<HTMLDivElement>> | undefined;
        onReset?: React.EventHandler<React.FormEvent<HTMLDivElement>> | undefined;
        onResetCapture?: React.EventHandler<React.FormEvent<HTMLDivElement>> | undefined;
        onSubmit?: React.EventHandler<React.FormEvent<HTMLDivElement>> | undefined;
        onSubmitCapture?: React.EventHandler<React.FormEvent<HTMLDivElement>> | undefined;
        onInvalid?: React.EventHandler<React.FormEvent<HTMLDivElement>> | undefined;
        onInvalidCapture?: React.EventHandler<React.FormEvent<HTMLDivElement>> | undefined;
        onLoad?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onLoadCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onError?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onErrorCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onKeyDownCapture?: React.EventHandler<React.KeyboardEvent<HTMLDivElement>> | undefined;
        onKeyPress?: React.EventHandler<React.KeyboardEvent<HTMLDivElement>> | undefined;
        onKeyPressCapture?: React.EventHandler<React.KeyboardEvent<HTMLDivElement>> | undefined;
        onKeyUp?: React.EventHandler<React.KeyboardEvent<HTMLDivElement>> | undefined;
        onKeyUpCapture?: React.EventHandler<React.KeyboardEvent<HTMLDivElement>> | undefined;
        onAbort?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onAbortCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onCanPlay?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onCanPlayCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onCanPlayThrough?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onCanPlayThroughCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onDurationChange?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onDurationChangeCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onEmptied?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onEmptiedCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onEncrypted?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onEncryptedCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onEnded?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onEndedCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onLoadedData?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onLoadedDataCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onLoadedMetadata?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onLoadedMetadataCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onLoadStart?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onLoadStartCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onPause?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onPauseCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onPlay?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onPlayCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onPlaying?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onPlayingCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onProgress?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onProgressCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onRateChange?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onRateChangeCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onSeeked?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onSeekedCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onSeeking?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onSeekingCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onStalled?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onStalledCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onSuspend?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onSuspendCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onTimeUpdate?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onTimeUpdateCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onVolumeChange?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onVolumeChangeCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onWaiting?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onWaitingCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onClick?: React.EventHandler<React.MouseEvent<HTMLDivElement>> | undefined;
        onClickCapture?: React.EventHandler<React.MouseEvent<HTMLDivElement>> | undefined;
        onContextMenu?: React.EventHandler<React.MouseEvent<HTMLDivElement>> | undefined;
        onContextMenuCapture?: React.EventHandler<React.MouseEvent<HTMLDivElement>> | undefined;
        onDoubleClick?: React.EventHandler<React.MouseEvent<HTMLDivElement>> | undefined;
        onDoubleClickCapture?: React.EventHandler<React.MouseEvent<HTMLDivElement>> | undefined;
        onDrag?: React.EventHandler<React.DragEvent<HTMLDivElement>> | undefined;
        onDragCapture?: React.EventHandler<React.DragEvent<HTMLDivElement>> | undefined;
        onDragEnd?: React.EventHandler<React.DragEvent<HTMLDivElement>> | undefined;
        onDragEndCapture?: React.EventHandler<React.DragEvent<HTMLDivElement>> | undefined;
        onDragEnter?: React.EventHandler<React.DragEvent<HTMLDivElement>> | undefined;
        onDragEnterCapture?: React.EventHandler<React.DragEvent<HTMLDivElement>> | undefined;
        onDragExit?: React.EventHandler<React.DragEvent<HTMLDivElement>> | undefined;
        onDragExitCapture?: React.EventHandler<React.DragEvent<HTMLDivElement>> | undefined;
        onDragLeave?: React.EventHandler<React.DragEvent<HTMLDivElement>> | undefined;
        onDragLeaveCapture?: React.EventHandler<React.DragEvent<HTMLDivElement>> | undefined;
        onDragOver?: React.EventHandler<React.DragEvent<HTMLDivElement>> | undefined;
        onDragOverCapture?: React.EventHandler<React.DragEvent<HTMLDivElement>> | undefined;
        onDragStart?: React.EventHandler<React.DragEvent<HTMLDivElement>> | undefined;
        onDragStartCapture?: React.EventHandler<React.DragEvent<HTMLDivElement>> | undefined;
        onDrop?: React.EventHandler<React.DragEvent<HTMLDivElement>> | undefined;
        onDropCapture?: React.EventHandler<React.DragEvent<HTMLDivElement>> | undefined;
        onMouseDown?: React.EventHandler<React.MouseEvent<HTMLDivElement>> | undefined;
        onMouseEnter?: React.EventHandler<React.MouseEvent<HTMLDivElement>> | undefined;
        onMouseLeave?: React.EventHandler<React.MouseEvent<HTMLDivElement>> | undefined;
        onMouseMove?: React.EventHandler<React.MouseEvent<HTMLDivElement>> | undefined;
        onMouseMoveCapture?: React.EventHandler<React.MouseEvent<HTMLDivElement>> | undefined;
        onMouseOut?: React.EventHandler<React.MouseEvent<HTMLDivElement>> | undefined;
        onMouseOutCapture?: React.EventHandler<React.MouseEvent<HTMLDivElement>> | undefined;
        onMouseOver?: React.EventHandler<React.MouseEvent<HTMLDivElement>> | undefined;
        onMouseOverCapture?: React.EventHandler<React.MouseEvent<HTMLDivElement>> | undefined;
        onMouseUp?: React.EventHandler<React.MouseEvent<HTMLDivElement>> | undefined;
        onMouseUpCapture?: React.EventHandler<React.MouseEvent<HTMLDivElement>> | undefined;
        onSelect?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onSelectCapture?: React.EventHandler<React.SyntheticEvent<HTMLDivElement>> | undefined;
        onTouchCancel?: React.EventHandler<React.TouchEvent<HTMLDivElement>> | undefined;
        onTouchCancelCapture?: React.EventHandler<React.TouchEvent<HTMLDivElement>> | undefined;
        onTouchEnd?: React.EventHandler<React.TouchEvent<HTMLDivElement>> | undefined;
        onTouchEndCapture?: React.EventHandler<React.TouchEvent<HTMLDivElement>> | undefined;
        onTouchMove?: React.EventHandler<React.TouchEvent<HTMLDivElement>> | undefined;
        onTouchMoveCapture?: React.EventHandler<React.TouchEvent<HTMLDivElement>> | undefined;
        onTouchStart?: React.EventHandler<React.TouchEvent<HTMLDivElement>> | undefined;
        onTouchStartCapture?: React.EventHandler<React.TouchEvent<HTMLDivElement>> | undefined;
        onScroll?: React.EventHandler<React.UIEvent<HTMLDivElement>> | undefined;
        onScrollCapture?: React.EventHandler<React.UIEvent<HTMLDivElement>> | undefined;
        onWheel?: React.EventHandler<React.WheelEvent<HTMLDivElement>> | undefined;
        onWheelCapture?: React.EventHandler<React.WheelEvent<HTMLDivElement>> | undefined;
        onAnimationStart?: React.EventHandler<React.AnimationEvent<HTMLDivElement>> | undefined;
        onAnimationStartCapture?: React.EventHandler<React.AnimationEvent<HTMLDivElement>> | undefined;
        onAnimationEnd?: React.EventHandler<React.AnimationEvent<HTMLDivElement>> | undefined;
        onAnimationEndCapture?: React.EventHandler<React.AnimationEvent<HTMLDivElement>> | undefined;
        onAnimationIteration?: React.EventHandler<React.AnimationEvent<HTMLDivElement>> | undefined;
        onAnimationIterationCapture?: React.EventHandler<React.AnimationEvent<HTMLDivElement>> | undefined;
        onTransitionEnd?: React.EventHandler<React.TransitionEvent<HTMLDivElement>> | undefined;
        onTransitionEndCapture?: React.EventHandler<React.TransitionEvent<HTMLDivElement>> | undefined;
    }, HTMLElement>;
    /**
     * Sets focus to the first tabbable item in the zone.
     * @returns True if focus could be set to an active element, false if no operation was taken.
     */
    focus(forceIntoFirstElement?: boolean): boolean;
    /**
     * Sets focus to a specific child element within the zone. This can be used in conjunction with
     * onBeforeFocus to created delayed focus scenarios (like animate the scroll position to the correct
     * location and then focus.)
     * @param {HTMLElement} element The child element within the zone to focus.
     * @returns True if focus could be set to an active element, false if no operation was taken.
     */
    focusElement(element: HTMLElement): boolean;
    private _onFocus(ev);
    /**
     * Handle global tab presses so that we can patch tabindexes on the fly.
     */
    private _onKeyDownCapture(ev);
    private _onMouseDown(ev);
    /**
     * Handle the keystrokes.
     */
    private _onKeyDown(ev);
    /**
     * Walk up the dom try to find a focusable element.
     */
    private _tryInvokeClickForFocusable(target);
    /**
     * Traverse to find first child zone.
     */
    private _getFirstInnerZone(rootElement?);
    private _moveFocus(isForward, getDistanceFromCenter, ev?);
    private _moveFocusDown();
    private _moveFocusUp();
    private _moveFocusLeft();
    private _moveFocusRight();
    private _setFocusAlignment(element, isHorizontal?, isVertical?);
    private _isImmediateDescendantOfZone(element?);
    private _getOwnerZone(element?);
    private _updateTabIndexes(element?);
    private _isElementInput(element);
    private _shouldInputLoseFocus(element, isForward?);
}
