/* PayfuncComponent custom elements bundle */

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * 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 { Components, JSX };

export * from '../types';
