{"version":3,"file":"injectedWeb3EthProviders-Cp_aXKsI.mjs","names":["#instance","#onAnnouncement","#providers","#providerIdMap"],"sources":["../../src/internal/clerk-js/injectedWeb3EthProviders.ts"],"sourcesContent":["//https://eips.ethereum.org/EIPS/eip-6963\n\nimport type { MetamaskWeb3Provider, OKXWalletWeb3Provider } from '../../types';\n\ninterface EIP6963ProviderInfo {\n walletId: string;\n uuid: string;\n name: string;\n icon: string;\n}\n\ninterface EIP1193Provider {\n isStatus?: boolean;\n host?: string;\n path?: string;\n sendAsync?: (\n request: { method: string; params?: [] },\n callback: (error: Error | null, response: unknown) => void,\n ) => void; // For sending asynchronous requests\n send?: (request: { method: string; params?: [] }, callback: (error: Error | null, response: unknown) => void) => void; // For sending synchronous requests\n request: (request: { method: string; params?: string[] }) => Promise; // Standard method for sending requests per EIP-1193\n}\n\ninterface EIP6963ProviderDetail {\n info: EIP6963ProviderInfo;\n provider: EIP1193Provider;\n}\n\ntype EIP6963AnnounceProviderEvent = CustomEvent;\ntype InjectedWeb3EthProvider = MetamaskWeb3Provider | OKXWalletWeb3Provider;\n\nclass InjectedWeb3EthProviders {\n #providers: EIP6963ProviderDetail[] = [];\n #providerIdMap: Record = {\n metamask: 'MetaMask',\n okx_wallet: 'OKX Wallet',\n } as const;\n static #instance: InjectedWeb3EthProviders | null = null;\n\n private constructor() {\n if (typeof window === 'undefined') {\n return;\n }\n window.addEventListener('eip6963:announceProvider', this.#onAnnouncement as EventListener);\n window.dispatchEvent(new Event('eip6963:requestProvider'));\n }\n\n public static getInstance(): InjectedWeb3EthProviders {\n if (!InjectedWeb3EthProviders.#instance) {\n InjectedWeb3EthProviders.#instance = new InjectedWeb3EthProviders();\n }\n return InjectedWeb3EthProviders.#instance;\n }\n\n get = (provider: InjectedWeb3EthProvider) => {\n const ethProvider = this.#providers.find(p => p.info.name === this.#providerIdMap[provider])?.provider;\n if (ethProvider !== undefined) {\n return ethProvider;\n }\n\n // In case we weren't able to find the requested provider, fallback to the\n // global injected provider instead, if any, to allow the user to continue\n // the flow rather than blocking it\n // @ts-expect-error missing types\n return window.ethereum;\n };\n\n #onAnnouncement = (event: EIP6963AnnounceProviderEvent) => {\n if (this.#providers.some(p => p.info.uuid === event.detail.info.uuid)) {\n return;\n }\n this.#providers.push(event.detail);\n };\n}\n\nexport const getInjectedWeb3EthProviders = () => InjectedWeb3EthProviders.getInstance();\n"],"mappings":";AA+BA,IAAM,2BAAN,MAAM,yBAAyB;CAC7B,aAAsC,EAAE;CACxC,iBAA0D;EACxD,UAAU;EACV,YAAY;EACb;CACD,QAAOA,WAA6C;CAEpD,AAAQ,cAAc;AACpB,MAAI,OAAO,WAAW,YACpB;AAEF,SAAO,iBAAiB,4BAA4B,MAAKC,eAAiC;AAC1F,SAAO,cAAc,IAAI,MAAM,0BAA0B,CAAC;;CAG5D,OAAc,cAAwC;AACpD,MAAI,CAAC,0BAAyBD,SAC5B,2BAAyBA,WAAY,IAAI,0BAA0B;AAErE,SAAO,0BAAyBA;;CAGlC,OAAO,aAAsC;EAC3C,MAAM,cAAc,MAAKE,UAAW,MAAK,MAAK,EAAE,KAAK,SAAS,MAAKC,cAAe,UAAU,EAAE;AAC9F,MAAI,gBAAgB,OAClB,QAAO;AAOT,SAAO,OAAO;;CAGhB,mBAAmB,UAAwC;AACzD,MAAI,MAAKD,UAAW,MAAK,MAAK,EAAE,KAAK,SAAS,MAAM,OAAO,KAAK,KAAK,CACnE;AAEF,QAAKA,UAAW,KAAK,MAAM,OAAO;;;AAItC,MAAa,oCAAoC,yBAAyB,aAAa"}