/* ezui custom elements bundle */

import type { Components, JSX } from "../types/components";

interface EzActionsButton extends Components.EzActionsButton, HTMLElement {}
export const EzActionsButton: {
  prototype: EzActionsButton;
  new (): EzActionsButton;
};

interface EzAlert extends Components.EzAlert, HTMLElement {}
export const EzAlert: {
  prototype: EzAlert;
  new (): EzAlert;
};

interface EzAlertList extends Components.EzAlertList, HTMLElement {}
export const EzAlertList: {
  prototype: EzAlertList;
  new (): EzAlertList;
};

interface EzApplication extends Components.EzApplication, HTMLElement {}
export const EzApplication: {
  prototype: EzApplication;
  new (): EzApplication;
};

interface EzAvatar extends Components.EzAvatar, HTMLElement {}
export const EzAvatar: {
  prototype: EzAvatar;
  new (): EzAvatar;
};

interface EzBadge extends Components.EzBadge, HTMLElement {}
export const EzBadge: {
  prototype: EzBadge;
  new (): EzBadge;
};

interface EzBreadcrumb extends Components.EzBreadcrumb, HTMLElement {}
export const EzBreadcrumb: {
  prototype: EzBreadcrumb;
  new (): EzBreadcrumb;
};

interface EzButton extends Components.EzButton, HTMLElement {}
export const EzButton: {
  prototype: EzButton;
  new (): EzButton;
};

interface EzCalendar extends Components.EzCalendar, HTMLElement {}
export const EzCalendar: {
  prototype: EzCalendar;
  new (): EzCalendar;
};

interface EzCardItem extends Components.EzCardItem, HTMLElement {}
export const EzCardItem: {
  prototype: EzCardItem;
  new (): EzCardItem;
};

interface EzChart extends Components.EzChart, HTMLElement {}
export const EzChart: {
  prototype: EzChart;
  new (): EzChart;
};

interface EzCheck extends Components.EzCheck, HTMLElement {}
export const EzCheck: {
  prototype: EzCheck;
  new (): EzCheck;
};

interface EzChip extends Components.EzChip, HTMLElement {}
export const EzChip: {
  prototype: EzChip;
  new (): EzChip;
};

interface EzClassicComboBox extends Components.EzClassicComboBox, HTMLElement {}
export const EzClassicComboBox: {
  prototype: EzClassicComboBox;
  new (): EzClassicComboBox;
};

interface EzClassicInput extends Components.EzClassicInput, HTMLElement {}
export const EzClassicInput: {
  prototype: EzClassicInput;
  new (): EzClassicInput;
};

interface EzClassicTextArea extends Components.EzClassicTextArea, HTMLElement {}
export const EzClassicTextArea: {
  prototype: EzClassicTextArea;
  new (): EzClassicTextArea;
};

interface EzCollapsibleBox extends Components.EzCollapsibleBox, HTMLElement {}
export const EzCollapsibleBox: {
  prototype: EzCollapsibleBox;
  new (): EzCollapsibleBox;
};

interface EzComboBox extends Components.EzComboBox, HTMLElement {}
export const EzComboBox: {
  prototype: EzComboBox;
  new (): EzComboBox;
};

interface EzComboBoxList extends Components.EzComboBoxList, HTMLElement {}
export const EzComboBoxList: {
  prototype: EzComboBoxList;
  new (): EzComboBoxList;
};

interface EzCustomFormInput extends Components.EzCustomFormInput, HTMLElement {}
export const EzCustomFormInput: {
  prototype: EzCustomFormInput;
  new (): EzCustomFormInput;
};

interface EzDateInput extends Components.EzDateInput, HTMLElement {}
export const EzDateInput: {
  prototype: EzDateInput;
  new (): EzDateInput;
};

interface EzDateTimeInput extends Components.EzDateTimeInput, HTMLElement {}
export const EzDateTimeInput: {
  prototype: EzDateTimeInput;
  new (): EzDateTimeInput;
};

interface EzDialog extends Components.EzDialog, HTMLElement {}
export const EzDialog: {
  prototype: EzDialog;
  new (): EzDialog;
};

