import * as botframework_webchat_core from 'botframework-webchat-core';
import { WebChatActivity, DirectLineAttachment, DirectLineCardAction, GlobalScopePonyfill, Observable, SendBoxAttachment } from 'botframework-webchat-core';
import { v as useBuildRenderActivityCallback, c as LegacyActivityComponentFactory, b as LegacyRenderAttachment } from './_dtsroll-chunks/qsx2_JN4-botframework-webchat-api-middleware.js';
import * as react from 'react';
import { ReactNode } from 'react';
import { u as useSuggestedActionsHooks } from './_dtsroll-chunks/CEcj2Npa-botframework-webchat-redux-store.js';
import 'valibot';
import 'react-chain-of-responsibility/preview';

type GroupedActivities = readonly (readonly WebChatActivity[])[];
/**
 * This hook will return a callback function. When called with `activities`, the callback function will run the `groupActivitiesMiddleware` and will return all groupings.
 *
 * @deprecated This function is deprecated and will be removed on or after 2027-05-04. Developers should migrate to [`useGroupActivitiesByName`](#usegroupactivitiesbyname) for performance reason.
 */
declare function useGroupActivities(): ({ activities }: Readonly<{
    activities: readonly WebChatActivity[];
}>) => Readonly<{
    [key: string]: GroupedActivities;
}>;

/**
 * This hook will return a callback function. When called with `activities`, the callback function will run the `groupActivitiesMiddleware` for the specified grouping name.
 *
 * Unlike the [`useGroupActivities`](#usegroupactivities) hook which provide result for all groupings, this hook only provide result for the specified grouping name and the grouping name must be one of the name specified in `styleOptions.groupActivitiesBy`.
 *
 * @returns Result of `groupActivitiesMiddleware` for the specified grouping name
 */
declare function useGroupActivitiesBy(): (activities: readonly WebChatActivity[], name: string) => readonly (readonly WebChatActivity[])[];

type Typing = {
    at: number;
    expireAt: number;
    name: string;
    role: 'bot' | 'user';
    type: 'busy' | 'livestream';
};

declare function useActiveTyping(expireAfter?: number): readonly [Readonly<Record<string, Typing>>];

declare function useActivities(): [WebChatActivity[]];

declare function useActivityKeys(): readonly [readonly string[]];

/**
 * Returns an arrays of two list of activity keys: read and unread.
 */
declare function useActivityKeysByRead(): readonly [readonly string[], readonly string[]];

declare function useAvatarForBot(): [{
    image: string;
    initials: string;
}];

declare function useAvatarForUser(): [{
    image: string;
    initials: string;
}];

declare function useByteFormatter(): (bytes: number) => string;

declare function useConnectivityStatus(): [string];

/**
 * @deprecated Use useBuildRenderActivityCallback() instead, this hook will be removed on or after 2027-08-16.
 */
declare function useCreateActivityRenderer(): LegacyActivityComponentFactory;

type ActivityStatusRenderer = (renderOptions: {
    activity: WebChatActivity;
}) => (props?: {
    hideTimestamp?: boolean;
}) => ReactNode;
declare function useCreateActivityStatusRenderer(): ActivityStatusRenderer;

type OnScreenReactNode = Exclude<ReactNode, boolean | null | undefined>;
/**
 * Renders a UI component by returning a React component, or `false`, if nothing should be rendered.
 *
 * @returns {(React.FC|false)} Returns a React component to render, or `false`, if nothing should be rendered.
 */
type ComponentFactory<TComponentFactoryArguments extends any[], TProps> = (...args: TComponentFactoryArguments) => ((props?: TProps) => OnScreenReactNode) | false;
/**
 * Enhances a UI component through decoration, replacement, or removal.
 */
type ComponentEnhancer<TComponentFactoryArguments extends any[], TProps> = (next: ComponentFactory<TComponentFactoryArguments, TProps>) => ComponentFactory<TComponentFactoryArguments, TProps>;
/**
 * Middleware for rendering a UI component.
 *
 * The middleware is a series of enhancers that are chained through functional composition. Each enhancer can:
 *
 * - Decorate: call the next enhancer to get its React component, then decorate it through UI composition
 * - Replace: return a React component without calling the next enhancer
 * - Remove: return `false` without calling the next enhancer
 *
 * The signature of the middleware is:
 *
 * ```
 * (...args: SetupArguments) => (next: Enhancer) => (...args: ComponentFactoryArguments) => false | React.ComponentType<Props>
 * ```
 */
type ComponentMiddleware<TSetupArguments extends any[], TComponentFactoryArguments extends any[], TProps> = (...args: TSetupArguments) => ComponentEnhancer<TComponentFactoryArguments, TProps>;

type AttachmentForScreenReaderComponentFactoryOptions = [
    {
        activity: WebChatActivity;
        attachment: DirectLineAttachment;
    }
];
type AttachmentForScreenReaderComponentFactory = ComponentFactory<AttachmentForScreenReaderComponentFactoryOptions, {}>;
type AttachmentForScreenReaderMiddleware = ComponentMiddleware<[
], AttachmentForScreenReaderComponentFactoryOptions, {}>;

declare function useCreateAttachmentForScreenReaderRenderer(): AttachmentForScreenReaderComponentFactory;

declare function useCreateAvatarRenderer(): ({ activity }: {
    activity: WebChatActivity;
}) => false | (() => Exclude<ReactNode, boolean | null | undefined>);

