import type { Component } from 'svelte'

import type { Props as WAccordionProps } from './components/Accordion/Accordion.svelte'
import type { Props as WAlertProps } from './components/Alert/Alert.svelte'
import type { Props as WAspectRatioProps } from './components/AspectRatio/AspectRatio.svelte'
import type { Props as WAvatarProps } from './components/Avatar/Avatar.svelte'
import type { Props as WBadgeProps } from './components/Badge/Badge.svelte'
import type { Props as WBannerProps } from './components/Banner/Banner.svelte'
import type { Props as WBottomNavigationProps } from './components/BottomNavigation/BottomNavigation.svelte'
import type { Props as WBreadcrumbProps } from './components/Breadcrumb/Breadcrumb.svelte'
import type { Props as WButtonProps } from './components/Button/Button.svelte'
import type { Props as WCardProps } from './components/Card/Card.svelte'
import type { Props as WCarouselProps } from './components/Carousel/Carousel.svelte'
import type { Props as WCarouselItemProps } from './components/CarouselItem/CarouselItem.svelte'
import type { Props as WCheckboxProps } from './components/Checkbox/Checkbox.svelte'
import type { Props as WCollapsibleProps } from './components/Collapsible/Collapsible.svelte'
import type { Props as WConditionalWrapperProps } from './components/ConditionalWrapper/ConditionalWrapper.svelte'
import type { Props as WContextMenuProps } from './components/ContextMenu/ContextMenu.svelte'
import type { Props as WCopyProps } from './components/Copy/Copy.svelte'
import type { Props as WCounterProps } from './components/Counter/Counter.svelte'
import type { Props as WDataTableProps } from './components/DataTable/DataTable.svelte'
import type { Props as WFlexProps } from './components/Flex/Flex.svelte'
import type { Props as WFooterProps } from './components/Footer/Footer.svelte'
import type { Props as WGridProps } from './components/Grid/Grid.svelte'
import type { Props as WGroupProps } from './components/Group/Group.svelte'
import type { Props as WIconProps } from './components/Icon/Icon.svelte'
import type { Props as WImageProps } from './components/Image/Image.svelte'
import type { Props as WImageLoaderProps } from './components/ImageLoader/ImageLoader.svelte'
import type { Props as WInputProps } from './components/Input/Input.svelte'
import type { Props as WKbdProps } from './components/Kbd/Kbd.svelte'
import type { Props as WListProps } from './components/List/List.svelte'
import type { Props as WMasonryProps } from './components/Masonry/Masonry.svelte'
import type { Props as WMenuProps } from './components/Menu/Menu.svelte'
import type { Props as WModalProps } from './components/Modal/Modal.svelte'
import type { Props as WOTPInputProps } from './components/OTPInput/OTPInput.svelte'
import type { Props as WPaginationProps } from './components/Pagination/Pagination.svelte'
import type { Props as WPopoverProps } from './components/Popover/Popover.svelte'
import type { Props as WProgressProps } from './components/Progress/Progress.svelte'
import type { Props as WRadioProps } from './components/Radio/Radio.svelte'
import type { Props as WRangeSliderProps } from './components/RangeSlider/RangeSlider.svelte'
import type { Props as WRatingProps } from './components/Rating/Rating.svelte'
import type { Props as WRibbonProps } from './components/Ribbon/Ribbon.svelte'
import type { Props as WSelectProps } from './components/Select/Select.svelte'
import type { Props as WSheetProps } from './components/Sheet/Sheet.svelte'
import type { Props as WSidebarProps } from './components/Sidebar/Sidebar.svelte'
import type { Props as WSkeletonProps } from './components/Skeleton/Skeleton.svelte'
import type { Props as WSliderProps } from './components/Slider/Slider.svelte'
import type { Props as WSpeedDialProps } from './components/SpeedDial/SpeedDial.svelte'
import type { Props as WSpinnerProps } from './components/Spinner/Spinner.svelte'
import type { Props as WSpoilerProps } from './components/Spoiler/Spoiler.svelte'
import type { Props as WStepperProps } from './components/Stepper/Stepper.svelte'
import type { Props as WSwitchProps } from './components/Switch/Switch.svelte'
import type { Props as WTabProps } from './components/Tab/Tab.svelte'
import type { Props as WTableProps } from './components/Table/Table.svelte'
import type { Props as WTabsProps } from './components/Tabs/Tabs.svelte'
import type { Props as WTextareaProps } from './components/Textarea/Textarea.svelte'
import type { Props as WThemeSwitcherProps } from './components/ThemeSwitcher/ThemeSwitcher.svelte'
import type { Props as WTimelineProps } from './components/Timeline/Timeline.svelte'
import type { Props as WTimelineItemProps } from './components/TimelineItem/TimelineItem.svelte'
import type { Props as WToastProps } from './components/Toast/Toast.svelte'

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 { RangeSliderEventType as WRangeSliderEventType } from './components/RangeSlider/rangeslider.ts'
import type { SelectEventType as WSelectEventType } from './components/Select/select.ts'