interface EzDoubleList extends Components.EzDoubleList, HTMLElement {}
export const EzDoubleList: {
  prototype: EzDoubleList;
  new (): EzDoubleList;
};

interface EzDropdown extends Components.EzDropdown, HTMLElement {}
export const EzDropdown: {
  prototype: EzDropdown;
  new (): EzDropdown;
};

interface EzEmptyCard extends Components.EzEmptyCard, HTMLElement {}
export const EzEmptyCard: {
  prototype: EzEmptyCard;
  new (): EzEmptyCard;
};

interface EzFileItem extends Components.EzFileItem, HTMLElement {}
export const EzFileItem: {
  prototype: EzFileItem;
  new (): EzFileItem;
};

interface EzFilterInput extends Components.EzFilterInput, HTMLElement {}
export const EzFilterInput: {
  prototype: EzFilterInput;
  new (): EzFilterInput;
};

interface EzForm extends Components.EzForm, HTMLElement {}
export const EzForm: {
  prototype: EzForm;
  new (): EzForm;
};

interface EzFormView extends Components.EzFormView, HTMLElement {}
export const EzFormView: {
  prototype: EzFormView;
  new (): EzFormView;
};

interface EzGrid extends Components.EzGrid, HTMLElement {}
export const EzGrid: {
  prototype: EzGrid;
  new (): EzGrid;
};

interface EzGridView extends Components.EzGridView, HTMLElement {}
export const EzGridView: {
  prototype: EzGridView;
  new (): EzGridView;
};

interface EzGuideNavigator extends Components.EzGuideNavigator, HTMLElement {}
export const EzGuideNavigator: {
  prototype: EzGuideNavigator;
  new (): EzGuideNavigator;
};

interface EzIcon extends Components.EzIcon, HTMLElement {}
export const EzIcon: {
  prototype: EzIcon;
  new (): EzIcon;
};

interface EzLinkBuilder extends Components.EzLinkBuilder, HTMLElement {}
export const EzLinkBuilder: {
  prototype: EzLinkBuilder;
  new (): EzLinkBuilder;
};

interface EzList extends Components.EzList, HTMLElement {}
export const EzList: {
  prototype: EzList;
  new (): EzList;
};

interface EzListItem extends Components.EzListItem, HTMLElement {}
export const EzListItem: {
  prototype: EzListItem;
  new (): EzListItem;
};

interface EzLoadingBar extends Components.EzLoadingBar, HTMLElement {}
export const EzLoadingBar: {
  prototype: EzLoadingBar;
  new (): EzLoadingBar;
};

interface EzModal extends Components.EzModal, HTMLElement {}
export const EzModal: {
  prototype: EzModal;
  new (): EzModal;
};

interface EzModalContainer extends Components.EzModalContainer, HTMLElement {}
export const EzModalContainer: {
  prototype: EzModalContainer;
  new (): EzModalContainer;
};

interface EzMultiSelectionList extends Components.EzMultiSelectionList, HTMLElement {}
export const EzMultiSelectionList: {
  prototype: EzMultiSelectionList;
  new (): EzMultiSelectionList;
};

interface EzNumberInput extends Components.EzNumberInput, HTMLElement {}
export const EzNumberInput: {
  prototype: EzNumberInput;
  new (): EzNumberInput;
};

interface EzPagination extends Components.EzPagination, HTMLElement {}
export const EzPagination: {
  prototype: EzPagination;
  new (): EzPagination;
};

interface EzPopover extends Components.EzPopover, HTMLElement {}
export const EzPopover: {
  prototype: EzPopover;
  new (): EzPopover;
};

interface EzPopoverCore extends Components.EzPopoverCore, HTMLElement {}
export const EzPopoverCore: {
  prototype: EzPopoverCore;
  new (): EzPopoverCore;
};

interface EzPopoverPlus extends Components.EzPopoverPlus, HTMLElement {}
export const EzPopoverPlus: {
  prototype: EzPopoverPlus;
  new (): EzPopoverPlus;
};

interface EzPopup extends Components.EzPopup, HTMLElement {}
export const EzPopup: {
  prototype: EzPopup;
  new (): EzPopup;
};

interface EzProgressBar extends Components.EzProgressBar, HTMLElement {}
export const EzProgressBar: {
  prototype: EzProgressBar;
  new (): EzProgressBar;
};