type StyleOptions = {
    /**
     * Basic styling
     */
    /** Web Chat component accent color */
    accent?: string;
    /**
     * Transcript background color
     */
    backgroundColor?: string;
    /**
     * Secondary component color
     */
    subtle?: string;
    /**
     * Default padding used in most visual components
     */
    paddingRegular?: number;
    /**
     * Padding used for suggestedAction buttons
     */
    paddingWide?: number;
    /**
    Transition for Bubble, Carousel, and StackedLayout
     */
    transitionDuration?: string;
    /**
     * Fonts
     * Default font size will be inherited from the host app
     */
    /**
     * Font size used for secondary components such as sendStatus
     */
    fontSizeSmall?: number | string;
    /**
     * Font used for ErrorBox
     * comma-space separated string
     */
    monospaceFont?: string;
    /**
     * Font used in most visual components
     * comma-space separated string
     */
    primaryFont?: string;
    rootHeight?: number | string;
    rootWidth?: number | string;
    /**
     * "z-index" for the root container of Web Chat. This will form a new stacking context so "z-index" used in children won't pollute.
     */
    rootZIndex?: number;
    /**
     * Avatar styling
     */
    /**
     * Border radius used for both bot and user avatar
     */
    avatarBorderRadius?: number | string;
    /**
     * Height and width of avatar
     */
    avatarSize?: number;
    /**
     * Background color defaults to accent
     */
    botAvatarBackgroundColor?: string;
    /**
     * URL string. Can be data URI or blob
     * botAvatarInitials must be set to empty string
     */
    botAvatarImage?: string;
    /**
     * Typically rendered as two letters, e.g. 'WC'
     * Empty string is required when setting botAvatarImage
     */
    botAvatarInitials?: string;
    /**
     * Background color defaults to accent
     */
    userAvatarBackgroundColor?: string;
    /**
     * URL string. Can be data URI or blob
     * userAvatarInitials must be set to empty string
     */
    userAvatarImage?: string;
    /**
     * Typically rendered as two letters, i.e. 'WC'
     * Empty string is required when setting userAvatarImage
     */
    userAvatarInitials?: string;
    /**
     * Avatar grouping can be set at 3 different levels:
     * Show avatar on activities sharing the same sender ('sender')
     * Show avatar on activities sharing the same status ('status'; default)
     * Show avatar on every activity (true)
     */
    showAvatarInGroup?: true | 'sender' | 'status';
    /**
     *  Bubble styling
     * 'Bubble' refers to the container of the activit(ies) from the bot and user. Below, non-'fromUser' props refer to styling for the bot activities.
     */
    bubbleBackground?: string;
    bubbleBorderColor?: string;
    bubbleBorderRadius?: number;
    bubbleBorderStyle?: string;
    bubbleBorderWidth?: number;
    bubbleFromUserBackground?: string;
    bubbleFromUserBorderColor?: string;
    bubbleFromUserBorderRadius?: number;
    bubbleFromUserBorderStyle?: string;
    bubbleFromUserBorderWidth?: number;
    /**
     * Nub offset 'bottom' will render nub at the bottom
     * A positive or negative number will shift nub offset up/down
     * "top" is equivalent to positive zero.
     * "bottom" is equivalent to negative zero.
     */
    bubbleFromUserNubOffset?: number | 'bottom' | 'top';
    /**
     * Nub size 0 will render a sharp corner
     */
    bubbleFromUserNubSize?: number;
    bubbleFromUserTextColor?: string;
    /**
     * Specifies the fixed height of the bubble for image, default to unset.
     *
     * @deprecated Use `bubbleImageMaxHeight` and `bubbleImageMinHeight` instead. To mimick behavior before deprecation, set both options to 240px.
     */
    bubbleImageHeight?: number | undefined;
    /**
     * Specifies the maximum height of the bubble for image, default to 240px.
     *
     * CSS variable: `--webchat__max-height--image-bubble`.
     *
     * New in 4.18.0.
     */
    bubbleImageMaxHeight?: number | undefined;
    /**
     * Specifies the minimum height of the bubble for image, default to 240px.
     *
     * CSS variable: `--webchat__min-height--image-bubble`.
     *
     * New in 4.18.0.
     */
    bubbleImageMinHeight?: number | undefined;
    bubbleMaxWidth?: number | undefined;
    bubbleMinWidth?: number | undefined;
    bubbleAttachmentMaxWidth?: number | undefined;
    bubbleAttachmentMinWidth?: number | undefined;
    bubbleMessageMaxWidth?: number | undefined;
    bubbleMessageMinWidth?: number | undefined;
    bubbleMinHeight?: number;
    /**
     * Nub offset ''bottom' will render nub at the bottom
     * A positive or negative number will shift nub offset up/down
     * "top" is equivalent to positive zero.
     * "bottom" is equivalent to negative zero.
     */
    bubbleNubOffset?: number | 'bottom' | 'top';
    /**
     * Nub size 0 will render a sharp corner
     */
    bubbleNubSize?: number;
    bubbleTextColor?: string;
    messageActivityWordBreak?: 'normal' | 'break-all' | 'break-word' | 'keep-all';
    /**
     * Connectivity UI styling
     */
    connectivityIconPadding?: number;
    connectivityMarginLeftRight?: number;
    connectivityMarginTopBottom?: number;
    connectivityTextSize?: number | string;
    failedConnectivity?: number | string;
    slowConnectivity?: string;
    notificationText?: string;
    /**
     * Slow connection status will render after x amount of time with no service response
     */
    slowConnectionAfter?: number;
    /**
     * Emoji styling
     * If true, Web Chat's default set of emoji will be enabled. See patchStyleOptions.js for default list.
     * A custom object will enable unicode emoji specified by the developer.
     * key: emoticon
     * value: unicode emoji
     */
    emojiSet?: boolean | Record<string, string>;
    /**
     * Live region - Accessibility
     * New activities will be rendered in the non-visual live region and removed after a certain amount of time. Modify this property to change fade time.
     */
    internalLiveRegionFadeAfter?: number;
    /**
     * Markdown styling
     * Parse markdown to ensure carriage return is respected
     */
    markdownRespectCRLF?: boolean;
    /**
     * Render HTML inside Markdown.
     *
     * `true` to render HTML inside Markdown, otherwise, `false`. Defaults to `true`.
     *
     * New in 4.17: This option is enabled by default.
     */
    markdownRenderHTML?: boolean;
    /**
     * Assign new image for anchor links to indicate external
     */
    markdownExternalLinkIconImage?: string;
    /**
     * Scroll behavior styling
     */
    /**
     * Prevent scroll to end button from rendering
     *
     * @deprecated Since 4.14.0: To hide the scroll to end button, please set `scrollToEndButtonBehavior` to `false`.
     */
    hideScrollToEndButton?: boolean;
    /**
     * Snap to activity to 'snap-point'
     * If true, scrolling will pause after 1 activity is received.
     * Specifying a number will pause after X number of activities
     */
    autoScrollSnapOnActivity?: boolean | number;
    /**
     * Specify number of pixels to overscroll or underscroll after pause
     */
    autoScrollSnapOnActivityOffset?: number;
    /**
     * If true, scrolling will pause after activities have filled the page.
     * Specifying a number (0 to 1) will pause after % of page is filled
     */
    autoScrollSnapOnPage?: boolean | number;
    /**
     * Specify number of pixels to overscroll or underscroll after pause
     */
    autoScrollSnapOnPageOffset?: number;
    /**
     * Send box styling
     */
    hideSendBox?: boolean;
    /**
     * Indicates if the upload file button should be hidden.
     *
     * @default false
     *
     * @deprecated deprecated since 4.18.0: obsolated by {@linkcode disableFileUpload}. This option will be removed on or after 2027-07-14.
     */
    hideUploadButton?: boolean;
    /**
     * (EXPERIMENTAL) `true`, if the telephone keypad button should be shown, otherwise, `false`. Defaults to `true`.
     *
     * @deprecated This is an experimental style options and should not be used without understanding its risk.
     */
    hideTelephoneKeypadButton?: boolean | undefined;
    microphoneButtonColorOnDictate?: string;
    sendBoxBackground?: string;
    /**
     * The comma-delimited file types that the upload button should accept.
     * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept
     * @example 'image/*,.pdf'
     */
    uploadAccept?: string;
    /**
     * If true, the upload button will accept multiple files.
     * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#multiple
     */
    uploadMultiple?: boolean;
    /**
     * If set to `send` (default), attachment will be sent when the send button is clicked, or when the message is being sent.
     *
     * Otherwise, if set to `attach`, attachment will be sent immediately after file is selected.
     */
    sendAttachmentOn?: 'attach' | 'send';
    /** Send box button: Icon color, defaults to subtle */
    sendBoxButtonColor?: string;
    /**
     * Send box button: Shade border radius
     *
     * @default 2
     */
    sendBoxButtonShadeBorderRadius?: number;
    /** Send box button: Shade color */
    sendBoxButtonShadeColor?: string;
    /**
     * Send box button: Shade inset
     *
     * @default 2
     */
    sendBoxButtonShadeInset?: number;
    /** Send box button (while `:active`): Icon color */
    sendBoxButtonColorOnActive?: string;
    /**
     * Send box button (while `:active`): Shade color
     *
     * @default '#EDEBE9'
     */
    sendBoxButtonShadeColorOnActive?: string;
    /**
     * Send box button (while `:disabled`): Icon color
     *
     * @default '#A19F9D'
     */
    sendBoxButtonColorOnDisabled?: string;
    /**
     * Send box button (while `:disabled`): Shade color
     *
     * @default '#F3F2F1'
     */
    sendBoxButtonShadeColorOnDisabled?: string;
    /** Send box button (while `:focus`): Icon color */
    sendBoxButtonColorOnFocus?: string;
    /** Send box button (while `:focus`): Shade color */
    sendBoxButtonShadeColorOnFocus?: string;
    /** Send box button (while `:hover`): Icon color */
    sendBoxButtonColorOnHover?: string;
    /**
     * Send box button (while `:hover`): Shade color
     *
     * @default '#F3F2F1'
     */
    sendBoxButtonShadeColorOnHover?: string;
    /**
     * Send box button (while `:focus-visible`): Keyboard focus indicator border color
     *
     * @default '#605E5C'
     */
    sendBoxButtonKeyboardFocusIndicatorBorderColor?: string;
    /**
     * Send box button (while `:focus-visible`): Keyboard focus indicator border radius
     *
     * @default 0
     */
    sendBoxButtonKeyboardFocusIndicatorBorderRadius?: number | string;
    /**
     * Send box button (while `:focus-visible`): Keyboard focus indicator border style
     *
     * @default 'solid'
     */
    sendBoxButtonKeyboardFocusIndicatorBorderStyle?: string;
    /**
     * Send box button (while` :focus-visible`): Keyboard focus indicator border width
     *
     * @default 4
     */
    sendBoxButtonKeyboardFocusIndicatorBorderWidth?: number;
    /**
     * Send box button (while `:focus-visible`): Keyboard focus indicator inset
     *
     * @default 4
     */
    sendBoxButtonKeyboardFocusIndicatorInset?: number;
    /**
     * Disabled text color defaults to subtle
     */
    sendBoxDisabledTextColor?: string;
    sendBoxHeight?: number | string;
    sendBoxMaxHeight?: number | string;
    sendBoxTextColor?: string;
    sendBoxBorderBottom?: number | string;
    sendBoxBorderLeft?: number | string;
    sendBoxBorderRight?: number | string;
    sendBoxBorderTop?: number | string;
    sendBoxPlaceholderColor?: string;
    sendBoxTextWrap?: boolean;
    sendBoxButtonAlignment?: 'bottom' | 'stretch' | 'top';
    /**
     * Show spoken text
     */
    showSpokenText?: boolean;
    /**
     * Spinner animation styling
     */
    spinnerAnimationBackgroundImage?: string;
    spinnerAnimationHeight?: number | string;
    spinnerAnimationWidth?: number | string;
    spinnerAnimationPadding?: number | string;
    /**
     * Suggested Actions
     */
    /**
     * Suggested action: border radius
     *
     * @default 0
     */
    suggestedActionBorderRadius?: number | string;
    /**
     * Suggested action: Background
     *
     * @deprecated Since 4.15.0: Please use `suggestedActionBackgroundColor` instead. This option will be removed on or after 2023-09-16.
     */
    suggestedActionBackground?: string;
    /**
     * Suggested action: Background color
     *
     * @default 'White'
     */
    suggestedActionBackgroundColor?: string;
    /** Suggested action: Border color, defaults to accent color */
    suggestedActionBorderColor?: string;
    /**
     * Suggested action: Border style
     *
     * @default 'solid'
     */
    suggestedActionBorderStyle?: string;
    /**
     * Suggested action: Border width
     *
     * @default 2
     */
    suggestedActionBorderWidth?: number;
    /** Suggested action: Text color, defaults to accent color */
    suggestedActionTextColor?: string;
    /** Suggested action (while `:disabled`): Background color, defaults to suggestedActionBackground */
    suggestedActionBackgroundColorOnDisabled?: string;
    /**
     * Suggested action (while `:disabled`): Border color
     *
     * @default '#E6E6E6'
     */
    suggestedActionBorderColorOnDisabled?: string;
    /** Suggested action (while `:disabled`): Border style */
    suggestedActionBorderStyleOnDisabled?: string;
    /** Suggested action (while `:disabled`): Border width */
    suggestedActionBorderWidthOnDisabled?: number;
    /** Suggested action (while `:disabled`): Foreground color, defaults to subtle color */
    suggestedActionTextColorOnDisabled?: string;
    /**
     * Suggested action (while `:active`): Background color
     *
     * @default '#EDEBE9'
     */
    suggestedActionBackgroundColorOnActive?: string;
    /** Suggested action (while `:active`): Border color */
    suggestedActionBorderColorOnActive?: string;
    /** Suggested action (while `:active`): Border style */
    suggestedActionBorderStyleOnActive?: string;
    /** Suggested action (while `:active`): Border width */
    suggestedActionBorderWidthOnActive?: number;
    /** Suggested action (while `:active`): Text color */
    suggestedActionTextColorOnActive?: string;
    /** Suggested action (while `:focus`): Background color */
    suggestedActionBackgroundColorOnFocus?: string;
    /** Suggested action (while `:focus`): Border color */
    suggestedActionBorderColorOnFocus?: string;
    /** Suggested action (while `:focus`): Border style */
    suggestedActionBorderStyleOnFocus?: string;
    /** Suggested action (while `:focus`): Border width */
    suggestedActionBorderWidthOnFocus?: number;
    /** Suggested action (while `:focus`): Text color */
    suggestedActionTextColorOnFocus?: string;
    /**
     * Suggested action (while `:hover`): Background color
     *
     * @default '#F3F2F1'
     */
    suggestedActionBackgroundColorOnHover?: string;
    /** Suggested action (while `:hover`): Border color */
    suggestedActionBorderColorOnHover?: string;
    /** Suggested action (while `:hover`): Border style */
    suggestedActionBorderStyleOnHover?: string;
    /** Suggested action (while `:hover`): Border width */
    suggestedActionBorderWidthOnHover?: number;
    /** Suggested action (while `:hover`): Text color */
    suggestedActionTextColorOnHover?: string;
    /**
     * Suggested action (while `:disabled`): Background, defaults to suggestedActionBackground.
     *
     * @deprecated Since 4.15.0: Please use `suggestedActionBackgroundColorOnDisabled` instead. This option will be removed on or after 2023-09-16.
     */
    suggestedActionDisabledBackground?: string;
    /**
     * Suggested action (while `:disabled`): Border color
     *
     * @deprecated Since 4.15.0: Please use `suggestedActionBorderColorOnDisabled` instead. This option will be removed on or after 2023-09-16.
     */
    suggestedActionDisabledBorderColor?: string;
    /**
     * Suggested action (while `:disabled`): Border style
     *
     * @deprecated Since 4.15.0: Please use `suggestedActionBorderStyleOnDisabled` instead. This option will be removed on or after 2023-09-16.
     */
    suggestedActionDisabledBorderStyle?: string;
    /**
     * Suggested action (while `:disabled`): Border width
     *
     * @deprecated Since 4.15.0: Please use `suggestedActionBorderWidthOnDisabled` instead. This option will be removed on or after 2023-09-16.
     */
    suggestedActionDisabledBorderWidth?: number;
    /**
     * Suggested action (while `:disabled`): Foreground color, defaults to subtle color
     *
     * @deprecated Since 4.15.0: Please use `suggestedActionTextColorOnDisabled` instead. This option will be removed on or after 2023-09-16.
     */
    suggestedActionDisabledTextColor?: string;
    /**
     * Suggested action: Height
     *
     * @default 40
     */
    suggestedActionHeight?: number | string;
    /**
     * Suggested action: Image height
     *
     * @default 20
     */
    suggestedActionImageHeight?: number | string;
    /**
     * Suggested action: Layout type
     *
     * @default 'carousel'
     */
    suggestedActionLayout?: 'carousel' | 'flow' | 'stacked';
    /**
     * Suggested action (while `:focus-visible`): Keyboard focus indicator border color
     *
     * @default '#605E5C'
     */
    suggestedActionKeyboardFocusIndicatorBorderColor?: string;
    /**
     * Suggested action (while `:focus-visible`): Keyboard focus indicator border radius
     *
     * @default 0
     */
    suggestedActionKeyboardFocusIndicatorBorderRadius?: number | string;
    /**
     * Suggested action (while `:focus-visible`): Keyboard focus indicator border style
     *
     * @default 'solid'
     */
    suggestedActionKeyboardFocusIndicatorBorderStyle?: string;
    /**
     * Suggested action (while `:focus-visible`): Keyboard focus indicator border width
     *
     * @default 1
     */
    suggestedActionKeyboardFocusIndicatorBorderWidth?: number;
    /**
     * Suggested action (while `:focus-visible`): Keyboard focus indicator inset
     *
     * @default 2
     */
    suggestedActionKeyboardFocusIndicatorInset?: number;
    /**
     * Suggested action (while `:active`): background
     *
     * @deprecated Since 4.15.0: Please use `suggestedActionBackgroundColorOnActive` instead. This option will be removed on or after 2023-09-16.
     */
    suggestedActionActiveBackground?: string;
    /**
     * Suggested action (while `:focus`): background
     *
     * @deprecated Since 4.15.0: Please use `suggestedActionBackgroundColorOnFocus` instead. This option will be removed on or after 2023-09-16.
     */
    suggestedActionFocusBackground?: string;
    /**
     * Suggested action (while `:hover`): background
     *
     * @deprecated Since 4.15.0: Please use `suggestedActionBackgroundColorOnHover` instead. This option will be removed on or after 2023-09-16.
     */
    suggestedActionHoverBackground?: string;
    /**
     * Suggested actions carousel layout
     */
    /**
     * Cursor when mouseover on flipper
     */
    suggestedActionsCarouselFlipperCursor?: string;
    /**
     * Flipper bounding box size
     */
    suggestedActionsCarouselFlipperBoxWidth?: number;
    /**
     * Flipper button's visible size
     */
    suggestedActionsCarouselFlipperSize?: number;
    /**
     * Suggested actions flow layout
     * Default value is 'auto',
     */
    suggestedActionsFlowMaxHeight?: undefined;
    /**
     * Suggested actions stacked layout
     */
    /**
     * Stacked height container's max height. Default value is 'auto'
     */
    suggestedActionsStackedHeight?: number | 'auto';
    /**
     * Stacked overflow default value is 'auto'
     */
    suggestedActionsStackedOverflow?: 'auto' | 'hidden' | 'scroll' | 'visible';
    /**
     * Button max height default value is 100% if suggestedActionsStackedLayoutButtonTextWrap is true
     */
    suggestedActionsStackedLayoutButtonMaxHeight?: number | string;
    /**
     * Button Text Wrap, if set to true, will wrap long text in buttons in STACKED mode ONLY
     */
    suggestedActionsStackedLayoutButtonTextWrap?: boolean;
    /** Suggested actions: Visual keyboard indicator color for the container. */
    suggestedActionsVisualKeyboardIndicatorColor?: string;
    /** Suggested actions: Visual keyboard indicator style for the container. */
    suggestedActionsVisualKeyboardIndicatorStyle?: string;
    /** Suggested actions: Visual keyboard indicator width for the container. */
    suggestedActionsVisualKeyboardIndicatorWidth?: number;
    /**
     * Timestamp
     */
    /**
     * Specifies the time window for grouping related timestamps.
     *
     * `number` - time window for grouping related timestamps (in milliseconds)
     * `false` - never group timestamps
     * `true` - group all timestamps
     */
    groupTimestamp?: boolean | number;
    sendTimeout?: number | ((activity: WebChatActivity) => number);
    sendTimeoutForAttachments?: number;
    /**
     * Timestamp color default value is subtle
     */
    timestampColor?: string;
    timestampFormat?: 'absolute' | 'relative';
    /**
     * Transcript styling
     */
    transcriptTerminatorBackgroundColor?: string;
    transcriptTerminatorBorderRadius?: number | string;
    transcriptTerminatorColor?: string;
    transcriptTerminatorFontSize?: number | string;
    transcriptActivityVisualKeyboardIndicatorColor?: string;
    transcriptActivityVisualKeyboardIndicatorStyle?: string;
    transcriptActivityVisualKeyboardIndicatorWidth?: number | string;
    transcriptVisualKeyboardIndicatorColor?: string;
    transcriptVisualKeyboardIndicatorStyle?: string;
    transcriptVisualKeyboardIndicatorWidth?: number | string;
    /**
     * Transcript overlay button
     * e.g. carousel and suggested action flippers, scroll to bottom, etc.
     */
    /**
     * Controls when the new messages button should show.
     *
     * - `"unread"` will show when there are any unread and offscreen messages (default)
     * - `"any"` will show when there are any offscreen messages
     * - `false` will always hide the button
     */
    scrollToEndButtonBehavior?: false | 'any' | 'unread';
    /** Font size of the new message button. */
    scrollToEndButtonFontSize?: number | string;
    /**
     * Font size of the new message button.
     *
     * @deprecated Since 4.14.0: Renamed to {@linkcode scrollToEndButtonFontSize}.
     */
    newMessagesButtonFontSize?: number | string;
    transcriptOverlayButtonBackground?: string;
    transcriptOverlayButtonBackgroundOnDisabled?: string;
    transcriptOverlayButtonBackgroundOnFocus?: string;
    transcriptOverlayButtonBackgroundOnHover?: string;
    transcriptOverlayButtonColor?: string;
    transcriptOverlayButtonColorOnDisabled?: string;
    /**
     * Default value is transcriptOverlayButtonColor
     */
    transcriptOverlayButtonColorOnFocus?: string;
    /**
     * Default value is transcriptOverlayButtonColor
     */
    transcriptOverlayButtonColorOnHover?: string;
    /**
     * Toast UI
     */
    /**
     * New debounce timeout value only affects new notifications.
     */
    notificationDebounceTimeout?: number;
    hideToaster?: boolean;
    toasterHeight?: number | string;
    toasterMaxHeight?: number | string;
    toasterSingularMaxHeight?: number | string;
    toastFontSize?: number | string;
    toastIconWidth?: number | string;
    toastSeparatorColor?: string;
    toastTextPadding?: number | string;
    toastErrorBackgroundColor?: string;
    toastErrorColor?: string;
    toastInfoBackgroundColor?: string;
    toastInfoColor?: string;
    toastSuccessBackgroundColor?: string;
    toastSuccessColor?: string;
    toastWarnBackgroundColor?: string;
    toastWarnColor?: string;
    /**
     * Typing animation
     */
    typingAnimationBackgroundImage?: string;
    typingAnimationDuration?: number;
    typingAnimationHeight?: number | string;
    typingAnimationWidth?: number | string;
    /**
     * Upload thumbnail
     */
    enableUploadThumbnail?: boolean;
    uploadThumbnailContentType?: string;
    uploadThumbnailHeight?: number;
    uploadThumbnailQuality?: number;
    uploadThumbnailWidth?: number;
    /**
     * Video
     */
    videoHeight?: number | string;
    /**
     * Maximum message length in characters
     *
     * @default 2000
     */
    maxMessageLength?: number;
    /**
     * The node to place Web Chat styles into. Needed when using as a Web Component.
     *
     * @default document.head
     */
    stylesRoot?: Node;
    /**
     * Border animation
     */
    /**
     * Border animation 1st color
     *
     * CSS variable: `--webchat__animation--border-color-1` CSS variable to adjust the color
     *
     * New in 4.19.0.
     */
    borderAnimationColor1?: string;
    /**
     * Border animation 2nd color
     *
     * CSS variable: `--webchat__animation--border-color-2` CSS variable to adjust the color
     *
     * New in 4.19.0.
     */
    borderAnimationColor2?: string;
    /**
     * Border animation 3rd color
     *
     * CSS variable: `--webchat__animation--border-color-3` CSS variable to adjust the color
     *
     * New in 4.19.0.
     */
    borderAnimationColor3?: string;
    /**
     * Code block theme
     *
     * - `'github-light-default'` - use light theme for code blocks
     * - `'github-dark-default'` - use dark theme for code blocks
     *
     * @default 'github-light-default'
     *
     * New in 4.19.0.
     */
    codeBlockTheme?: 'github-light-default' | 'github-dark-default';
    /**
     * (EXPERIMENTAL) Feedback buttons placement
     *
     * - `'activity-actions'` - place feedback buttons inside activity actions - will show feedback form
     * - `'activity-status'` - place feedback buttons inside activity status
     *
     * @default 'activity-status'
     *
     * @deprecated This is an experimental style options and should not be used without understanding its risk.
     *
     * New in 4.19.0.
     */
    feedbackActionsPlacement?: 'activity-actions' | 'activity-status';
    /**
     * Use continuous mode for speech recognition. Default to `false`.
     *
     * - `true` to use continuous mode which focuses on a hands-off experience, keeping speech recognition active for extended periods, supporting barge-in, non-speech interactions will not stop speech recognition
     * - `false` to use interactive mode which focuses on privacy, keeping speech recognition active only for the minimal time required, no barge-in, non-speech interactions will stop speech recognition
     *
     * @see https://github.com/microsoft/BotFramework-WebChat/pull/5426
     */
    speechRecognitionContinuous?: boolean | undefined;
    /**
     * Defines how activities are being grouped by (in the order of appearance in the array). Default to `['sender', 'status', 'part']` or `sender,status` in CSS.
     *
     * Values are key of result of `groupActivitiesMiddleware`. The default implementation of `groupActivitiesMiddleware` has `sender`, `status`, and `part`.
     *
     * To add new groupings, configure `groupActivitiesMiddleware` to output extra groups. Then, add the group names to `styleOptions.groupActivitiesBy`.
     */
    groupActivitiesBy?: readonly string[] | undefined;
    /**
     * Send box: maximum number of attachment item to preview as thumbnail before showing as text-only.
     * Send box: maximum height of the attachment bar.
     *
     * @default 114
     */
    sendBoxAttachmentBarMaxHeight?: number;
    /**
     * Send box: maximum number of attachment item to preview as thumbnail before showing as list item.
     *
     * @default 3
     */
    sendBoxAttachmentBarMaxThumbnail?: number;
    /**
     * Indicates if file upload should be disabled.
     *
     * @default false
     *
     * New in 4.19.0.
     */
    disableFileUpload?: boolean;
};
type StrictStyleOptions = Required<Omit<StyleOptions, 'bubbleImageHeight' | 'bubbleMaxWidth' | 'bubbleMinWidth' | 'hideScrollToEndButton' | 'hideUploadButton' | 'newMessagesButtonFontSize'>> & {
    bubbleFromUserNubOffset: number;
    bubbleNubOffset: number;
    emojiSet: false | Record<string, string>;
};

