import { FC } from 'react'
import type { AccordionProps as WAccordionProps } from './components/Accordion/accordion'
import type { ReactAlertProps as WReactAlertProps } from './components/Alert/alert'
import type { ReactAspectRatioProps as WReactAspectRatioProps } from './components/AspectRatio/aspectratio'
import type { AvatarProps as WAvatarProps } from './components/Avatar/avatar'
import type { ReactBadgeProps as WReactBadgeProps } from './components/Badge/badge'
import type { ReactBannerProps as WReactBannerProps } from './components/Banner/banner'
import type { BottomNavigationProps as WBottomNavigationProps } from './components/BottomNavigation/bottomnavigation'
import type { BreadcrumbProps as WBreadcrumbProps } from './components/Breadcrumb/breadcrumb'
import type { ReactButtonProps as WReactButtonProps } from './components/Button/button'
import type { ReactCardProps as WReactCardProps } from './components/Card/card'
import type { ReactCarouselProps as WReactCarouselProps } from './components/Carousel/carousel'
import type { ReactCheckboxProps as WReactCheckboxProps } from './components/Checkbox/checkbox'
import type { ReactCollapsibleProps as WReactCollapsibleProps } from './components/Collapsible/collapsible'
import type { ReactConditionalWrapperProps as WReactConditionalWrapperProps } from './components/ConditionalWrapper/conditionalwrapper'
import type { ReactCopyProps as WReactCopyProps } from './components/Copy/copy'
import type { ReactDataTableProps as WReactDataTableProps } from './components/DataTable/datatable'
import type { ReactFlexProps as WReactFlexProps } from './components/Flex/flex'
import type { ReactFooterProps as WReactFooterProps } from './components/Footer/footer'
import type { ReactGridProps as WReactGridProps } from './components/Grid/grid'
import type { ReactGroupProps as WReactGroupProps } from './components/Group/group'
import type { IconProps as WIconProps } from './components/Icon/icon'
import type { ReactInputProps as WReactInputProps } from './components/Input/input'
import type { ReactKbdProps as WReactKbdProps } from './components/Kbd/kbd'
import type { ReactListProps as WReactListProps } from './components/List/list'
import type { ReactMasonryProps as WReactMasonryProps } from './components/Masonry/masonry'
import type { ReactMenuProps as WReactMenuProps } from './components/Menu/menu'
import type { ReactModalProps as WReactModalProps } from './components/Modal/modal'
import type { OTPInputProps as WOTPInputProps } from './components/OTPInput/otpinput'
import type { ReactPaginationProps as WReactPaginationProps } from './components/Pagination/pagination'
import type { ReactPopoverProps as WReactPopoverProps } from './components/Popover/popover'
import type { ProgressProps as WProgressProps } from './components/Progress/progress'
import type { ReactRadioProps as WReactRadioProps } from './components/Radio/radio'
import type { RatingProps as WRatingProps } from './components/Rating/rating'
import type { ReactRibbonProps as WReactRibbonProps } from './components/Ribbon/ribbon'
import type { ReactSelectProps as WReactSelectProps } from './components/Select/select'
import type { ReactSheetProps as WReactSheetProps } from './components/Sheet/sheet'
import type { ReactSidebarProps as WReactSidebarProps } from './components/Sidebar/sidebar'
import type { SkeletonProps as WSkeletonProps } from './components/Skeleton/skeleton'
import type { ReactSliderProps as WReactSliderProps } from './components/Slider/slider'
import type { SpeedDialProps as WSpeedDialProps } from './components/SpeedDial/speeddial'
import type { SpinnerProps as WSpinnerProps } from './components/Spinner/spinner'
import type { ReactSpoilerProps as WReactSpoilerProps } from './components/Spoiler/spoiler'
import type { StepperProps as WStepperProps } from './components/Stepper/stepper'
import type { ReactSwitchProps as WReactSwitchProps } from './components/Switch/switch'
import type { TableProps as WTableProps } from './components/Table/table'
import type { ReactTabsProps as WReactTabsProps } from './components/Tabs/tabs'
import type { ReactTextareaProps as WReactTextareaProps } from './components/Textarea/textarea'
import type { ReactThemeSwitcherProps as WReactThemeSwitcherProps } from './components/ThemeSwitcher/themeswitcher'
import type { ReactTimelineProps as WReactTimelineProps } from './components/Timeline/timeline'
import type { ReactTimelineItemProps as WReactTimelineItemProps } from './components/TimelineItem/timelineitem'
import type { ReactToastProps as WReactToastProps } from './components/Toast/toast'

import type { DataTableEventType as WDataTableEventType, HeadingObject as WHeadingObject } from './components/DataTable/datatable.ts'
import type { ListEventType as WListEventType } from './components/List/list.ts'
import type { PaginationEventType as WPaginationEventType } from './components/Pagination/pagination.ts'
import type { SelectEventType as WSelectEventType } from './components/Select/select.ts'