interface EzRadioButton extends Components.EzRadioButton, HTMLElement {}
export const EzRadioButton: {
  prototype: EzRadioButton;
  new (): EzRadioButton;
};

interface EzRichText extends Components.EzRichText, HTMLElement {}
export const EzRichText: {
  prototype: EzRichText;
  new (): EzRichText;
};

interface EzRichToolbar extends Components.EzRichToolbar, HTMLElement {}
export const EzRichToolbar: {
  prototype: EzRichToolbar;
  new (): EzRichToolbar;
};

interface EzRichToolbarArrows extends Components.EzRichToolbarArrows, HTMLElement {}
export const EzRichToolbarArrows: {
  prototype: EzRichToolbarArrows;
  new (): EzRichToolbarArrows;
};

interface EzRichToolbarConfigs extends Components.EzRichToolbarConfigs, HTMLElement {}
export const EzRichToolbarConfigs: {
  prototype: EzRichToolbarConfigs;
  new (): EzRichToolbarConfigs;
};

interface EzRichToolbarItem extends Components.EzRichToolbarItem, HTMLElement {}
export const EzRichToolbarItem: {
  prototype: EzRichToolbarItem;
  new (): EzRichToolbarItem;
};

interface EzRichToolbarLetters extends Components.EzRichToolbarLetters, HTMLElement {}
export const EzRichToolbarLetters: {
  prototype: EzRichToolbarLetters;
  new (): EzRichToolbarLetters;
};

interface EzScroller extends Components.EzScroller, HTMLElement {}
export const EzScroller: {
  prototype: EzScroller;
  new (): EzScroller;
};

interface EzSearch extends Components.EzSearch, HTMLElement {}
export const EzSearch: {
  prototype: EzSearch;
  new (): EzSearch;
};

interface EzSearchPlus extends Components.EzSearchPlus, HTMLElement {}
export const EzSearchPlus: {
  prototype: EzSearchPlus;
  new (): EzSearchPlus;
};

interface EzSearchResultList extends Components.EzSearchResultList, HTMLElement {}
export const EzSearchResultList: {
  prototype: EzSearchResultList;
  new (): EzSearchResultList;
};

interface EzSidebarButton extends Components.EzSidebarButton, HTMLElement {}
export const EzSidebarButton: {
  prototype: EzSidebarButton;
  new (): EzSidebarButton;
};

interface EzSidebarNavigator extends Components.EzSidebarNavigator, HTMLElement {}
export const EzSidebarNavigator: {
  prototype: EzSidebarNavigator;
  new (): EzSidebarNavigator;
};

interface EzSimpleImageUploader extends Components.EzSimpleImageUploader, HTMLElement {}
export const EzSimpleImageUploader: {
  prototype: EzSimpleImageUploader;
  new (): EzSimpleImageUploader;
};

interface EzSkeleton extends Components.EzSkeleton, HTMLElement {}
export const EzSkeleton: {
  prototype: EzSkeleton;
  new (): EzSkeleton;
};

interface EzSortableList extends Components.EzSortableList, HTMLElement {}
export const EzSortableList: {
  prototype: EzSortableList;
  new (): EzSortableList;
};

interface EzSpinner extends Components.EzSpinner, HTMLElement {}
export const EzSpinner: {
  prototype: EzSpinner;
  new (): EzSpinner;
};

interface EzSplitButton extends Components.EzSplitButton, HTMLElement {}
export const EzSplitButton: {
  prototype: EzSplitButton;
  new (): EzSplitButton;
};

interface EzSplitItem extends Components.EzSplitItem, HTMLElement {}
export const EzSplitItem: {
  prototype: EzSplitItem;
  new (): EzSplitItem;
};

interface EzSplitPanel extends Components.EzSplitPanel, HTMLElement {}
export const EzSplitPanel: {
  prototype: EzSplitPanel;
  new (): EzSplitPanel;
};

interface EzTabselector extends Components.EzTabselector, HTMLElement {}
export const EzTabselector: {
  prototype: EzTabselector;
  new (): EzTabselector;
};