/**
 * @type {object}
 * @property {boolean} atEnd - `true`, if the transcript scroll view is at the end, otherwise, `false`.
 * @property {object} styleOptions - Normalized style options.
 * @property {boolean} unread - `true`, if there are unread messages in the transcripts, otherwise, `false`.
 */
type ScrollToEndButtonComponentArguments = [
    {
        atEnd: boolean;
        styleOptions: StrictStyleOptions;
        unread: boolean;
    }
];
/**
 * @type {object}
 * @property {function} onClick - The callback function to call when the user click on the button.
 */
type ScrollToEndButtonProps = {
    onClick: () => any;
};
/**
 * The middleware for rendering scroll to end button.
 */
type ScrollToEndButtonMiddleware = ComponentMiddleware<[], ScrollToEndButtonComponentArguments, ScrollToEndButtonProps>;
type ScrollToEndButtonComponentFactory = ComponentFactory<ScrollToEndButtonComponentArguments, ScrollToEndButtonProps>;

declare function useCreateScrollToEndButtonRenderer(): ScrollToEndButtonComponentFactory;

declare function useDateFormatter(): (date: Date | number | string) => string;

type Notification = {
    alt: string;
    data?: any;
    id: string;
    level: string;
    message?: string;
    timestamp?: number;
};

