import { IMTBLWidgetEvents, WidgetEvent, ConnectEventType, WalletProviderName, WidgetType, WalletConnectManager, EIP6963ProviderInfo, WrappedBrowserProvider, } from '@imtbl/checkout-sdk'; import EthereumProvider from '@walletconnect/ethereum-provider'; export function sendConnectSuccessEvent( eventTarget: Window | EventTarget, provider: WrappedBrowserProvider, walletProviderName?: WalletProviderName, walletProviderInfo?: EIP6963ProviderInfo, ) { const successEvent = new CustomEvent>( IMTBLWidgetEvents.IMTBL_CONNECT_WIDGET_EVENT, { detail: { type: ConnectEventType.SUCCESS, data: { provider, walletProviderName, walletProviderInfo, }, }, }, ); // eslint-disable-next-line no-console console.log('success event:', eventTarget, successEvent); if (eventTarget !== undefined) eventTarget.dispatchEvent(successEvent); } export function sendCloseWidgetEvent(eventTarget: Window | EventTarget) { const closeWidgetEvent = new CustomEvent>( IMTBLWidgetEvents.IMTBL_CONNECT_WIDGET_EVENT, { detail: { type: ConnectEventType.CLOSE_WIDGET, data: {}, }, }, ); // eslint-disable-next-line no-console console.log('close event:', eventTarget, closeWidgetEvent); if (eventTarget !== undefined) eventTarget.dispatchEvent(closeWidgetEvent); } export function sendConnectFailedEvent(eventTarget: Window | EventTarget, reason: string) { const failedEvent = new CustomEvent>( IMTBLWidgetEvents.IMTBL_CONNECT_WIDGET_EVENT, { detail: { type: ConnectEventType.FAILURE, data: { reason, }, }, }, ); // eslint-disable-next-line no-console console.log('failed event:', eventTarget, failedEvent); if (eventTarget !== undefined) eventTarget.dispatchEvent(failedEvent); } export function sendWalletConnectProviderUpdatedEvent( eventTarget: Window | EventTarget, ethereumProvider: EthereumProvider | null, walletConnectManager: WalletConnectManager, ) { const successEvent = new CustomEvent< WidgetEvent >( IMTBLWidgetEvents.IMTBL_CONNECT_WIDGET_EVENT, { detail: { type: ConnectEventType.WALLETCONNECT_PROVIDER_UPDATED, data: { ethereumProvider, walletConnectManager, }, }, }, ); if (eventTarget !== undefined) eventTarget.dispatchEvent(successEvent); }