interface EzTag extends Components.EzTag, HTMLElement {}
export const EzTag: {
  prototype: EzTag;
  new (): EzTag;
};

interface EzTagInput extends Components.EzTagInput, HTMLElement {}
export const EzTagInput: {
  prototype: EzTagInput;
  new (): EzTagInput;
};

interface EzTextArea extends Components.EzTextArea, HTMLElement {}
export const EzTextArea: {
  prototype: EzTextArea;
  new (): EzTextArea;
};

interface EzTextEdit extends Components.EzTextEdit, HTMLElement {}
export const EzTextEdit: {
  prototype: EzTextEdit;
  new (): EzTextEdit;
};

interface EzTextInput extends Components.EzTextInput, HTMLElement {}
export const EzTextInput: {
  prototype: EzTextInput;
  new (): EzTextInput;
};

interface EzTile extends Components.EzTile, HTMLElement {}
export const EzTile: {
  prototype: EzTile;
  new (): EzTile;
};

interface EzTileMedium extends Components.EzTileMedium, HTMLElement {}
export const EzTileMedium: {
  prototype: EzTileMedium;
  new (): EzTileMedium;
};

interface EzTimeInput extends Components.EzTimeInput, HTMLElement {}
export const EzTimeInput: {
  prototype: EzTimeInput;
  new (): EzTimeInput;
};

interface EzToast extends Components.EzToast, HTMLElement {}
export const EzToast: {
  prototype: EzToast;
  new (): EzToast;
};

interface EzTooltip extends Components.EzTooltip, HTMLElement {}
export const EzTooltip: {
  prototype: EzTooltip;
  new (): EzTooltip;
};

interface EzTree extends Components.EzTree, HTMLElement {}
export const EzTree: {
  prototype: EzTree;
  new (): EzTree;
};

interface EzUnderface extends Components.EzUnderface, HTMLElement {}
export const EzUnderface: {
  prototype: EzUnderface;
  new (): EzUnderface;
};

interface EzUpload extends Components.EzUpload, HTMLElement {}
export const EzUpload: {
  prototype: EzUpload;
  new (): EzUpload;
};

interface EzViewStack extends Components.EzViewStack, HTMLElement {}
export const EzViewStack: {
  prototype: EzViewStack;
  new (): EzViewStack;
};

interface FilterColumn extends Components.FilterColumn, HTMLElement {}
export const FilterColumn: {
  prototype: FilterColumn;
  new (): FilterColumn;
};

interface MultiSelectionBoxMessage extends Components.MultiSelectionBoxMessage, HTMLElement {}
export const MultiSelectionBoxMessage: {
  prototype: MultiSelectionBoxMessage;
  new (): MultiSelectionBoxMessage;
};

interface SearchList extends Components.SearchList, HTMLElement {}
export const SearchList: {
  prototype: SearchList;
  new (): SearchList;
};

/**
 * Utility to define all custom elements within this package using the tag name provided in the component's source. 
 * When defining each custom element, it will also check it's safe to define by:
 *
 * 1. Ensuring the "customElements" registry is available in the global context (window).
 * 2. The component tag name is not already defined.
 *
 * Use the standard [customElements.define()](https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry/define) 
 * method instead to define custom elements individually, or to provide a different tag name.
 */
export declare const defineCustomElements: (opts?: any) => void;

/**
 * Used to manually set the base path where assets can be found.
 * If the script is used as "module", it's recommended to use "import.meta.url",
 * such as "setAssetPath(import.meta.url)". Other options include
 * "setAssetPath(document.currentScript.src)", or using a bundler's replace plugin to
 * dynamically set the path at build time, such as "setAssetPath(process.env.ASSET_PATH)".
 * But do note that this configuration depends on how your script is bundled, or lack of
 * bunding, and where your assets can be loaded from. Additionally custom bundling
 * will have to ensure the static assets are copied to its build directory.
 */
export declare const setAssetPath: (path: string) => void;

export interface SetPlatformOptions {
  raf?: (c: FrameRequestCallback) => number;
  ael?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
  rel?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
  ce?: (eventName: string, opts?: any) => CustomEvent;
}
export declare const setPlatformOptions: (opts: SetPlatformOptions) => void;

export type { Components, JSX };

export * from '../types';