type DebouncedNotification = Notification & {
    outOfDate: boolean;
    updateNotBefore: number;
};
type DebouncedNotifications = {
    [id: string]: DebouncedNotification;
};
declare function useDebouncedNotifications(): [DebouncedNotifications];

declare function useDictateInterims(): [string[], (interims: string[]) => void];

declare function useDictateState(): [number];

declare function useDirection(): ['auto' | 'ltr' | 'rtl'];

/**
 * @deprecated Please use `useUIState() === 'disabled'` instead. This hook will be removed on or after 2026-09-04.
 */
declare function useDisabled(): readonly [boolean];

declare function useDismissNotification(): (id: string) => void;

declare function useEmitTypingIndicator(): () => void;

declare function useGetActivitiesByKey(): (key?: string) => readonly WebChatActivity[] | undefined;

declare function useGetActivityByKey(): (key?: string) => undefined | WebChatActivity;

declare function useGetHasAcknoweledgedByActivityKey(): (activityKey: string) => boolean | undefined;

declare function useGetKeyByActivity(): (activity?: WebChatActivity) => string | undefined;

declare function useGetKeyByActivityId(): (activityId?: string) => string | undefined;

declare function useGetSendTimeoutForActivity(): ({ activity }: {
    activity: WebChatActivity;
}) => number;

