import { CometChatContext, CometChatContextProvider } from "./CometChatContext";

import {
  BaseStyle,
  BaseStyleInterface,
  BorderStyle,
  BorderStyleInterface,
  FontStyle,
  FontStyleInterface,
  ShadowStyle,
  ShadowStyleInterface,
  ImageType,
  CometChatContextType,
  CometChatTabAlignment,
  ConversationType,
  AdditionalBubbleStylingParams,
  MessageBubbleAlignmentType,
  MessageListAlignmentType,
  MessageTimeAlignmentType,
  SelectionMode,
  DatePattern,
  MessageReceipt,
} from "./base";

import {
  ChatConfigurator,
  DataSource,
  MessageDataSource,
  DataSourceDecorator,
  ExtensionsDataSource,
} from "./framework";
import {
  CometChatOptions,
  CometChatMessageOption,
  CometChatMessageTemplate,
  CometChatDetailsTemplate,
  CometChatDetailsOption,
  CometChatCallLogDetailsTemplate,
  CometChatCallLogDetailsOption,
  APIAction,
  ActionEntity,
  BaseInputElement,
  BaseInteractiveElement,
  ButtonElement,
  CardMessage,
  CheckboxElement,
  CustomAction,
  CustomInteractiveMessage,
  DropdownElement,
  ElementEntity,
  FormMessage,
  SchedulerMessage,
  LabelElement,
  OptionElement,
  RadioButtonElement,
  SingleSelectElement,
  TextInputElement,
  URLNavigationAction,
  DateTimeElement,
} from "./modals";
import { CometChatLocalize, localize } from "./resources/CometChatLocalize";
import {
  CometChatTheme,
  Palette,
  Typography,
} from "./resources/CometChatTheme";
import {
  CometChatConversationEvents,
  CometChatGroupsEvents,
  CometChatUIEvents,
  MessageEvents,
  CometChatUIEventHandler,
} from "./events";
import {
  CometChatConversationUtils,
  getDefaultDetailsTemplate,
  CometChatLiveReactions,
  CometChatMessagePreview,
  MessagePreviewConfiguration,
  MessagePreviewStyle,
  CometChatSoundManager,
} from "./utils";

import {
  CometChatListItem,
  CometChatListItemInterface,
  ListItemStyle,
  CometChatAvatar,
  CometChatBadge,
  CometChatStatusIndicator,
  CometChatReceipt,
  CometChatDate,
  AvatarConfiguration,
  BadgeConfiguration,
  BadgeStyle,
  DateConfiguration,
  ReceiptConfiguration,
  StatusIndicatorConfiguration,
  StatusIndicatorStyle,
  DateStyle,
  AvatarStyle,
  CometChatMessageInput,
  AudioBubbleStyle,
  AudioBubbleStyleInterface,
  CometChatAudioBubble,
  CometChatAudioBubbleInterface,
  CometChatFileBubble,
  CometChatFileBubbleInterface,
  FileBubbleStyle,
  FileBubbleStyleInterface,
  CometChatVideoBubble,
  CometChatVideoBubbleInterface,
  VideoBubbleStyle,
  VideoBubbleStyleInterface,
  CometChatTextBubble,
  CometChatTextBubbleInterface,
  TextBubbleStyle,
  TextBubbleStyleInterface,
  CometChatImageBubble,
  CometChatImageBubbleInterface,
  ImageBubbleStyle,
  ImageBubbleStyleInterface,
  //
  CometChatActionSheet,
  ActionSheetStyles,
  ActionItem,
  CometChatBottomSheet,
  CometChatConfirmDialog,
  ListItemStyleInterface,
  CometChatList,
  CometChatListProps,
  CometChatListActionsInterface,
  CometChatListStylesInterface,
  CometChatMediaRecorder,
  CometChatMediaRecorderInterface,
  MediaRecorderStyleInterface,
  MediaRecorderStyle,
  AvatarStyleInterface,
  ListItemConfiguration,
  CometChatConfirmDialogInterface,
  CometChatConfirmDialogStyleInterface,
  ActionItemInterface,
  ActionSheetStylesInterface,
  AvatarConfigurationInterface,
  BadgeConfigurationInterface,
  BadgeStyleInterface,
  CometChatBottomSheetInterface,
  CometChatDateInterface,
  CometChatMessageInputInterface,
  CometChatMessageInputStyleInterface,
  CometChatReceiptInterface,
  CometChatStatusIndicatorInterface,
  DateConfigurationInterface,
  DateStyleInterface,
  ReceiptConfigurationInterface,
  StatusIndicatorConfigurationInterface,
  StatusIndicatorStyleInterface,
  CometChatFormBubble,
  CometChatFormBubbleInterface,
  CometChatCardBubble,
  CometChatCardBubbleInterface,
  CometChatReactions,
  CometChatReactionsInterface,
  ReactionsConfiguration,
  ReactionsConfigurationInterface,
  ReactionsStyle,
  ReactionsStyleInterface,
  CometChatReactionList,
  CometChatReactionListInterface,
  ReactionListConfiguration,
  ReactionListConfigurationInterface,
  ReactionListStyle,
  ReactionListStyleInterface,
  CometChatQuickReactions,
  CometChatQuickReactionsInterface,
  QuickReactionsConfiguration,
  QuickReactionsConfigurationInterface,
  QuickReactionsStyle,
  QuickReactionsStyleInterface,
  CometChatEmojiKeyboard,
  EmojiKeyboardConfiguration,
  EmojiKeyboardStyle,
  CometChatSchedulerBubble,
  CometChatSchedulerBubbleInterface,
  CometChatSuggestionList,
  CometChatSuggestionListInterface,
  SuggestionItem,
  SuggestionListConfiguration,
  SuggestionListConfigurationInterface,
  CometChatDateTimePicker,
  CometChatDateTimePickerInterface,
  DatePickerStyleInterface,
} from "./views";

