import { AgBeanStub } from '../core/agBeanStub';
import type { AgCoreBeanCollection } from '../interfaces/agCoreBeanCollection';
import type { BaseEvents } from '../interfaces/baseEvents';
import type { BaseProperties } from '../interfaces/baseProperties';
import type { IPropertiesService } from '../interfaces/iProperties';
/** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */
export interface ManagedFocusCallbacks {
    shouldStopEventPropagation?: (e: KeyboardEvent) => boolean;
    onTabKeyDown?: (e: KeyboardEvent) => void;
    handleKeyDown?: (e: KeyboardEvent) => void;
    onFocusIn?: (e: FocusEvent) => void;
    onFocusOut?: (e: FocusEvent) => void;
}
/** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */
export declare const FOCUS_MANAGED_CLASS = "ag-focus-managed";
/** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */
export interface StopPropagationCallbacks {
    isStopPropagation: (e: Event) => boolean;
    stopPropagation: (e: Event) => void;
}
export declare class AgManagedFocusFeature<TBeanCollection extends AgCoreBeanCollection<TProperties, TGlobalEvents, TCommon, TPropertiesService>, TProperties extends BaseProperties, TGlobalEvents extends BaseEvents, TCommon, TPropertiesService extends IPropertiesService<TProperties, TCommon>> extends AgBeanStub<TBeanCollection, TProperties, TGlobalEvents, TCommon, TPropertiesService> {
    private readonly eFocusable;
    private readonly stopPropagationCallbacks;
    private readonly callbacks;
    constructor(eFocusable: HTMLElement, stopPropagationCallbacks?: StopPropagationCallbacks, callbacks?: ManagedFocusCallbacks);
    postConstruct(): void;
    private addKeyDownListeners;
}
