import type { Component } from 'svelte'
import type { AccordionProps as WAccordionProps } from './components/Accordion/accordion'
import type { SvelteAlertProps as WSvelteAlertProps } from './components/Alert/alert'
import type { SvelteAspectRatioProps as WSvelteAspectRatioProps } from './components/AspectRatio/aspectratio'
import type { AvatarProps as WAvatarProps } from './components/Avatar/avatar'
import type { SvelteBadgeProps as WSvelteBadgeProps } from './components/Badge/badge'
import type { SvelteBannerProps as WSvelteBannerProps } from './components/Banner/banner'
import type { BottomNavigationProps as WBottomNavigationProps } from './components/BottomNavigation/bottomnavigation'
import type { BreadcrumbProps as WBreadcrumbProps } from './components/Breadcrumb/breadcrumb'
import type { SvelteButtonProps as WSvelteButtonProps } from './components/Button/button'
import type { SvelteCardProps as WSvelteCardProps } from './components/Card/card'
import type { SvelteCarouselProps as WSvelteCarouselProps } from './components/Carousel/carousel'
import type { SvelteCheckboxProps as WSvelteCheckboxProps } from './components/Checkbox/checkbox'
import type { SvelteCollapsibleProps as WSvelteCollapsibleProps } from './components/Collapsible/collapsible'
import type { SvelteConditionalWrapperProps as WSvelteConditionalWrapperProps } from './components/ConditionalWrapper/conditionalwrapper'
import type { SvelteCopyProps as WSvelteCopyProps } from './components/Copy/copy'
import type { SvelteDataTableProps as WSvelteDataTableProps } from './components/DataTable/datatable'
import type { SvelteFlexProps as WSvelteFlexProps } from './components/Flex/flex'
import type { SvelteFooterProps as WSvelteFooterProps } from './components/Footer/footer'
import type { SvelteGridProps as WSvelteGridProps } from './components/Grid/grid'
import type { SvelteGroupProps as WSvelteGroupProps } from './components/Group/group'
import type { IconProps as WIconProps } from './components/Icon/icon'
import type { SvelteInputProps as WSvelteInputProps } from './components/Input/input'
import type { SvelteKbdProps as WSvelteKbdProps } from './components/Kbd/kbd'
import type { SvelteListProps as WSvelteListProps } from './components/List/list'
import type { SvelteMasonryProps as WSvelteMasonryProps } from './components/Masonry/masonry'
import type { SvelteMenuProps as WSvelteMenuProps } from './components/Menu/menu'
import type { SvelteModalProps as WSvelteModalProps } from './components/Modal/modal'
import type { OTPInputProps as WOTPInputProps } from './components/OTPInput/otpinput'
import type { SveltePaginationProps as WSveltePaginationProps } from './components/Pagination/pagination'
import type { SveltePopoverProps as WSveltePopoverProps } from './components/Popover/popover'
import type { ProgressProps as WProgressProps } from './components/Progress/progress'
import type { SvelteRadioProps as WSvelteRadioProps } from './components/Radio/radio'
import type { RatingProps as WRatingProps } from './components/Rating/rating'
import type { SvelteRibbonProps as WSvelteRibbonProps } from './components/Ribbon/ribbon'
import type { SvelteSelectProps as WSvelteSelectProps } from './components/Select/select'
import type { SvelteSheetProps as WSvelteSheetProps } from './components/Sheet/sheet'
import type { SvelteSidebarProps as WSvelteSidebarProps } from './components/Sidebar/sidebar'
import type { SkeletonProps as WSkeletonProps } from './components/Skeleton/skeleton'
import type { SvelteSliderProps as WSvelteSliderProps } from './components/Slider/slider'
import type { SpeedDialProps as WSpeedDialProps } from './components/SpeedDial/speeddial'
import type { SpinnerProps as WSpinnerProps } from './components/Spinner/spinner'
import type { SvelteSpoilerProps as WSvelteSpoilerProps } from './components/Spoiler/spoiler'
import type { StepperProps as WStepperProps } from './components/Stepper/stepper'
import type { SvelteSwitchProps as WSvelteSwitchProps } from './components/Switch/switch'
import type { TableProps as WTableProps } from './components/Table/table'
import type { SvelteTabsProps as WSvelteTabsProps } from './components/Tabs/tabs'
import type { SvelteTextareaProps as WSvelteTextareaProps } from './components/Textarea/textarea'
import type { SvelteThemeSwitcherProps as WSvelteThemeSwitcherProps } from './components/ThemeSwitcher/themeswitcher'
import type { SvelteTimelineProps as WSvelteTimelineProps } from './components/Timeline/timeline'
import type { SvelteTimelineItemProps as WSvelteTimelineItemProps } from './components/TimelineItem/timelineitem'
import type { SvelteToastProps as WSvelteToastProps } 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/svelte' {
    export const Accordion: Component<WAccordionProps>
	export const Alert: Component<WSvelteAlertProps>
	export const AspectRatio: Component<WSvelteAspectRatioProps>
	export const Avatar: Component<WAvatarProps>
	export const Badge: Component<WSvelteBadgeProps>
	export const Banner: Component<WSvelteBannerProps>
	export const BottomNavigation: Component<WBottomNavigationProps>
	export const Breadcrumb: Component<WBreadcrumbProps>
	export const Button: Component<WSvelteButtonProps>
	export const Card: Component<WSvelteCardProps>
	export const Carousel: Component<WSvelteCarouselProps>
	export const Checkbox: Component<WSvelteCheckboxProps>
	export const Collapsible: Component<WSvelteCollapsibleProps>
	export const ConditionalWrapper: Component<WSvelteConditionalWrapperProps>
	export const Copy: Component<WSvelteCopyProps>
	export const DataTable: Component<WSvelteDataTableProps>
	export const Flex: Component<WSvelteFlexProps>
	export const Footer: Component<WSvelteFooterProps>
	export const Grid: Component<WSvelteGridProps>
	export const Group: Component<WSvelteGroupProps>
	export const Icon: Component<WIconProps>
	export const Input: Component<WSvelteInputProps>
	export const Kbd: Component<WSvelteKbdProps>
	export const List: Component<WSvelteListProps>
	export const Masonry: Component<WSvelteMasonryProps>
	export const Menu: Component<WSvelteMenuProps>
	export const Modal: Component<WSvelteModalProps>
	export const OTPInput: Component<WOTPInputProps>
	export const Pagination: Component<WSveltePaginationProps>
	export const Popover: Component<WSveltePopoverProps>
	export const Progress: Component<WProgressProps>
	export const Radio: Component<WSvelteRadioProps>
	export const Rating: Component<WRatingProps>
	export const Ribbon: Component<WSvelteRibbonProps>
	export const Select: Component<WSvelteSelectProps>
	export const Sheet: Component<WSvelteSheetProps>
	export const Sidebar: Component<WSvelteSidebarProps>
	export const Skeleton: Component<WSkeletonProps>
	export const Slider: Component<WSvelteSliderProps>
	export const SpeedDial: Component<WSpeedDialProps>
	export const Spinner: Component<WSpinnerProps>
	export const Spoiler: Component<WSvelteSpoilerProps>
	export const Stepper: Component<WStepperProps>
	export const Switch: Component<WSvelteSwitchProps>
	export const Table: Component<WTableProps>
	export const Tabs: Component<WSvelteTabsProps>
	export const Textarea: Component<WSvelteTextareaProps>
	export const ThemeSwitcher: Component<WSvelteThemeSwitcherProps>
	export const Timeline: Component<WSvelteTimelineProps>
	export const TimelineItem: Component<WSvelteTimelineItemProps>
	export const Toast: Component<WSvelteToastProps>

    export type AccordionProps = WAccordionProps
	export type AlertProps = WSvelteAlertProps
	export type AspectRatioProps = WSvelteAspectRatioProps
	export type AvatarProps = WAvatarProps
	export type BadgeProps = WSvelteBadgeProps
	export type BannerProps = WSvelteBannerProps
	export type BottomNavigationProps = WBottomNavigationProps
	export type BreadcrumbProps = WBreadcrumbProps
	export type ButtonProps = WSvelteButtonProps
	export type CardProps = WSvelteCardProps
	export type CarouselProps = WSvelteCarouselProps
	export type CheckboxProps = WSvelteCheckboxProps
	export type CollapsibleProps = WSvelteCollapsibleProps
	export type ConditionalWrapperProps = WSvelteConditionalWrapperProps
	export type CopyProps = WSvelteCopyProps
	export type DataTableProps = WSvelteDataTableProps
	export type FlexProps = WSvelteFlexProps
	export type FooterProps = WSvelteFooterProps
	export type GridProps = WSvelteGridProps
	export type GroupProps = WSvelteGroupProps
	export type IconProps = WIconProps
	export type InputProps = WSvelteInputProps
	export type KbdProps = WSvelteKbdProps
	export type ListProps = WSvelteListProps
	export type MasonryProps = WSvelteMasonryProps
	export type MenuProps = WSvelteMenuProps
	export type ModalProps = WSvelteModalProps
	export type OTPInputProps = WOTPInputProps
	export type PaginationProps = WSveltePaginationProps
	export type PopoverProps = WSveltePopoverProps
	export type ProgressProps = WProgressProps
	export type RadioProps = WSvelteRadioProps
	export type RatingProps = WRatingProps
	export type RibbonProps = WSvelteRibbonProps
	export type SelectProps = WSvelteSelectProps
	export type SheetProps = WSvelteSheetProps
	export type SidebarProps = WSvelteSidebarProps
	export type SkeletonProps = WSkeletonProps
	export type SliderProps = WSvelteSliderProps
	export type SpeedDialProps = WSpeedDialProps
	export type SpinnerProps = WSpinnerProps
	export type SpoilerProps = WSvelteSpoilerProps
	export type StepperProps = WStepperProps
	export type SwitchProps = WSvelteSwitchProps
	export type TableProps = WTableProps
	export type TabsProps = WSvelteTabsProps
	export type TextareaProps = WSvelteTextareaProps
	export type ThemeSwitcherProps = WSvelteThemeSwitcherProps
	export type TimelineProps = WSvelteTimelineProps
	export type TimelineItemProps = WSvelteTimelineItemProps
	export type ToastProps = WSvelteToastProps

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