import {
  CometChatMentionsFormatter,
  CometChatTextFormatter,
  CometChatUrlsFormatter,
  MentionTextStyle,
} from "./formatters";

import {
  CometChatUIKit,
  CometChatUIKitHelper,
  UIKitSettings,
} from "./CometChatUiKit";

import { CometChatMessageComposerActionInterface } from "./helper/types";

import * as CometChatUiKitConstants from "./constants/UIKitConstants";

import { messageStatus } from "./utils/CometChatMessageHelper/index";

export {
  CometChatContextProvider,
  CometChatUIEventHandler,
  CometChatUiKitConstants,
  messageStatus,
  CometChatConversationEvents,
  CometChatGroupsEvents,
  CometChatUIEvents,
  MessageEvents,
  CometChatTheme,
  Palette,
  Typography,
  DataSourceDecorator,
  ExtensionsDataSource,
  CometChatUIKit,
  CometChatUIKitHelper,
  UIKitSettings,
  CometChatContext,
  ListItemConfiguration,
  BaseStyle,
  BorderStyle,
  FontStyle,
  ShadowStyle,
  //
  ChatConfigurator,
  MessageDataSource,
  CometChatMessageTemplate,
  //
  CometChatLocalize,
  localize,
  //
  CometChatConversationUtils,
  getDefaultDetailsTemplate,
  CometChatLiveReactions,
  //
  CometChatListItem,
  ListItemStyle,
  CometChatAvatar,
  CometChatBadge,
  CometChatStatusIndicator,
  CometChatReceipt,
  CometChatDate,
  AvatarConfiguration,
  BadgeConfiguration,
  BadgeStyle,
  DateConfiguration,
  ReceiptConfiguration,
  StatusIndicatorConfiguration,
  StatusIndicatorStyle,
  DateStyle,
  AvatarStyle,
  CometChatMessageInput,
  AudioBubbleStyle,
  CometChatAudioBubble,
  CometChatFileBubble,
  FileBubbleStyle,
  CometChatVideoBubble,
  VideoBubbleStyle,
  CometChatTextBubble,
  TextBubbleStyle,
  CometChatImageBubble,
  ImageBubbleStyle,
  //
  CometChatActionSheet,
  ActionSheetStyles,
  ActionItem,
  CometChatBottomSheet,
  CometChatConfirmDialog,
  CometChatMessagePreview,
  MessagePreviewConfiguration,
  MessagePreviewStyle,
  CometChatSoundManager,
  //
  CometChatList,
  CometChatMediaRecorder,
  MediaRecorderStyle,
  CometChatFormBubble,
  CometChatCardBubble,
  CometChatSchedulerBubble,
  APIAction,
  ActionEntity,
  BaseInputElement,
  BaseInteractiveElement,
  ButtonElement,
  CardMessage,
  CheckboxElement,
  CustomAction,
  CustomInteractiveMessage,
  DropdownElement,
  ElementEntity,
  FormMessage,
  SchedulerMessage,
  LabelElement,
  OptionElement,
  RadioButtonElement,
  SingleSelectElement,
  TextInputElement,
  URLNavigationAction,
  CometChatReactions,
  ReactionsConfiguration,
  ReactionsStyle,
  CometChatReactionList,
  ReactionListConfiguration,
  ReactionListStyle,
  CometChatQuickReactions,
  QuickReactionsConfiguration,
  QuickReactionsStyle,
  CometChatEmojiKeyboard,
  EmojiKeyboardConfiguration,
  EmojiKeyboardStyle,
  CometChatMentionsFormatter,
  CometChatTextFormatter,
  CometChatUrlsFormatter,
  MentionTextStyle,
  CometChatSuggestionList,
  SuggestionItem,
  SuggestionListConfiguration,
  CometChatDateTimePicker,
  DateTimeElement,
};
export type {
  ActionItemInterface,
  ActionSheetStylesInterface,
  AvatarConfigurationInterface,
  BadgeConfigurationInterface,
  BadgeStyleInterface,
  CometChatBottomSheetInterface,
  CometChatDateInterface,
  CometChatMessageInputInterface,
  CometChatMessageInputStyleInterface,
  CometChatReceiptInterface,
  CometChatStatusIndicatorInterface,
  DateConfigurationInterface,
  DateStyleInterface,
  ReceiptConfigurationInterface,
  StatusIndicatorConfigurationInterface,
  StatusIndicatorStyleInterface,
  CometChatContextType,
  CometChatTabAlignment,
  ConversationType,
  AdditionalBubbleStylingParams,
  MessageBubbleAlignmentType,
  MessageListAlignmentType,
  MessageTimeAlignmentType,
  SelectionMode,
  DatePattern,
  MessageReceipt,
  CometChatConfirmDialogInterface,
  CometChatConfirmDialogStyleInterface,
  BaseStyleInterface,
  BorderStyleInterface,
  FontStyleInterface,
  ShadowStyleInterface,
  ImageType,
  CometChatMessageComposerActionInterface,
  DataSource,
  //
  CometChatOptions,
  CometChatMessageOption,
  CometChatDetailsTemplate,
  CometChatDetailsOption,
  CometChatCallLogDetailsTemplate,
  CometChatCallLogDetailsOption,
  CometChatListItemInterface,
  ListItemStyleInterface,
  AudioBubbleStyleInterface,
  CometChatAudioBubbleInterface,
  CometChatFileBubbleInterface,
  FileBubbleStyleInterface,
  CometChatVideoBubbleInterface,
  VideoBubbleStyleInterface,
  CometChatTextBubbleInterface,
  TextBubbleStyleInterface,
  CometChatImageBubbleInterface,
  ImageBubbleStyleInterface,
  AvatarStyleInterface,
  CometChatListProps,
  CometChatListActionsInterface,
  CometChatListStylesInterface,
  CometChatMediaRecorderInterface,
  MediaRecorderStyleInterface,
  CometChatFormBubbleInterface,
  CometChatCardBubbleInterface,
  CometChatSchedulerBubbleInterface,
  CometChatReactionsInterface,
  ReactionsConfigurationInterface,
  ReactionsStyleInterface,
  CometChatReactionListInterface,
  ReactionListConfigurationInterface,
  ReactionListStyleInterface,
  CometChatQuickReactionsInterface,
  QuickReactionsConfigurationInterface,
  QuickReactionsStyleInterface,
  CometChatSuggestionListInterface,
  SuggestionListConfigurationInterface,
  CometChatDateTimePickerInterface,
  DatePickerStyleInterface,
};
