import React, { MutableRefObject, Ref, MouseEventHandler } from 'react';
import { Props } from '../../types';
import { PropsForFeatures } from '../../utils/render';
declare type MouseEvent<T> = Parameters<MouseEventHandler<T>>[0];
interface PopoverRenderPropArg {
    open: boolean;
    close(focusableElement?: HTMLElement | MutableRefObject<HTMLElement | null> | MouseEvent<HTMLElement>): void;
}
interface ButtonRenderPropArg {
    open: boolean;
}
declare type ButtonPropsWeControl = 'id' | 'type' | 'aria-expanded' | 'aria-controls' | 'onKeyDown' | 'onClick';
interface OverlayRenderPropArg {
    open: boolean;
}
declare type OverlayPropsWeControl = 'id' | 'aria-hidden' | 'onClick';
declare let OverlayRenderFeatures: number;
interface PanelRenderPropArg {
    open: boolean;
    close: (focusableElement?: HTMLElement | MutableRefObject<HTMLElement | null>) => void;
}
declare type PanelPropsWeControl = 'id' | 'onKeyDown';
declare let PanelRenderFeatures: number;
interface GroupRenderPropArg {
}
declare type GroupPropsWeControl = 'id';
export declare let Popover: (<TTag extends React.ElementType<any> = "div">(props: Props<TTag, PopoverRenderPropArg, "1D45E01E-AF44-47C4-988A-19A94EBAF55C">, ref: Ref<HTMLElement>) => JSX.Element) & {
    displayName: string;
} & {
    Button: (<TTag_1 extends React.ElementType<any> = "button">(props: Props<TTag_1, ButtonRenderPropArg, "id" | "type" | "aria-controls" | "aria-expanded" | "onKeyDown" | "onClick">, ref: Ref<HTMLButtonElement>) => JSX.Element) & {
        displayName: string;
    };
    Overlay: (<TTag_2 extends React.ElementType<any> = "div">(props: (Pick<import("../../types").PropsOf<TTag_2>, Exclude<keyof import("../../types").PropsOf<TTag_2>, "id" | "children" | "className" | "as" | "refName">> & {
        as?: TTag_2 | undefined;
        children?: string | number | boolean | {} | React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)> | Iterable<React.ReactNode> | React.ReactPortal | ((bag: OverlayRenderPropArg) => React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)>) | null | undefined;
        refName?: string | undefined;
    } & (true extends (import("../../types").PropsOf<TTag_2> extends never ? never : "className" extends keyof import("../../types").PropsOf<TTag_2> ? true : never) ? {
        className?: import("../../types").PropsOf<TTag_2>["className"] | ((bag: OverlayRenderPropArg) => string) | undefined;
    } : {}) & {
        static?: undefined;
    } & {
        unmount?: boolean | undefined;
    }) | (Pick<import("../../types").PropsOf<TTag_2>, Exclude<keyof import("../../types").PropsOf<TTag_2>, "id" | "children" | "className" | "as" | "refName">> & {
        as?: TTag_2 | undefined;
        children?: string | number | boolean | {} | React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)> | Iterable<React.ReactNode> | React.ReactPortal | ((bag: OverlayRenderPropArg) => React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)>) | null | undefined;
        refName?: string | undefined;
    } & (true extends (import("../../types").PropsOf<TTag_2> extends never ? never : "className" extends keyof import("../../types").PropsOf<TTag_2> ? true : never) ? {
        className?: import("../../types").PropsOf<TTag_2>["className"] | ((bag: OverlayRenderPropArg) => string) | undefined;
    } : {}) & {
        unmount?: undefined;
    } & {
        static?: boolean | undefined;
    }) | (Pick<import("../../types").PropsOf<TTag_2>, Exclude<keyof import("../../types").PropsOf<TTag_2>, "children" | "className" | "aria-hidden" | "as" | "refName">> & {
        as?: TTag_2 | undefined;
        children?: string | number | boolean | {} | React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)> | Iterable<React.ReactNode> | React.ReactPortal | ((bag: OverlayRenderPropArg) => React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)>) | null | undefined;
        refName?: string | undefined;
    } & (true extends (import("../../types").PropsOf<TTag_2> extends never ? never : "className" extends keyof import("../../types").PropsOf<TTag_2> ? true : never) ? {
        className?: import("../../types").PropsOf<TTag_2>["className"] | ((bag: OverlayRenderPropArg) => string) | undefined;
    } : {}) & {
        static?: undefined;
    } & {
        unmount?: boolean | undefined;
    }) | (Pick<import("../../types").PropsOf<TTag_2>, Exclude<keyof import("../../types").PropsOf<TTag_2>, "children" | "className" | "aria-hidden" | "as" | "refName">> & {
        as?: TTag_2 | undefined;
        children?: string | number | boolean | {} | React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)> | Iterable<React.ReactNode> | React.ReactPortal | ((bag: OverlayRenderPropArg) => React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)>) | null | undefined;
        refName?: string | undefined;
    } & (true extends (import("../../types").PropsOf<TTag_2> extends never ? never : "className" extends keyof import("../../types").PropsOf<TTag_2> ? true : never) ? {
        className?: import("../../types").PropsOf<TTag_2>["className"] | ((bag: OverlayRenderPropArg) => string) | undefined;
    } : {}) & {
        unmount?: undefined;
    } & {
        static?: boolean | undefined;
    }) | (Pick<import("../../types").PropsOf<TTag_2>, Exclude<keyof import("../../types").PropsOf<TTag_2>, "children" | "className" | "onClick" | "as" | "refName">> & {
        as?: TTag_2 | undefined;
        children?: string | number | boolean | {} | React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)> | Iterable<React.ReactNode> | React.ReactPortal | ((bag: OverlayRenderPropArg) => React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)>) | null | undefined;
        refName?: string | undefined;
    } & (true extends (import("../../types").PropsOf<TTag_2> extends never ? never : "className" extends keyof import("../../types").PropsOf<TTag_2> ? true : never) ? {
        className?: import("../../types").PropsOf<TTag_2>["className"] | ((bag: OverlayRenderPropArg) => string) | undefined;
    } : {}) & {
        static?: undefined;
    } & {
        unmount?: boolean | undefined;
    }) | (Pick<import("../../types").PropsOf<TTag_2>, Exclude<keyof import("../../types").PropsOf<TTag_2>, "children" | "className" | "onClick" | "as" | "refName">> & {
        as?: TTag_2 | undefined;
        children?: string | number | boolean | {} | React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)> | Iterable<React.ReactNode> | React.ReactPortal | ((bag: OverlayRenderPropArg) => React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)>) | null | undefined;
        refName?: string | undefined;
    } & (true extends (import("../../types").PropsOf<TTag_2> extends never ? never : "className" extends keyof import("../../types").PropsOf<TTag_2> ? true : never) ? {
        className?: import("../../types").PropsOf<TTag_2>["className"] | ((bag: OverlayRenderPropArg) => string) | undefined;
    } : {}) & {
        unmount?: undefined;
    } & {
        static?: boolean | undefined;
    }), ref: Ref<HTMLDivElement>) => React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)> | null) & {
        displayName: string;
    };
    Panel: (<TTag_3 extends React.ElementType<any> = "div">(props: (Pick<import("../../types").PropsOf<TTag_3>, Exclude<keyof import("../../types").PropsOf<TTag_3>, "id" | "children" | "className" | "as" | "refName">> & {
        as?: TTag_3 | undefined;
        children?: string | number | boolean | {} | React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)> | Iterable<React.ReactNode> | React.ReactPortal | ((bag: PanelRenderPropArg) => React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)>) | null | undefined;
        refName?: string | undefined;
    } & (true extends (import("../../types").PropsOf<TTag_3> extends never ? never : "className" extends keyof import("../../types").PropsOf<TTag_3> ? true : never) ? {
        className?: import("../../types").PropsOf<TTag_3>["className"] | ((bag: PanelRenderPropArg) => string) | undefined;
    } : {}) & {
        static?: undefined;
    } & {
        unmount?: boolean | undefined;
    } & {
        focus?: boolean | undefined;
    }) | (Pick<import("../../types").PropsOf<TTag_3>, Exclude<keyof import("../../types").PropsOf<TTag_3>, "id" | "children" | "className" | "as" | "refName">> & {
        as?: TTag_3 | undefined;
        children?: string | number | boolean | {} | React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)> | Iterable<React.ReactNode> | React.ReactPortal | ((bag: PanelRenderPropArg) => React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)>) | null | undefined;
        refName?: string | undefined;
    } & (true extends (import("../../types").PropsOf<TTag_3> extends never ? never : "className" extends keyof import("../../types").PropsOf<TTag_3> ? true : never) ? {
        className?: import("../../types").PropsOf<TTag_3>["className"] | ((bag: PanelRenderPropArg) => string) | undefined;
    } : {}) & {
        unmount?: undefined;
    } & {
        static?: boolean | undefined;
    } & {
        focus?: boolean | undefined;
    }) | (Pick<import("../../types").PropsOf<TTag_3>, Exclude<keyof import("../../types").PropsOf<TTag_3>, "children" | "className" | "onKeyDown" | "as" | "refName">> & {
        as?: TTag_3 | undefined;
        children?: string | number | boolean | {} | React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)> | Iterable<React.ReactNode> | React.ReactPortal | ((bag: PanelRenderPropArg) => React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)>) | null | undefined;
        refName?: string | undefined;
    } & (true extends (import("../../types").PropsOf<TTag_3> extends never ? never : "className" extends keyof import("../../types").PropsOf<TTag_3> ? true : never) ? {
        className?: import("../../types").PropsOf<TTag_3>["className"] | ((bag: PanelRenderPropArg) => string) | undefined;
    } : {}) & {
        static?: undefined;
    } & {
        unmount?: boolean | undefined;
    } & {
        focus?: boolean | undefined;
    }) | (Pick<import("../../types").PropsOf<TTag_3>, Exclude<keyof import("../../types").PropsOf<TTag_3>, "children" | "className" | "onKeyDown" | "as" | "refName">> & {
        as?: TTag_3 | undefined;
        children?: string | number | boolean | {} | React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)> | Iterable<React.ReactNode> | React.ReactPortal | ((bag: PanelRenderPropArg) => React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)>) | null | undefined;
        refName?: string | undefined;
    } & (true extends (import("../../types").PropsOf<TTag_3> extends never ? never : "className" extends keyof import("../../types").PropsOf<TTag_3> ? true : never) ? {
        className?: import("../../types").PropsOf<TTag_3>["className"] | ((bag: PanelRenderPropArg) => string) | undefined;
    } : {}) & {
        unmount?: undefined;
    } & {
        static?: boolean | undefined;
    } & {
        focus?: boolean | undefined;
    }), ref: Ref<HTMLDivElement>) => JSX.Element) & {
        displayName: string;
    };
    Group: (<TTag_4 extends React.ElementType<any> = "div">(props: Props<TTag_4, GroupRenderPropArg, "id">, ref: Ref<HTMLElement>) => JSX.Element) & {
        displayName: string;
    };
};
export {};