declare function useGrammars(): [any];

declare function useGroupTimestamp(): [boolean | number];

declare function useLanguage(options?: 'speech'): [string];

declare function useLastAcknowledgedActivityKey(): readonly [string];

declare function useLastReadActivityKey(): readonly [string | undefined];

type Plural = {
    zero?: string;
    one?: string;
    two?: string;
    few?: string;
    many?: string;
    other: string;
};
declare function useLocalizer({ plural }?: {
    plural?: boolean;
}): (id: string | Plural, args_0?: string | number, ...args: string[]) => any;

declare function useMarkActivityAsSpoken(): (activity: WebChatActivity) => void;

declare function useMarkActivityKeyAsRead(): (activityKey: string) => void;

declare function useMarkAllAsAcknowledged(): () => void;

declare function useNotifications(): [Notification[]];

type CallFunction<TArguments extends any[], TResult> = (...args: TArguments) => TResult;
type FunctionEnhancer<TCallArguments extends any[], TResult> = (next: CallFunction<TCallArguments, TResult>) => CallFunction<TCallArguments, TResult>;
type FunctionMiddleware<TSetupArguments extends any[], TCallArguments extends any[], TResult> = (...args: TSetupArguments) => FunctionEnhancer<TCallArguments, TResult>;

type PerformCardAction = (cardAction: DirectLineCardAction, event?: {
    target: EventTarget;
}) => void;
type CardActionMiddleware = FunctionMiddleware<[
    {
        dispatch: (action: any) => void;
    }
], [
    {
        cardAction: DirectLineCardAction;
        getSignInUrl?: () => string;
        target: any;
    }
], {}>;