declare module 'webcoreui/svelte' {
    export const Accordion: Component<WAccordionProps>
	export const Alert: Component<WAlertProps>
	export const AspectRatio: Component<WAspectRatioProps>
	export const Avatar: Component<WAvatarProps>
	export const Badge: Component<WBadgeProps>
	export const Banner: Component<WBannerProps>
	export const BottomNavigation: Component<WBottomNavigationProps>
	export const Breadcrumb: Component<WBreadcrumbProps>
	export const Button: Component<WButtonProps>
	export const Card: Component<WCardProps>
	export const Carousel: Component<WCarouselProps>
	export const CarouselItem: Component<WCarouselItemProps>
	export const Checkbox: Component<WCheckboxProps>
	export const Collapsible: Component<WCollapsibleProps>
	export const ConditionalWrapper: Component<WConditionalWrapperProps>
	export const ContextMenu: Component<WContextMenuProps>
	export const Copy: Component<WCopyProps>
	export const Counter: Component<WCounterProps>
	export const DataTable: Component<WDataTableProps>
	export const Flex: Component<WFlexProps>
	export const Footer: Component<WFooterProps>
	export const Grid: Component<WGridProps>
	export const Group: Component<WGroupProps>
	export const Icon: Component<WIconProps>
	export const Image: Component<WImageProps>
	export const ImageLoader: Component<WImageLoaderProps>
	export const Input: Component<WInputProps>
	export const Kbd: Component<WKbdProps>
	export const List: Component<WListProps>
	export const Masonry: Component<WMasonryProps>
	export const Menu: Component<WMenuProps>
	export const Modal: Component<WModalProps>
	export const OTPInput: Component<WOTPInputProps>
	export const Pagination: Component<WPaginationProps>
	export const Popover: Component<WPopoverProps>
	export const Progress: Component<WProgressProps>
	export const Radio: Component<WRadioProps>
	export const RangeSlider: Component<WRangeSliderProps>
	export const Rating: Component<WRatingProps>
	export const Ribbon: Component<WRibbonProps>
	export const Select: Component<WSelectProps>
	export const Sheet: Component<WSheetProps>
	export const Sidebar: Component<WSidebarProps>
	export const Skeleton: Component<WSkeletonProps>
	export const Slider: Component<WSliderProps>
	export const SpeedDial: Component<WSpeedDialProps>
	export const Spinner: Component<WSpinnerProps>
	export const Spoiler: Component<WSpoilerProps>
	export const Stepper: Component<WStepperProps>
	export const Switch: Component<WSwitchProps>
	export const Tab: Component<WTabProps>
	export const Table: Component<WTableProps>
	export const Tabs: Component<WTabsProps>
	export const Textarea: Component<WTextareaProps>
	export const ThemeSwitcher: Component<WThemeSwitcherProps>
	export const Timeline: Component<WTimelineProps>
	export const TimelineItem: Component<WTimelineItemProps>
	export const Toast: Component<WToastProps>

    export type AccordionProps = WAccordionProps
	export type AlertProps = WAlertProps
	export type AspectRatioProps = WAspectRatioProps
	export type AvatarProps = WAvatarProps
	export type BadgeProps = WBadgeProps
	export type BannerProps = WBannerProps
	export type BottomNavigationProps = WBottomNavigationProps
	export type BreadcrumbProps = WBreadcrumbProps
	export type ButtonProps = WButtonProps
	export type CardProps = WCardProps
	export type CarouselProps = WCarouselProps
	export type CarouselItemProps = WCarouselItemProps
	export type CheckboxProps = WCheckboxProps
	export type CollapsibleProps = WCollapsibleProps
	export type ConditionalWrapperProps = WConditionalWrapperProps
	export type ContextMenuProps = WContextMenuProps
	export type CopyProps = WCopyProps
	export type CounterProps = WCounterProps
	export type DataTableProps = WDataTableProps
	export type FlexProps = WFlexProps
	export type FooterProps = WFooterProps
	export type GridProps = WGridProps
	export type GroupProps = WGroupProps
	export type IconProps = WIconProps
	export type ImageProps = WImageProps
	export type ImageLoaderProps = WImageLoaderProps
	export type InputProps = WInputProps
	export type KbdProps = WKbdProps
	export type ListProps = WListProps
	export type MasonryProps = WMasonryProps
	export type MenuProps = WMenuProps
	export type ModalProps = WModalProps
	export type OTPInputProps = WOTPInputProps
	export type PaginationProps = WPaginationProps
	export type PopoverProps = WPopoverProps
	export type ProgressProps = WProgressProps
	export type RadioProps = WRadioProps
	export type RangeSliderProps = WRangeSliderProps
	export type RatingProps = WRatingProps
	export type RibbonProps = WRibbonProps
	export type SelectProps = WSelectProps
	export type SheetProps = WSheetProps
	export type SidebarProps = WSidebarProps
	export type SkeletonProps = WSkeletonProps
	export type SliderProps = WSliderProps
	export type SpeedDialProps = WSpeedDialProps
	export type SpinnerProps = WSpinnerProps
	export type SpoilerProps = WSpoilerProps
	export type StepperProps = WStepperProps
	export type SwitchProps = WSwitchProps
	export type TabProps = WTabProps
	export type TableProps = WTableProps
	export type TabsProps = WTabsProps
	export type TextareaProps = WTextareaProps
	export type ThemeSwitcherProps = WThemeSwitcherProps
	export type TimelineProps = WTimelineProps
	export type TimelineItemProps = WTimelineItemProps
	export type ToastProps = WToastProps

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