declare module 'webcoreui/react' {
    export const Accordion: FC<WAccordionProps>
	export const Alert: FC<WReactAlertProps>
	export const AspectRatio: FC<WReactAspectRatioProps>
	export const Avatar: FC<WAvatarProps>
	export const Badge: FC<WReactBadgeProps>
	export const Banner: FC<WReactBannerProps>
	export const BottomNavigation: FC<WBottomNavigationProps>
	export const Breadcrumb: FC<WBreadcrumbProps>
	export const Button: FC<WReactButtonProps>
	export const Card: FC<WReactCardProps>
	export const Carousel: FC<WReactCarouselProps>
	export const Checkbox: FC<WReactCheckboxProps>
	export const Collapsible: FC<WReactCollapsibleProps>
	export const ConditionalWrapper: FC<WReactConditionalWrapperProps>
	export const Copy: FC<WReactCopyProps>
	export const DataTable: FC<WReactDataTableProps>
	export const Flex: FC<WReactFlexProps>
	export const Footer: FC<WReactFooterProps>
	export const Grid: FC<WReactGridProps>
	export const Group: FC<WReactGroupProps>
	export const Icon: FC<WIconProps>
	export const Input: FC<WReactInputProps>
	export const Kbd: FC<WReactKbdProps>
	export const List: FC<WReactListProps>
	export const Masonry: FC<WReactMasonryProps>
	export const Menu: FC<WReactMenuProps>
	export const Modal: FC<WReactModalProps>
	export const OTPInput: FC<WOTPInputProps>
	export const Pagination: FC<WReactPaginationProps>
	export const Popover: FC<WReactPopoverProps>
	export const Progress: FC<WProgressProps>
	export const Radio: FC<WReactRadioProps>
	export const Rating: FC<WRatingProps>
	export const Ribbon: FC<WReactRibbonProps>
	export const Select: FC<WReactSelectProps>
	export const Sheet: FC<WReactSheetProps>
	export const Sidebar: FC<WReactSidebarProps>
	export const Skeleton: FC<WSkeletonProps>
	export const Slider: FC<WReactSliderProps>
	export const SpeedDial: FC<WSpeedDialProps>
	export const Spinner: FC<WSpinnerProps>
	export const Spoiler: FC<WReactSpoilerProps>
	export const Stepper: FC<WStepperProps>
	export const Switch: FC<WReactSwitchProps>
	export const Table: FC<WTableProps>
	export const Tabs: FC<WReactTabsProps>
	export const Textarea: FC<WReactTextareaProps>
	export const ThemeSwitcher: FC<WReactThemeSwitcherProps>
	export const Timeline: FC<WReactTimelineProps>
	export const TimelineItem: FC<WReactTimelineItemProps>
	export const Toast: FC<WReactToastProps>

    export type AccordionProps = WAccordionProps
	export type AlertProps = WReactAlertProps
	export type AspectRatioProps = WReactAspectRatioProps
	export type AvatarProps = WAvatarProps
	export type BadgeProps = WReactBadgeProps
	export type BannerProps = WReactBannerProps
	export type BottomNavigationProps = WBottomNavigationProps
	export type BreadcrumbProps = WBreadcrumbProps
	export type ButtonProps = WReactButtonProps
	export type CardProps = WReactCardProps
	export type CarouselProps = WReactCarouselProps
	export type CheckboxProps = WReactCheckboxProps
	export type CollapsibleProps = WReactCollapsibleProps
	export type ConditionalWrapperProps = WReactConditionalWrapperProps
	export type CopyProps = WReactCopyProps
	export type DataTableProps = WReactDataTableProps
	export type FlexProps = WReactFlexProps
	export type FooterProps = WReactFooterProps
	export type GridProps = WReactGridProps
	export type GroupProps = WReactGroupProps
	export type IconProps = WIconProps
	export type InputProps = WReactInputProps
	export type KbdProps = WReactKbdProps
	export type ListProps = WReactListProps
	export type MasonryProps = WReactMasonryProps
	export type MenuProps = WReactMenuProps
	export type ModalProps = WReactModalProps
	export type OTPInputProps = WOTPInputProps
	export type PaginationProps = WReactPaginationProps
	export type PopoverProps = WReactPopoverProps
	export type ProgressProps = WProgressProps
	export type RadioProps = WReactRadioProps
	export type RatingProps = WRatingProps
	export type RibbonProps = WReactRibbonProps
	export type SelectProps = WReactSelectProps
	export type SheetProps = WReactSheetProps
	export type SidebarProps = WReactSidebarProps
	export type SkeletonProps = WSkeletonProps
	export type SliderProps = WReactSliderProps
	export type SpeedDialProps = WSpeedDialProps
	export type SpinnerProps = WSpinnerProps
	export type SpoilerProps = WReactSpoilerProps
	export type StepperProps = WStepperProps
	export type SwitchProps = WReactSwitchProps
	export type TableProps = WTableProps
	export type TabsProps = WReactTabsProps
	export type TextareaProps = WReactTextareaProps
	export type ThemeSwitcherProps = WReactThemeSwitcherProps
	export type TimelineProps = WReactTimelineProps
	export type TimelineItemProps = WReactTimelineItemProps
	export type ToastProps = WReactToastProps

    export type DataTableEventType = WDataTableEventType
	export type HeadingObject = WHeadingObject
	export type ListEventType = WListEventType
	export type PaginationEventType = WPaginationEventType
	export type SelectEventType = WSelectEventType
}