declare function usePerformCardAction(): PerformCardAction;

declare function usePonyfill(): readonly [GlobalScopePonyfill];

declare function usePostActivity(): (activity: WebChatActivity) => Observable<string>;

declare function useReferenceGrammarID(): [string];

declare function useRelativeTimeFormatter(): (dateOrString: Date | string) => string;

declare function useRenderAttachment(): LegacyRenderAttachment | undefined;

type ToastProps = {
    notification: Notification;
};
type RenderToast = (props: ToastProps) => ReactNode;
type ToastEnhancer = (next: RenderToast) => RenderToast;
type ToastMiddleware = () => ToastEnhancer;

declare function useRenderToast(): RenderToast;

type TypingIndicatorProps = {
    activeTyping: {
        [id: string]: Typing;
    };
    typing: {
        [id: string]: Typing;
    };
    visible: boolean;
};
type RenderTypingIndicator = (props: TypingIndicatorProps) => ReactNode;
type TypingIndicatorEnhancer = (next: RenderTypingIndicator) => RenderTypingIndicator;
type TypingIndicatorMiddleware = () => TypingIndicatorEnhancer;

declare function useRenderTypingIndicator(): RenderTypingIndicator;

declare function useSendBoxAttachments(): readonly [
    readonly SendBoxAttachment[],
    (attachments: readonly SendBoxAttachment[]) => void
];

declare function useSendBoxValue(): [string, (value: string) => void];

declare function useSendEvent(): (name: string, value: any) => void;

type PostActivityFile = {
    name: string;
    size: number;
    thumbnail?: string;
    url: string;
};
declare function useSendFiles(): (files: PostActivityFile[]) => void;

declare function useSendMessage(): (text?: string, method?: string, init?: {
    attachments?: readonly SendBoxAttachment[] | undefined;
    channelData?: any;
}) => void;

declare function useSendMessageBack(): (value: any, text?: string, displayText?: string) => void;

declare function useSendPostBack(): (value?: any) => void;

type SendStatus = 'send failed' | 'sending' | 'sent';

/**
 * Returns a key/value map which stores the outgoing activity send status by activity key:
 *
 * - `"sending"`, the activity is currently in transit;
 * - `"sent"`, the activity is sent and acknowledged by the platform;
 * - `"send failed"`, the activity failed to send.
 *
 * If the send status is `"send failed"`, it could be due to (non-exhaustive):
 *
 * - Immediate or almost immediate failures, such as network error;
 * - It took longer than `styleOptions.sendTimeout` or `styleOptions.sendTimeoutForAttachments` to send.
 *
 * The send status of an activity could turn from `"send failed"` back to `"sending"` if (non-exhaustive):
 *
 * - The platform support resend and the activity is being resend;
 * - The `styleOptions.sendTimeout` or `styleOptions.sendTimeoutForAttachments` has increased past the expiry, overthrown the previous decision for timeout.
 *
 * If the activity key does not exists in this map, the activity is not an outgoing activity.
 */
declare function useSendStatus(): readonly [ReadonlyMap<string, SendStatus>];

/** @deprecated Please use "useGetSendTimeoutForActivity()" instead. */
declare function useSendTimeoutForActivity(activity: WebChatActivity): number;

declare function useSendTypingIndicator(): [boolean];

declare function useSetNotification(): (notification: Notification) => void;

declare function useShouldSpeakIncomingActivity(): [boolean, (value: boolean) => void];

declare function useStartDictate(): () => void;

declare function useStopDictate(): () => void;

declare function useStyleOptions(): [StrictStyleOptions];

declare function useSubmitSendBox(): (method?: string, { channelData }?: {
    channelData: any;
}) => void;

/**
 * @deprecated Use `useSuggestedActionsHooks().useSuggestedActions` instead. This hook will be removed on or after 2027-05-30.
 */
