/**
 * @license
 * Copyright Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { IListDropdownAwareFoundation, ListDropdownAwareFoundation } from './list-dropdown-aware-foundation';
export interface ICascadingListDropdownAwareFoundation extends IListDropdownAwareFoundation {
}
export interface ICascadingListDropdownAwareFoundationConfiguration {
    popupTimeout: number;
    targetTimeout: number;
}
export declare abstract class CascadingListDropdownAwareFoundation<T> extends ListDropdownAwareFoundation implements ICascadingListDropdownAwareFoundation {
    private _config;
    protected _open: boolean;
    protected _options: T[];
    protected _childOpen: boolean;
    protected _popupHasMouse: boolean;
    protected _mouseCoords: {
        x: number;
        y: number;
    };
    protected _activeMouseLeaveTimeout: number;
    protected _targetMouseEnterListener: (evt: MouseEvent) => void;
    protected _targetMouseLeaveListener: (evt: MouseEvent) => void;
    protected _childPopupMouseEnterListener: (evt: MouseEvent) => void;
    protected _childPopupMouseLeaveListener: (evt: MouseEvent) => void;
    protected _documentMouseMoveListener: (evt: MouseEvent) => void;
    protected abstract _attachCascadingListeners(): void;
    protected abstract _detachCascadingListeners(): void;
    protected abstract _onCascadingOptionSelected(data: any): void;
    protected abstract _onCascadingChildOpen(index: number): void;
    protected abstract _onCascadingChildClose(index: number): void;
    protected abstract _closeDropdown(): void;
    protected abstract _openDropdown({ fromKeyboard }: {
        fromKeyboard?: boolean;
    }): void;
    protected abstract _setCascadeTargetInactive(): void;
    protected abstract _isOwnElement(element: Element): boolean;
    constructor(_config: ICascadingListDropdownAwareFoundationConfiguration);
    private _onChildPopupMouseEnter;
    private _onChildPopupMouseLeave;
    private _onTargetMouseEnter;
    private _onTargetMouseLeave;
    protected _clearMouseLeaveTimeout(): void;
}
