/* PayfuncComponent custom elements bundle */

import type { 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 IgAddress extends Components.IgAddress, HTMLElement {}
export const IgAddress: {
  prototype: IgAddress;
  new (): IgAddress;
};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 PayfuncCardInput extends Components.PayfuncCardInput, HTMLElement {}
export const PayfuncCardInput: {
  prototype: PayfuncCardInput;
  new (): PayfuncCardInput;
};

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

/**
 * 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';