declare function useSuggestedActions(): readonly [readonly botframework_webchat_core.DirectLineCardAction[], react.Dispatch<react.SetStateAction<readonly botframework_webchat_core.DirectLineCardAction[]>>, Readonly<{
    activity: undefined | botframework_webchat_core.WebChatActivity;
}>];

declare function useTimeoutForSend(): [number | ((activity: WebChatActivity) => number)];

declare function useTrackDimension(): (name: string, data: any) => void;

type TrackEventFunction = {
    (name: string, data: any): void;
    debug: (name: string, data: any) => void;
    error: (name: string, data: any) => void;
    info: (name: string, data: any) => void;
    warn: (name: string, data: any) => void;
};
declare function useTrackEvent(): TrackEventFunction;

declare function useTrackException(): (error: Error, fatal: boolean) => void;

declare function useTrackTiming<T>(): (name: string, functionOrPromise: (() => T) | Promise<T>) => Promise<T>;

/**
 * Gets the state of the UI.
 *
 * - `undefined` will render normally
 * - `"blueprint"` will render as few UI elements as possible and should be non-functional
 *   - Useful for loading scenarios
 * - `"disabled"` will render most UI elements as non-functional
 *   - Scrolling may continue to trigger read acknowledgements
 */
declare function useUIState(): readonly ['blueprint' | 'disabled' | undefined];

declare function useUserID(): [string];

declare function useUsername(): [string];

declare function useVoiceSelector(activity: any): (voices: (typeof window.SpeechSynthesisVoice)[]) => typeof window.SpeechSynthesisVoice;

declare const hook_useActiveTyping: typeof useActiveTyping;
declare const hook_useActivities: typeof useActivities;
declare const hook_useActivityKeys: typeof useActivityKeys;
declare const hook_useActivityKeysByRead: typeof useActivityKeysByRead;
declare const hook_useAvatarForBot: typeof useAvatarForBot;
declare const hook_useAvatarForUser: typeof useAvatarForUser;
declare const hook_useBuildRenderActivityCallback: typeof useBuildRenderActivityCallback;
declare const hook_useByteFormatter: typeof useByteFormatter;
declare const hook_useConnectivityStatus: typeof useConnectivityStatus;
declare const hook_useCreateActivityRenderer: typeof useCreateActivityRenderer;
declare const hook_useCreateActivityStatusRenderer: typeof useCreateActivityStatusRenderer;
declare const hook_useCreateAttachmentForScreenReaderRenderer: typeof useCreateAttachmentForScreenReaderRenderer;
declare const hook_useCreateAvatarRenderer: typeof useCreateAvatarRenderer;
declare const hook_useCreateScrollToEndButtonRenderer: typeof useCreateScrollToEndButtonRenderer;
declare const hook_useDateFormatter: typeof useDateFormatter;
declare const hook_useDebouncedNotifications: typeof useDebouncedNotifications;
declare const hook_useDictateInterims: typeof useDictateInterims;
declare const hook_useDictateState: typeof useDictateState;
declare const hook_useDirection: typeof useDirection;
declare const hook_useDisabled: typeof useDisabled;
declare const hook_useDismissNotification: typeof useDismissNotification;
declare const hook_useEmitTypingIndicator: typeof useEmitTypingIndicator;
declare const hook_useGetActivitiesByKey: typeof useGetActivitiesByKey;
declare const hook_useGetActivityByKey: typeof useGetActivityByKey;
declare const hook_useGetKeyByActivity: typeof useGetKeyByActivity;
declare const hook_useGetKeyByActivityId: typeof useGetKeyByActivityId;
declare const hook_useGetSendTimeoutForActivity: typeof useGetSendTimeoutForActivity;
declare const hook_useGrammars: typeof useGrammars;
declare const hook_useGroupActivities: typeof useGroupActivities;
declare const hook_useGroupTimestamp: typeof useGroupTimestamp;
declare const hook_useLanguage: typeof useLanguage;
declare const hook_useLastAcknowledgedActivityKey: typeof useLastAcknowledgedActivityKey;
declare const hook_useLastReadActivityKey: typeof useLastReadActivityKey;
declare const hook_useLocalizer: typeof useLocalizer;
declare const hook_useMarkActivityAsSpoken: typeof useMarkActivityAsSpoken;
declare const hook_useMarkActivityKeyAsRead: typeof useMarkActivityKeyAsRead;
declare const hook_useMarkAllAsAcknowledged: typeof useMarkAllAsAcknowledged;
declare const hook_useNotifications: typeof useNotifications;
declare const hook_usePerformCardAction: typeof usePerformCardAction;
declare const hook_usePonyfill: typeof usePonyfill;
declare const hook_usePostActivity: typeof usePostActivity;
declare const hook_useReferenceGrammarID: typeof useReferenceGrammarID;
declare const hook_useRelativeTimeFormatter: typeof useRelativeTimeFormatter;
declare const hook_useRenderAttachment: typeof useRenderAttachment;
declare const hook_useRenderToast: typeof useRenderToast;
declare const hook_useRenderTypingIndicator: typeof useRenderTypingIndicator;
declare const hook_useSendBoxAttachments: typeof useSendBoxAttachments;
declare const hook_useSendBoxValue: typeof useSendBoxValue;
declare const hook_useSendEvent: typeof useSendEvent;
declare const hook_useSendFiles: typeof useSendFiles;
declare const hook_useSendMessage: typeof useSendMessage;
declare const hook_useSendMessageBack: typeof useSendMessageBack;
declare const hook_useSendPostBack: typeof useSendPostBack;
declare const hook_useSendTimeoutForActivity: typeof useSendTimeoutForActivity;
declare const hook_useSendTypingIndicator: typeof useSendTypingIndicator;
declare const hook_useSetNotification: typeof useSetNotification;
declare const hook_useShouldSpeakIncomingActivity: typeof useShouldSpeakIncomingActivity;
declare const hook_useStartDictate: typeof useStartDictate;
declare const hook_useStopDictate: typeof useStopDictate;
declare const hook_useStyleOptions: typeof useStyleOptions;
declare const hook_useSubmitSendBox: typeof useSubmitSendBox;
declare const hook_useSuggestedActions: typeof useSuggestedActions;
declare const hook_useSuggestedActionsHooks: typeof useSuggestedActionsHooks;
declare const hook_useTimeoutForSend: typeof useTimeoutForSend;
declare const hook_useTrackDimension: typeof useTrackDimension;
declare const hook_useTrackEvent: typeof useTrackEvent;
declare const hook_useTrackException: typeof useTrackException;
declare const hook_useTrackTiming: typeof useTrackTiming;
declare const hook_useUIState: typeof useUIState;
declare const hook_useUserID: typeof useUserID;
declare const hook_useUsername: typeof useUsername;
declare const hook_useVoiceSelector: typeof useVoiceSelector;
declare namespace hook {
  export { hook_useActiveTyping as useActiveTyping, hook_useActivities as useActivities, hook_useActivityKeys as useActivityKeys, hook_useActivityKeysByRead as useActivityKeysByRead, hook_useAvatarForBot as useAvatarForBot, hook_useAvatarForUser as useAvatarForUser, hook_useBuildRenderActivityCallback as useBuildRenderActivityCallback, hook_useByteFormatter as useByteFormatter, hook_useConnectivityStatus as useConnectivityStatus, hook_useCreateActivityRenderer as useCreateActivityRenderer, hook_useCreateActivityStatusRenderer as useCreateActivityStatusRenderer, hook_useCreateAttachmentForScreenReaderRenderer as useCreateAttachmentForScreenReaderRenderer, hook_useCreateAvatarRenderer as useCreateAvatarRenderer, hook_useCreateScrollToEndButtonRenderer as useCreateScrollToEndButtonRenderer, hook_useDateFormatter as useDateFormatter, hook_useDebouncedNotifications as useDebouncedNotifications, hook_useDictateInterims as useDictateInterims, hook_useDictateState as useDictateState, hook_useDirection as useDirection, hook_useDisabled as useDisabled, hook_useDismissNotification as useDismissNotification, hook_useEmitTypingIndicator as useEmitTypingIndicator, hook_useGetActivitiesByKey as useGetActivitiesByKey, hook_useGetActivityByKey as useGetActivityByKey, useGetHasAcknoweledgedByActivityKey as useGetHasAcknowledgedByActivityKey, hook_useGetKeyByActivity as useGetKeyByActivity, hook_useGetKeyByActivityId as useGetKeyByActivityId, hook_useGetSendTimeoutForActivity as useGetSendTimeoutForActivity, hook_useGrammars as useGrammars, hook_useGroupActivities as useGroupActivities, useGroupActivitiesBy as useGroupActivitiesByName, hook_useGroupTimestamp as useGroupTimestamp, hook_useLanguage as useLanguage, hook_useLastAcknowledgedActivityKey as useLastAcknowledgedActivityKey, hook_useLastReadActivityKey as useLastReadActivityKey, hook_useLocalizer as useLocalizer, hook_useMarkActivityAsSpoken as useMarkActivityAsSpoken, hook_useMarkActivityKeyAsRead as useMarkActivityKeyAsRead, hook_useMarkAllAsAcknowledged as useMarkAllAsAcknowledged, hook_useNotifications as useNotifications, hook_usePerformCardAction as usePerformCardAction, hook_usePonyfill as usePonyfill, hook_usePostActivity as usePostActivity, hook_useReferenceGrammarID as useReferenceGrammarID, hook_useRelativeTimeFormatter as useRelativeTimeFormatter, hook_useRenderAttachment as useRenderAttachment, hook_useRenderToast as useRenderToast, hook_useRenderTypingIndicator as useRenderTypingIndicator, hook_useSendBoxAttachments as useSendBoxAttachments, hook_useSendBoxValue as useSendBoxValue, hook_useSendEvent as useSendEvent, hook_useSendFiles as useSendFiles, hook_useSendMessage as useSendMessage, hook_useSendMessageBack as useSendMessageBack, hook_useSendPostBack as useSendPostBack, useSendStatus as useSendStatusByActivityKey, hook_useSendTimeoutForActivity as useSendTimeoutForActivity, hook_useSendTypingIndicator as useSendTypingIndicator, hook_useSetNotification as useSetNotification, hook_useShouldSpeakIncomingActivity as useShouldSpeakIncomingActivity, hook_useStartDictate as useStartDictate, hook_useStopDictate as useStopDictate, hook_useStyleOptions as useStyleOptions, hook_useSubmitSendBox as useSubmitSendBox, hook_useSuggestedActions as useSuggestedActions, hook_useSuggestedActionsHooks as useSuggestedActionsHooks, hook_useTimeoutForSend as useTimeoutForSend, hook_useTrackDimension as useTrackDimension, hook_useTrackEvent as useTrackEvent, hook_useTrackException as useTrackException, hook_useTrackTiming as useTrackTiming, hook_useUIState as useUIState, hook_useUserID as useUserID, hook_useUsername as useUsername, hook_useVoiceSelector as useVoiceSelector };
}

