import React from 'react';
type FocusableOptions = {
    isFocusWithMouse?: boolean;
};
interface FocusOptions {
    focusVisible?: boolean;
}
export type Triggers = {
    blur: () => void;
    focus: (options?: FocusOptions) => void;
};
export type WithFocusableProps<Element extends HTMLElement = HTMLElement> = {
    disabled?: boolean;
    onFocus?: (event: FocusEvent, triggers: Triggers) => void;
    onBlur?: (event: FocusEvent, triggers: Triggers) => void;
    ref?: React.RefObject<Element>;
    className?: string;
};
export type InjectedFocusableProps<P extends {}, E = HTMLElement> = P & {
    focusableOnFocus?: React.FocusEventHandler<E>;
    focusableOnBlur?: React.FocusEventHandler<E>;
    ref?: React.RefObject<E>;
    className?: string;
};
export declare function withFocusable<T extends {}, E extends HTMLElement = HTMLElement>(Component: React.ComponentType<T>, options?: FocusableOptions): React.ComponentType<T & WithFocusableProps<E>>;
export {};
//# sourceMappingURL=Focusable.d.ts.map