///
import type { ComponentProps } from '@fluentui/react-utilities';
import type { ComponentState } from '@fluentui/react-utilities';
import { ForwardRefComponent } from '@fluentui/react-utilities';
import { Label } from '@fluentui/react-label';
import type { PopoverProps } from '@fluentui/react-popover';
import type { PopoverSurface } from '@fluentui/react-popover';
import * as React_2 from 'react';
import type { Slot } from '@fluentui/react-utilities';
import type { SlotClassNames } from '@fluentui/react-utilities';
/**
* InfoButtons provide a way to display additional information about a form field or an area in the UI.
*/
declare const InfoButton: ForwardRefComponent;
/**
* InfoButton Props
*/
declare type InfoButtonProps = Omit>, 'disabled'> & {
/**
* Size of the InfoButton.
*
* @default medium
*/
size?: 'small' | 'medium' | 'large';
/**
* Whether the InfoButton should be rendered inline or on a Portal.
*
* @default true
*/
inline?: boolean;
};
declare type InfoButtonSlots = {
root: NonNullable>;
/**
* The Popover element that wraps the info and root slots. Use this slot to pass props to the Popover.
*/
popover: NonNullable>>>;
/**
* The information to be displayed in the PopoverSurface when the button is pressed.
*/
info: NonNullable>;
};
/**
* InfoLabel component
*/
export declare const InfoLabel: ForwardRefComponent;
export declare const infoLabelClassNames: SlotClassNames;
/**
* InfoLabel Props
*/
export declare type InfoLabelProps = ComponentProps, 'label'> & {
/**
* The content of the InfoButton's popover.
*/
info?: InfoButtonProps['info'];
};
export declare type InfoLabelSlots = {
root: NonNullable>;
/**
* The Label component.
*
* It is not typically necessary to use this prop. The label text is the child of the ``, and other props
* such as `size` and `required` should be set directly on the `InfoLabel`.
*
* This is the PRIMARY slot: all native properties specified directly on `` will be applied to this slot,
* except `className` and `style`, which remain on the root slot.
*/
label: NonNullable>;
/**
* The InfoButton component.
*
* It is not typically necessary to use this prop. The content can be set using the `info` prop of the InfoLabel.
*/
infoButton: Slot;
};
/**
* State used in rendering InfoLabel
*/
export declare type InfoLabelState = ComponentState & Pick;
/**
* Render the final JSX of InfoLabel
*/
export declare const renderInfoLabel_unstable: (state: InfoLabelState) => JSX.Element;
/**
* Create the state required to render InfoLabel.
*
* The returned state can be modified with hooks such as useInfoLabelStyles_unstable,
* before being passed to renderInfoLabel_unstable.
*
* @param props - props from this instance of InfoLabel
* @param ref - reference to label element of InfoLabel
*/
export declare const useInfoLabel_unstable: (props: InfoLabelProps, ref: React_2.Ref) => InfoLabelState;
/**
* Apply styling to the InfoLabel slots based on the state
*/
export declare const useInfoLabelStyles_unstable: (state: InfoLabelState) => InfoLabelState;
export { }