export { useGroupActivitiesBy as $, type AttachmentForScreenReaderComponentFactory as A, useCreateAvatarRenderer as B, type ComponentMiddleware as C, type DebouncedNotification as D, useCreateScrollToEndButtonRenderer as E, type FunctionMiddleware as F, useDateFormatter as G, useDebouncedNotifications as H, useDictateInterims as I, useDictateState as J, useDirection as K, useDisabled as L, useDismissNotification as M, type Notification as N, useEmitTypingIndicator as O, type PerformCardAction as P, useGetActivitiesByKey as Q, type RenderToast as R, type StyleOptions as S, type ToastMiddleware as T, useGetActivityByKey as U, useGetHasAcknoweledgedByActivityKey as V, useGetKeyByActivity as W, useGetKeyByActivityId as X, useGetSendTimeoutForActivity as Y, useGrammars as Z, useGroupActivities as _, type SendStatus as a, useGroupTimestamp as a0, useLanguage as a1, useLastAcknowledgedActivityKey as a2, useLastReadActivityKey as a3, useLocalizer as a4, useMarkActivityAsSpoken as a5, useMarkActivityKeyAsRead as a6, useMarkAllAsAcknowledged as a7, useNotifications as a8, usePerformCardAction as a9, useTrackEvent as aA, useTrackException as aB, useTrackTiming as aC, useUIState as aD, useUserID as aE, useUsername as aF, useVoiceSelector as aG, usePonyfill as aa, usePostActivity as ab, useReferenceGrammarID as ac, useRelativeTimeFormatter as ad, useRenderAttachment as ae, useRenderToast as af, useRenderTypingIndicator as ag, useSendBoxAttachments as ah, useSendBoxValue as ai, useSendEvent as aj, useSendFiles as ak, useSendMessage as al, useSendMessageBack as am, useSendPostBack as an, useSendStatus as ao, useSendTimeoutForActivity as ap, useSendTypingIndicator as aq, useSetNotification as ar, useShouldSpeakIncomingActivity as as, useStartDictate as at, useStopDictate as au, useStyleOptions as av, useSubmitSendBox as aw, useSuggestedActions as ax, useTimeoutForSend as ay, useTrackDimension as az, type StrictStyleOptions as b, type ComponentFactory as c, type CallFunction as d, type ScrollToEndButtonComponentFactory as e, type AttachmentForScreenReaderMiddleware as f, type CardActionMiddleware as g, type ScrollToEndButtonMiddleware as h, type TypingIndicatorMiddleware as i, hook as j, type ActivityStatusRenderer as k, type DebouncedNotifications as l, type PostActivityFile as m, type Typing as n, type RenderTypingIndicator as o, useActivities as p, useActivityKeys as q, useActivityKeysByRead as r, useAvatarForBot as s, useAvatarForUser as t, useActiveTyping as u, useByteFormatter as v, useConnectivityStatus as w, useCreateActivityRenderer as x, useCreateActivityStatusRenderer as y, useCreateAttachmentForScreenReaderRenderer as z };
