@txnlab/use-wallet-walletconnect 5.0.0-rc.2 → 5.0.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # @txnlab/use-wallet-walletconnect
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@txnlab/use-wallet-walletconnect)](https://www.npmjs.com/package/@txnlab/use-wallet-walletconnect)
4
+ [![License](https://img.shields.io/github/license/TxnLab/use-wallet)](https://github.com/TxnLab/use-wallet/blob/main/LICENSE)
5
+
6
+ WalletConnect adapter for [use-wallet](https://github.com/TxnLab/use-wallet), the Algorand wallet integration library.
7
+
8
+ ## Installation
9
+
10
+ ```bash
11
+ npm install @txnlab/use-wallet @txnlab/use-wallet-walletconnect
12
+ ```
13
+
14
+ If you use a framework adapter (`@txnlab/use-wallet-react`, `-vue`, `-solid`, or `-svelte`), install it in place of `@txnlab/use-wallet`.
15
+
16
+ ## Usage
17
+
18
+ ```typescript
19
+ import { WalletManager } from '@txnlab/use-wallet'
20
+ import { walletConnect } from '@txnlab/use-wallet-walletconnect'
21
+
22
+ const manager = new WalletManager({
23
+ wallets: [walletConnect({ projectId: 'your-project-id' })]
24
+ })
25
+ ```
26
+
27
+ Connect any [WalletConnect](https://walletconnect.network/)-compatible Algorand wallet. Requires a `projectId` from [Reown Dashboard](https://dashboard.reown.com). Supports skins for white-labeled instances (e.g. `walletConnect({ projectId, skin: 'biatec' })`). Note: the `metadata` option is WalletConnect's dApp metadata sent to the relay — use a custom `skin` to override display name and icon.
28
+
29
+ ### Visit [txnlab.gitbook.io/use-wallet](https://txnlab.gitbook.io/use-wallet) for docs, guides, and examples!
package/dist/index.d.ts CHANGED
@@ -105,6 +105,12 @@ declare class WalletConnectAdapter extends BaseWallet<WalletConnectOptions> {
105
105
  //#endregion
106
106
  //#region src/index.d.ts
107
107
  declare const WALLET_ID: "walletconnect";
108
+ /**
109
+ * Note: unlike other adapter factories, `walletConnect` does not accept
110
+ * the shared `metadata` factory option. WalletConnect's `metadata` option
111
+ * is the dApp metadata sent to the relay (name, description, url, icons).
112
+ * To customize the wallet's display name and icon, pass a custom `skin`.
113
+ */
108
114
  declare function walletConnect(options: WalletConnectOptions): WalletAdapterConfig;
109
115
  //#endregion
110
116
  export { BUILTIN_SKINS, SessionError, type SignTxnsResponse, WALLET_ID, WalletConnectAdapter, type WalletConnectOptions, type WalletConnectSkin, type WalletConnectSkinOption, getSkin, registerSkin, resolveSkin, walletConnect };
package/dist/index.js CHANGED
@@ -472,6 +472,12 @@ function resolveSkin(skinOption) {
472
472
  //#endregion
473
473
  //#region src/index.ts
474
474
  const WALLET_ID = "walletconnect";
475
+ /**
476
+ * Note: unlike other adapter factories, `walletConnect` does not accept
477
+ * the shared `metadata` factory option. WalletConnect's `metadata` option
478
+ * is the dApp metadata sent to the relay (name, description, url, icons).
479
+ * To customize the wallet's display name and icon, pass a custom `skin`.
480
+ */
475
481
  function walletConnect(options) {
476
482
  const skin = options.skin ? resolveSkin(options.skin) : null;
477
483
  return {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/icon.ts","../src/adapter.ts","../src/skins.ts","../src/index.ts"],"sourcesContent":["export const icon = `\n<svg viewBox=\"0 0 480 480\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"480\" height=\"480\" fill=\"#FFFFFF\" />\n <path fill=\"#3396FF\" d=\"M126.6,168c62.6-61.3,164.2-61.3,226.8,0l7.5,7.4c3.1,3.1,3.1,8,0,11.1l-25.8,25.2c-1.6,1.5-4.1,1.5-5.7,0l-10.4-10.2c-43.7-42.8-114.5-42.8-158.2,0l-11.1,10.9c-1.6,1.5-4.1,1.5-5.7,0l-25.8-25.2c-3.1-3.1-3.1-8,0-11.1L126.6,168zM406.7,220.2l22.9,22.5c3.1,3.1,3.1,8,0,11.1L326.2,355.1c-3.1,3.1-8.2,3.1-11.3,0l-73.4-71.9c-0.8-0.8-2.1-0.8-2.8,0l-73.4,71.9c-3.1,3.1-8.2,3.1-11.3,0L50.3,253.8c-3.1-3.1-3.1-8,0-11.1l22.9-22.5c3.1-3.1,8.2-3.1,11.3,0l73.4,71.9c0.8,0.8,2.1,0.8,2.8,0 l73.4-71.9c3.1-3.1,8.2-3.1,11.3,0l73.4,71.9c0.8,0.8,2.1,0.8,2.8,0l73.4-71.9C398.5,217.1,403.6,217.1,406.7,220.2L406.7,220.2z\" />\n</svg>\n`\n","import algosdk from 'algosdk'\nimport {\n BaseWallet,\n base64ToByteArray,\n byteArrayToBase64,\n compareAccounts,\n flattenTxnGroup,\n formatJsonRpcRequest,\n isSignedTxn,\n isTransactionArray,\n type AdapterConstructorParams,\n type WalletAccount,\n type WalletMetadata,\n type WalletState,\n type WalletTransaction\n} from '@txnlab/use-wallet/adapter'\nimport type { WalletConnectModal, WalletConnectModalConfig } from '@walletconnect/modal'\nimport type SignClient from '@walletconnect/sign-client'\nimport type { SessionTypes, SignClientTypes } from '@walletconnect/types'\nimport type { WalletConnectSkinOption } from './skins'\n\ninterface SignClientOptions {\n projectId: string\n relayUrl?: string\n metadata?: SignClientTypes.Metadata\n}\n\ntype WalletConnectModalOptions = Pick<\n WalletConnectModalConfig,\n | 'enableExplorer'\n | 'explorerRecommendedWalletIds'\n | 'privacyPolicyUrl'\n | 'termsOfServiceUrl'\n | 'themeMode'\n | 'themeVariables'\n>\n\ntype WalletConnectBaseOptions = SignClientOptions & WalletConnectModalOptions\n\nexport interface WalletConnectOptions extends WalletConnectBaseOptions {\n /**\n * Optional skin to apply to this WalletConnect instance.\n * Can be either:\n * - A string ID referencing a built-in skin (e.g., 'biatec')\n * - A full skin object with id, name, and icon\n *\n * When a skin is applied, the wallet will use the skin's metadata\n * and a unique walletKey for state isolation.\n */\n skin?: WalletConnectSkinOption\n}\n\nexport type SignTxnsResponse = Array<Uint8Array | number[] | string | null | undefined>\n\nexport class SessionError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'SessionError'\n }\n}\n\nimport { icon } from './icon'\n\nconst ICON = `data:image/svg+xml;base64,${btoa(icon)}`\n\nexport class WalletConnectAdapter extends BaseWallet<WalletConnectOptions> {\n private client: SignClient | null = null\n private clientOptions: SignClientOptions\n private modal: WalletConnectModal | null = null\n private modalOptions: WalletConnectModalOptions\n private session: SessionTypes.Struct | null = null\n\n constructor(params: AdapterConstructorParams<WalletConnectOptions>) {\n super(params)\n\n if (!this.options?.projectId) {\n this.logger.error('Missing required option: projectId')\n throw new Error('Missing required option: projectId')\n }\n\n const {\n projectId,\n relayUrl = 'wss://relay.walletconnect.com',\n metadata: metadataOptions,\n\n skin: _skinOption, // Extract skin to exclude from modalOptions\n ...modalOptions\n } = this.options\n\n const clientMetadata: SignClientTypes.Metadata = {\n ...this.getWindowMetadata(),\n ...metadataOptions\n }\n\n this.clientOptions = {\n projectId,\n relayUrl,\n metadata: clientMetadata\n }\n\n this.modalOptions = modalOptions\n }\n\n static defaultMetadata: WalletMetadata = {\n name: 'WalletConnect',\n icon: ICON\n }\n\n /**\n * Get metadata from the current window. This is adapted from the @walletconnect/utils\n * implementation, to avoid requiring the entire package as a dependency.\n * @see https://github.com/WalletConnect/walletconnect-utils/blob/master/browser/window-metadata/src/index.ts\n */\n private getWindowMetadata(): SignClientTypes.Metadata {\n let doc: Document\n let loc: Location\n\n const defaultMetadata = {\n name: '',\n description: '',\n url: '',\n icons: []\n }\n\n function getFromWindow<T>(name: string): T | undefined {\n let res: T | undefined\n if (typeof window !== 'undefined' && typeof (window as any)[name] !== 'undefined') {\n res = (window as any)[name]\n }\n return res\n }\n\n function getFromWindowOrThrow<T>(name: string): T {\n const res = getFromWindow<T>(name)\n if (!res) {\n throw new Error(`${name} is not defined in Window`)\n }\n return res\n }\n\n function getDocumentOrThrow(): Document {\n return getFromWindowOrThrow<Document>('document')\n }\n\n function getLocationOrThrow(): Location {\n return getFromWindowOrThrow<Location>('location')\n }\n\n try {\n doc = getDocumentOrThrow()\n loc = getLocationOrThrow()\n } catch (error) {\n this.logger.warn('Error getting window metadata:', error)\n return defaultMetadata\n }\n\n function getIcons(): string[] {\n const links: HTMLCollectionOf<HTMLLinkElement> = doc.getElementsByTagName('link')\n const icons: string[] = []\n\n for (let i = 0; i < links.length; i++) {\n const link: HTMLLinkElement = links[i]\n\n const rel: string | null = link.getAttribute('rel')\n if (rel) {\n if (rel.toLowerCase().indexOf('icon') > -1) {\n const href: string | null = link.getAttribute('href')\n\n if (href) {\n if (\n href.toLowerCase().indexOf('https:') === -1 &&\n href.toLowerCase().indexOf('http:') === -1 &&\n href.indexOf('//') !== 0\n ) {\n let absoluteHref: string = loc.protocol + '//' + loc.host\n\n if (href.indexOf('/') === 0) {\n absoluteHref += href\n } else {\n const path: string[] = loc.pathname.split('/')\n path.pop()\n const finalPath: string = path.join('/')\n absoluteHref += finalPath + '/' + href\n }\n\n icons.push(absoluteHref)\n } else if (href.indexOf('//') === 0) {\n const absoluteUrl: string = loc.protocol + href\n\n icons.push(absoluteUrl)\n } else {\n icons.push(href)\n }\n }\n }\n }\n }\n\n return icons\n }\n\n function getWindowMetadataOfAny(...args: string[]): string {\n const metaTags: HTMLCollectionOf<HTMLMetaElement> = doc.getElementsByTagName('meta')\n\n for (let i = 0; i < metaTags.length; i++) {\n const tag: HTMLMetaElement = metaTags[i]\n const attributes: Array<string | null> = ['itemprop', 'property', 'name']\n .map((target: string) => tag.getAttribute(target))\n .filter((attr: string | null) => {\n if (attr) {\n return args.includes(attr)\n }\n return false\n })\n\n if (attributes.length && attributes) {\n const content: string | null = tag.getAttribute('content')\n if (content) {\n return content\n }\n }\n }\n\n return ''\n }\n\n function getName(): string {\n let name: string = getWindowMetadataOfAny('name', 'og:site_name', 'og:title', 'twitter:title')\n\n if (!name) {\n name = doc.title\n }\n\n return name\n }\n\n function getDescription(): string {\n const description: string = getWindowMetadataOfAny(\n 'description',\n 'og:description',\n 'twitter:description',\n 'keywords'\n )\n\n return description\n }\n\n const name: string = getName()\n const description: string = getDescription()\n const url: string = loc.origin\n const icons: string[] = getIcons()\n\n const meta: SignClientTypes.Metadata = {\n description,\n url,\n icons,\n name\n }\n\n return meta\n }\n\n private async initializeClient(): Promise<SignClient> {\n this.logger.info('Initializing client...')\n const SignClient = (await import('@walletconnect/sign-client')).SignClient\n const client = await SignClient.init(this.clientOptions)\n\n client.on('session_event', (args) => {\n this.logger.info('EVENT: session_event', args)\n })\n\n client.on('session_update', ({ topic, params }) => {\n this.logger.info('EVENT: session_update', { topic, params })\n const { namespaces } = params\n const session = client.session.get(topic)\n const updatedSession = { ...session, namespaces }\n this.onSessionConnected(updatedSession)\n })\n\n client.on('session_delete', () => {\n this.logger.info('EVENT: session_delete')\n this.session = null\n })\n\n this.client = client\n this.logger.info('Client initialized')\n return client\n }\n\n private async initializeModal(): Promise<WalletConnectModal> {\n this.logger.info('Initializing modal...')\n const WalletConnectModal = (await import('@walletconnect/modal')).WalletConnectModal\n const modal = new WalletConnectModal({\n projectId: this.clientOptions.projectId,\n ...this.modalOptions\n })\n\n modal.subscribeModal((state) => this.logger.info(`Modal ${state.open ? 'open' : 'closed'}`))\n\n this.modal = modal\n this.logger.info('Modal initialized')\n return modal\n }\n\n private onSessionConnected(session: SessionTypes.Struct): WalletAccount[] {\n const caipAccounts = session.namespaces.algorand!.accounts\n\n if (!caipAccounts.length) {\n this.logger.error('No accounts found!')\n throw new Error('No accounts found!')\n }\n\n // @todo: Validate format of CAIP-10 accounts\n\n // Filter duplicate accounts (same address, different chain)\n const accounts = [...new Set(caipAccounts.map((account) => account.split(':').pop()!))]\n\n const walletAccounts = accounts.map((address: string, idx: number) => ({\n name: `${this.metadata.name} Account ${idx + 1}`,\n address\n }))\n\n const walletState = this.store.getWalletState()\n\n if (!walletState) {\n const newWalletState: WalletState = {\n accounts: walletAccounts,\n activeAccount: walletAccounts[0]\n }\n\n this.store.addWallet(newWalletState)\n\n this.logger.info('Connected', newWalletState)\n } else {\n const match = compareAccounts(walletAccounts, walletState.accounts)\n\n if (!match) {\n this.logger.warn('Session accounts mismatch, updating accounts', {\n prev: walletState.accounts,\n current: walletAccounts\n })\n this.store.setAccounts(walletAccounts)\n }\n }\n\n this.session = session\n return walletAccounts\n }\n\n public get activeChainId(): string {\n const network = this.activeNetworkConfig\n if (!network?.caipChainId) {\n this.logger.warn(`No CAIP-2 chain ID found for network: ${this.activeNetwork}`)\n return ''\n }\n return network.caipChainId\n }\n\n public connect = async (): Promise<WalletAccount[]> => {\n this.logger.info('Connecting...')\n try {\n const client = this.client || (await this.initializeClient())\n const modal = this.modal || (await this.initializeModal())\n\n const requiredNamespaces = {\n algorand: {\n chains: [this.activeChainId],\n methods: ['algo_signTxn'],\n events: []\n }\n }\n\n const { uri, approval } = await client.connect({ requiredNamespaces })\n\n if (!uri) {\n this.logger.error('No URI found')\n throw new Error('No URI found')\n }\n\n await modal.openModal({ uri })\n\n const session = await approval()\n const walletAccounts = this.onSessionConnected(session)\n\n this.logger.info('Connected successfully')\n return walletAccounts\n } catch (error: any) {\n this.logger.error('Error connecting:', error.message)\n throw error\n } finally {\n this.modal?.closeModal()\n }\n }\n\n public disconnect = async (): Promise<void> => {\n this.logger.info('Disconnecting...')\n try {\n this.onDisconnect()\n if (this.client && this.session) {\n await this.client.disconnect({\n topic: this.session.topic,\n reason: {\n message: 'User disconnected.',\n code: 6000\n }\n })\n }\n this.logger.info('Disconnected')\n } catch (error: any) {\n this.logger.error('Error disconnecting:', error.message)\n throw error\n }\n }\n\n public resumeSession = async (): Promise<void> => {\n try {\n const walletState = this.store.getWalletState()\n\n // No session to resume\n if (!walletState) {\n this.logger.info('No session to resume')\n return\n }\n\n this.logger.info('Resuming session...')\n\n const client = this.client || (await this.initializeClient())\n\n if (client.session.length) {\n const lastKeyIndex = client.session.keys.length - 1\n const restoredSession = client.session.get(client.session.keys[lastKeyIndex])\n this.onSessionConnected(restoredSession)\n }\n this.logger.info('Session resumed successfully')\n } catch (error: any) {\n this.logger.error('Error resuming session:', error.message)\n this.onDisconnect()\n throw error\n }\n }\n\n private processTxns(\n txnGroup: algosdk.Transaction[],\n indexesToSign?: number[]\n ): WalletTransaction[] {\n const txnsToSign: WalletTransaction[] = []\n\n txnGroup.forEach((txn, index) => {\n const isIndexMatch = !indexesToSign || indexesToSign.includes(index)\n const signer = txn.sender.toString()\n const canSignTxn = this.addresses.includes(signer)\n\n const txnString = byteArrayToBase64(txn.toByte())\n\n if (isIndexMatch && canSignTxn) {\n txnsToSign.push({ txn: txnString })\n } else {\n txnsToSign.push({ txn: txnString, signers: [] })\n }\n })\n\n return txnsToSign\n }\n\n private processEncodedTxns(\n txnGroup: Uint8Array[],\n indexesToSign?: number[]\n ): WalletTransaction[] {\n const txnsToSign: WalletTransaction[] = []\n\n txnGroup.forEach((txnBuffer, index) => {\n const decodedObj = algosdk.msgpackRawDecode(txnBuffer)\n const isSigned = isSignedTxn(decodedObj)\n\n const txn: algosdk.Transaction = isSigned\n ? algosdk.decodeSignedTransaction(txnBuffer).txn\n : algosdk.decodeUnsignedTransaction(txnBuffer)\n\n const isIndexMatch = !indexesToSign || indexesToSign.includes(index)\n const signer = txn.sender.toString()\n const canSignTxn = !isSigned && this.addresses.includes(signer)\n\n const txnString = byteArrayToBase64(txn.toByte())\n\n if (isIndexMatch && canSignTxn) {\n txnsToSign.push({ txn: txnString })\n } else {\n txnsToSign.push({ txn: txnString, signers: [] })\n }\n })\n\n return txnsToSign\n }\n\n public signTransactions = async <T extends algosdk.Transaction[] | Uint8Array[]>(\n txnGroup: T | T[],\n indexesToSign?: number[]\n ): Promise<(Uint8Array | null)[]> => {\n try {\n if (!this.session) {\n this.logger.error('No session found!')\n throw new SessionError('No session found!')\n }\n\n this.logger.debug('Signing transactions...', { txnGroup, indexesToSign })\n\n let txnsToSign: WalletTransaction[] = []\n\n // Determine type and process transactions for signing\n if (isTransactionArray(txnGroup)) {\n const flatTxns: algosdk.Transaction[] = flattenTxnGroup(txnGroup)\n txnsToSign = this.processTxns(flatTxns, indexesToSign)\n } else {\n const flatTxns: Uint8Array[] = flattenTxnGroup(txnGroup as Uint8Array[])\n txnsToSign = this.processEncodedTxns(flatTxns, indexesToSign)\n }\n\n const client = this.client || (await this.initializeClient())\n\n this.logger.debug('Sending processed transactions to wallet...', [txnsToSign])\n\n // Format JSON-RPC request\n const request = formatJsonRpcRequest('algo_signTxn', [txnsToSign])\n\n // Sign transactions\n const signTxnsResult = await client.request<SignTxnsResponse>({\n chainId: this.activeChainId,\n topic: this.session.topic,\n request\n })\n\n this.logger.debug('Received signed transactions from wallet', signTxnsResult)\n\n // Filter out unsigned transactions, convert signed transactions to Uint8Array\n const signedTxns = signTxnsResult.reduce<Uint8Array[]>((acc, value) => {\n if (value) {\n let signedTxn: Uint8Array\n if (typeof value === 'string') {\n signedTxn = base64ToByteArray(value)\n } else if (value instanceof Uint8Array) {\n signedTxn = value\n } else if (Array.isArray(value)) {\n signedTxn = new Uint8Array(value)\n } else {\n // Log unexpected types for debugging\n this.logger.warn('Unexpected type in signTxnsResult', value)\n signedTxn = new Uint8Array()\n }\n acc.push(signedTxn)\n }\n return acc\n }, [])\n\n // ARC-0001 - Return null for unsigned transactions\n const result = txnsToSign.reduce<(Uint8Array | null)[]>((acc, txn) => {\n if (txn.signers && txn.signers.length == 0) {\n acc.push(null)\n } else {\n const signedTxn = signedTxns.shift()\n if (signedTxn) {\n acc.push(signedTxn)\n }\n }\n return acc\n }, [])\n\n this.logger.debug('Transactions signed successfully', result)\n return result\n } catch (error: any) {\n this.logger.error('Error signing transactions:', error.message)\n throw error\n }\n }\n}\n","// ---------- Skin Types ---------- //\n\nexport interface WalletConnectSkin {\n id: string\n name: string\n icon: string\n}\n\nexport type WalletConnectSkinOption = string | WalletConnectSkin\n\n// ---------- Built-in Skin Icons ---------- //\n\nconst VOI_WALLET_ICON = `data:image/svg+xml;base64,${btoa(`\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"322\" height=\"322\">\n <path fill=\"#32B1E8\" d=\"M131 19a42 42 0 0 1 15 8c18 12 36 26 50 43l2 3c26 29 41 64 47 102v2l1 20h-49v10l-42 4a70897 70897 0 0 0-78 7h-3l-18 1a804 804 0 0 0 55-186c16 8 29 33 39 48l-2-16-1-3c-3-14-9-27-15-40l-1-3Z\"/>\n <path fill=\"#1F3AB7\" d=\"M111 33c13 6 23 25 32 37l1 2 4 6 1 2c6 8 4 20 4 30v3c0 32-11 62-26 89h2c23-3 45-4 68-4v9l-42 4a70897 70897 0 0 0-78 7h-3l-18 1a804 804 0 0 0 55-186Z\"/>\n <path fill=\"#3C4856\" d=\"M267 214a2941 2941 0 0 0-12 14l-2 1-10 10-5 4-2 2a8522 8522 0 0 1-21 20c-6 7-11 9-20 10-7 0-12-1-17-6l-8-7-5-6a120 120 0 0 1-8-7l-2-2-4-1-10 7a4157 4157 0 0 1-15 14l-1 1c-5 5-9 6-16 6h-3a397 397 0 0 1-15 0c-14 0-14 0-19-3l-4-7a322 322 0 0 0-8-12l-2-3-8-15 65-7 15-1a47903 47903 0 0 1 122-11l2-1h13Z\"/>\n <path fill=\"#1B87DF\" d=\"M152 86v2l1 2 3 1 3 5 2 4 2 3 2 4c11 21 11 21 14 30l2 4v2l3 7 6 18 5 19 2 9h44v1h-3l-64 2h-3a526 526 0 0 0-44 3l4-9a190 190 0 0 0 21-94V86Z\"/>\n <path fill=\"#1A279D\" d=\"M139 71c5 1 5 1 7 4l2 3 2 3c5 9 3 20 3 29v3c0 32-11 62-26 89h2c23-3 45-4 68-4v9a798 798 0 0 1-92 7l2-2 1-5 5-9c8-16 14-32 19-49l2-8 2-14 1-1c3-18 2-37 2-55Z\"/>\n <path fill=\"#3D4856\" d=\"M151 261c4 1 6 3 8 5l3 3 3 5-4 1-1 19h-18v-20h-7l5-5 2-2 3-2 2-3 4-1Z\"/>\n <path fill=\"#2EB4EB\" d=\"m254 65 4 6c4 6 8 9 14 12v2l-2 1c-7 4-11 9-15 16l-5-7c-3-6-9-8-15-10l7-5c6-4 9-9 12-15Z\"/>\n <path fill=\"#2021AB\" d=\"M162 206h4c10 0 10 0 15 2v1a11602 11602 0 0 1-44 4h-4l-23 1v-1h9l1-3 8-1 3-1h9l2-1 5-1h15Z\"/>\n <path fill=\"#31B8EF\" d=\"M280 50c3 1 3 1 5 4s4 5 8 7l-5 5-6 7-5-5-7-6 6-5 4-7Z\"/>\n <path fill=\"#2DC1F2\" d=\"m255 35 8 9-6 7c-5-1-6-3-9-6l7-10Z\"/>\n <path fill=\"#2F3A48\" d=\"M157 266c3 1 6 3 8 6v2l-4 1-1 19h-18v-18h1v7l1 4 1 4h7l7 1v-12l-1-3v-7l-1-4Z\"/>\n <path fill=\"#233143\" d=\"M157 266c3 1 6 3 8 6v2l-4 1-1 19h-1v-13l-1-4v-6l-1-5Z\"/>\n <path fill=\"#2A2DB3\" d=\"m179 207 2 2-9 1h-7l-4-2c4-4 13-2 18-1Z\"/>\n <path fill=\"#3864CC\" d=\"m104 69 2 6-1 2v3l-1 2-1 2-1 6-2 1 4-22Z\"/>\n <path fill=\"#1F2DAB\" d=\"m77 166 3 1-1 8-5 1c1-4 1-7 3-10Z\"/>\n <path fill=\"#2651C8\" d=\"M98 95c3 3 3 3 3 6v2l-3 1v2h-2l2-11Z\"/>\n <path fill=\"#383F59\" d=\"m267 214-3 5-1-3-9 1 1-2 12-1Z\"/>\n <path fill=\"#184FCF\" d=\"m111 33 4 2-1 2c-2 3-3 5-3 9l-2-1 2-12Z\"/>\n <path fill=\"#1D25A8\" d=\"M71 182h1v8l-4 2c1-7 1-7 3-10Z\"/>\n <path fill=\"#31BBF6\" d=\"m254 65 4 8-3-1-1-2-1 2h-2l3-7Z\"/>\n <path fill=\"#1E78DC\" d=\"m142 168 2 3-2 5-1 2-3 3 1-5 1-3 2-5Z\"/>\n <path fill=\"#42CDF8\" d=\"m255 35 4 4h-2l-7 3 5-7Z\"/>\n <path fill=\"#25B4EC\" d=\"M148 59h4l-2 8c-2-2-2-2-2-5v-3Z\"/>\n <path fill=\"#2024AA\" d=\"m63 200 2 2-1 4-3 2 2-8Z\"/>\n <path fill=\"#32BEFA\" d=\"m280 50 3 1-1 4-3 1 1-6Z\"/>\n</svg>\n`)}`\n\nconst BIATEC_ICON = `data:image/svg+xml;base64,${btoa(`\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 200 180\"><path d=\"M94.27 151.629c-.861-.526-1.51-1.37-1.83-2.386-.197-.62-.18-.627 1.082-.437.705.105 1.6.356 1.988.557.696.36 1.815 1.876 1.815 2.459 0 .486-2.166.348-3.054-.193m23.953-.263c-.788-.419-2.095-2.123-2.108-2.75-.01-.433 2.467-.182 3.403.345.955.536 2.148 1.97 2.148 2.582 0 .503-2.397.38-3.443-.177m-9.024-1.165c-1.567-1.193-2.38-2.74-2.55-4.849-.075-.933-.054-1.697.045-1.697.866 0 2.714 1.67 3.439 3.107.398.789.657 3.888.351 4.195-.07.07-.648-.27-1.285-.756m-8.906-1.354c-.63-.684-1.21-1.648-1.387-2.305-.318-1.18-.136-3.416.278-3.416.555 0 2.108 1.697 2.505 2.737.472 1.237.457 3.905-.023 4.063-.16.053-.777-.433-1.373-1.08m-6.805-1.775c-2.764-.612-5.223-1.425-5.357-1.772-.08-.21.169-1.027.555-1.814s.701-1.469.701-1.515c0-.047-.803.067-1.786.253-.982.185-1.857.256-1.944.157-.088-.1-.365-.715-.618-1.367-.252-.652-.858-1.729-1.345-2.393-1.293-1.76-5.285-5.526-7.272-6.858-3.826-2.564-4.96-3.855-4.667-5.316.08-.402.692-1.574 1.359-2.606 1.65-2.551 2.51-4.472 2.512-5.62.002-.571-.364-1.69-.901-2.758l-.905-1.796.706-.532c1.936-1.46 4.649-4.916 4.205-5.36-.06-.06-.846.72-1.745 1.732-3.553 3.997-7.814 6.463-16.014 9.27-5.324 1.823-5.853 2.06-7.183 3.228-1.555 1.365-1.962 2.502-2.531 7.063-.284 2.275-.706 4.79-.937 5.591-.231.8-.403 2.17-.382 3.043.032 1.346-.157 2.06-1.248 4.698-1.498 3.622-1.068 3.708-4.138-.827l-2.036-3.008.747-.784c.411-.43 1.075-.978 1.475-1.216.955-.568.919-.922-.236-2.331-.53-.647-.917-1.209-.86-1.25s.43-.277.83-.526c1.788-1.12 2.7-4.727 2.987-11.822.214-5.274.595-6.46 2.195-6.83 6.634-1.535 7.58-1.98 8.618-4.066.926-1.858.9-3.701-.121-8.475-.87-4.072-1.047-7.21-.516-9.223.606-2.303 3.759-7.433 5.667-9.221.376-.353.684-.729.684-.835 0-.254-3.325-2.697-4.448-3.268-.482-.245-1.455-.45-2.163-.456-3.892-.03-6.628 1.877-8.722 6.08-.603 1.212-1.582 2.73-2.176 3.374-2.733 2.965-8.602 4.09-12.666 2.43l-.913-.374 1.323-.05c1.422-.054 3.498-.94 3.944-1.683.414-.69.076-.79-1.06-.314-1.443.605-4.075.597-5.039-.015-1.259-.8-2.23-1.81-2.795-2.908l-.535-1.042 1.243 1.095c1.51 1.328 2.691 1.752 4.425 1.585 1.506-.145 2.523-.851 1.65-1.147-3.195-1.08-5.834-3.078-7.07-5.35-.809-1.485-1.513-3.982-1.504-5.334l.006-.936.42.854c.232.47.941 1.333 1.576 1.918l1.155 1.064 2.189-.012 2.188-.011-1.012-.535c-.975-.514-3.353-2.766-3.353-3.175 0-.11.506.079 1.124.418 1.282.703 3.888 1.32 4.21.996.12-.118-.204-.612-.718-1.097-.513-.484-1.17-1.344-1.46-1.911l-.525-1.03 1.174.895c2.02 1.542 3.883 1.506 6.342-.123.69-.457 1.218-.863 1.175-.903s-.989.227-2.103.594c-1.87.618-2.11.64-3.151.305-1.284-.415-2.023-1.273-2.25-2.613l-.158-.926.486.595c1.07 1.31 2.652 1.255 6.363-.224 1.132-.451 2.892-1.036 3.91-1.3 2.732-.706 1.561-.926-2.298-.43-1.778.228-3.27.376-3.318.329-.047-.047.662-.415 1.575-.818 2.002-.883 4.78-1.152 6.858-.663 1.817.427 2.555.81 4.032 2.087 1.151.997 3.654 2.156 4.605 2.133.595-.015-2.96-3.395-4.552-4.328-1.639-.96-4.11-1.542-6.107-1.438-.92.049-1.627.016-1.571-.073.242-.388 3.44-.825 5.203-.71 4.048.265 6.96 2.546 10.902 8.537 2.553 3.883 4.234 5.67 6.137 6.524l1.092.49 2.215-1.027c4.747-2.2 8.797-2.518 16.097-1.26 2.25.387 4.717.704 5.482.704h1.39l.074 3.203.074 3.203.894-1.113c.88-1.096.894-1.152.846-3.516l-.049-2.402-1.61-1.721c-4.14-4.425-4.335-6.536-1.135-12.213 2.744-4.87 2.704-4.41.813-9.32-.883-2.292-1.696-4.167-1.807-4.167-.339 0-.205 4 .196 5.821.716 3.256.435 4.822-1.006 5.603-.371.2-2.144.33-4.904.36-3.6.036-4.348-.022-4.473-.348-.087-.227.102-.582.451-.845.53-.4.563-.53.274-1.09-.18-.35-.692-1.022-1.137-1.493s-.734-.933-.64-1.026c.093-.094 1.072-.036 2.175.128 3.023.45 3.76.398 4.211-.297.4-.615 2.887-9.725 2.704-9.907-.196-.196-1.55 1.62-2.759 3.7-1.782 3.068-3.14 3.895-6.379 3.889-2.485-.005-5.43-1.098-8.658-3.213-1.439-.943-3.02-1.855-3.514-2.027-1.524-.531-3.75-.392-5.163.324l-1.26.638.567-.603c.892-.95 3.048-2.004 4.432-2.167 1.94-.23 3.3.283 5.786 2.18 2.39 1.823 3.163 2.225 4.28 2.225.6 0 .497-.12-.745-.872-.792-.48-2.416-1.598-3.609-2.486-2.658-1.978-4.119-2.58-5.831-2.4l-1.26.132.926-.39c.667-.281 1.609-.36 3.373-.284 1.346.059 2.448.077 2.448.04 0-.278-2.537-1.455-3.71-1.722-.89-.202-1.231-.365-.884-.421.312-.051 1.86.225 3.44.614 2.564.63 3.167.687 5.602.525 5.536-.369 7.032-1.144 9.218-4.774l1.433-2.382-1.224 1.323c-.673.728-1.779 1.928-2.457 2.666-.677.739-1.53 1.417-1.893 1.508l-.662.165.61-.503c.334-.277 1.088-1.491 1.675-2.698 1.772-3.648 3.228-4.779 6.772-5.257 3.522-.476 4.797-.791 5.421-1.342.332-.293.429-.44.215-.329-.213.112-1.94.277-3.836.367-2.955.14-3.666.263-4.97.86-1.632.749-4.092 2.893-4.996 4.356-.764 1.236-.923.905-.224-.465 1.387-2.718 4.685-4.945 8.366-5.651l1.815-.349-1.058-.235c-.582-.13-1.952-.224-3.043-.209l-1.984.027 1.72-.82c1.427-.682 2.04-.822 3.611-.822 1.607 0 1.86-.06 1.679-.4-.539-1.005-1.377-1.452-2.69-1.432-.769.011-1.156-.067-.937-.19.534-.298 2.168-.34 4.169-.104 1.648.194 1.82.159 3.59-.733 1.023-.515 2.472-1.047 3.22-1.183 1.388-.253 3.607-.04 4.472.429.942.51 1.958 1.825 2.095 2.712.116.746 0 1.052-.671 1.777-.752.813-.811 1.018-.811 2.82 0 1.706-.105 2.127-.85 3.424-.467.814-.973 1.476-1.124 1.473s-.797-.242-1.435-.532c-1.277-.579-1.714-.435-1.988.655-.115.46.045.84.605 1.44.42.448 1.621 2.237 2.671 3.975 1.883 3.116 1.905 3.175 1.585 4.146-.258.78-.258 1.56 0 3.73.179 1.51.253 3.031.166 3.38-.128.509.033.795.805 1.432 1.367 1.126 5.02 2.947 5.914 2.947 1.268 0 1.588.247 1.588 1.227 0 1.057-.642 2.742-1.045 2.742-.153 0-.278-.298-.278-.662 0-.558-.123-.661-.793-.661-.436 0-2.162-.467-3.836-1.036l-3.044-1.036v1.788c0 .984-.077 3.057-.172 4.608l-.173 2.82h3.015l-.133.86c-.073.472-.206 2.11-.295 3.637-.373 6.42-.634 7.203-4.207 12.65-4.119 6.278-4.635 7.984-3.493 11.548.37 1.158.647 2.133.613 2.167-.246.246-2.569-1.19-3.783-2.34-2.616-2.473-2.922-3.975-1.146-5.619.954-.882 1.054-1.087.892-1.828-.417-1.91-.553-1.976-1-.482-.232.777-.693 1.849-1.024 2.382-.526.846-.603 1.318-.603 3.705v2.736l3.175 1.022c1.746.562 3.446 1.028 3.777 1.034.583.012.59-.012.194-.776-.224-.434-.479-1.307-.566-1.939-.208-1.523.53-3.065 3.905-8.159 4.537-6.845 5.478-9.25 5.681-14.513.07-1.82.19-3.93.267-4.692.137-1.353.17-1.398 1.379-1.933 2.27-1.004 4.245-3.717 6.253-8.589.526-1.274.459-1.204-1.891 1.985-1.019 1.382-2.13 2.751-2.47 3.042-.604.516-.603.506.048-.397.938-1.299 1.216-2.144 1.685-5.107.663-4.193 1.699-6.255 4.604-9.16 3.639-3.638 9.47-6.348 13.7-6.365.635-.003 1.201-.155 1.322-.356.117-.192 1.105-.92 2.196-1.615 1.092-.696 2.252-1.511 2.579-1.812.327-.3.66-.48.74-.4.081.081-.038.942-.263 1.914s-.41 1.88-.41 2.016c0 .37 1.393.3 1.992-.102.287-.192 1.296-.62 2.241-.953s1.998-.78 2.338-.994c.34-.215.665-.345.722-.288.302.302-1.982 3.526-2.927 4.132l-1.152.74c-.277.179 1.202 3.732 1.975 4.745.674.882.862 1.347.742 1.825-.089.354.045 1.273.296 2.044.645 1.98 2.913 6.751 3.698 7.779.808 1.06.82 1.416.075 2.363-.32.408-.648 1.225-.728 1.816-.118.879-.279 1.12-.89 1.335-1.457.512-2.298-.449-2.94-3.358-.113-.512-.325-.728-.715-.728-.634 0-.619.099.398 2.514.368.873.572 1.685.453 1.804-.12.119-.679.178-1.244.132-1.006-.082-1.03-.108-1.165-1.29-.11-.958-.407-1.515-1.444-2.716-1.28-1.483-1.523-1.617-3.974-2.186-.436-.102-1.235-.406-1.776-.677l-.981-.491-.311 1.124c-.462 1.668-.381 7.592.14 10.35.244 1.29.926 3.552 1.516 5.027 1.864 4.655 1.933 4.98 1.924 9.031-.006 2.853-.112 3.972-.461 4.87-.25.641-.415 1.204-.367 1.252.047.047 2.935.203 6.419.347 4.2.174 6.786.397 7.679.664 1.433.429 2.955 1.341 3.328 1.995.125.219 1.292 3.718 2.594 7.777 2.56 7.978 2.515 7.613 1.142 9.263-.582.7-.623.918-.458 2.455l.18 1.686-1.685 1.59c-2.476 2.335-2.487 2.338-2.833.702l-.825-3.894c-.497-2.344-.503-2.535-.09-2.844.245-.182.75-.332 1.121-.335 1.259-.007 1.444-.36.672-1.277l-.7-.833.461-1.209c.403-1.054.421-1.428.146-2.924-.856-4.647-3.463-7.755-6.516-7.769-1.198-.006-5.626.726-6.143 1.015-.419.235 1.36 2.035 4.026 4.073 1.954 1.494 2.487 2.265 2.708 3.918.115.858-.031 1.278-.963 2.753-1.122 1.776-2.596 4.941-4.015 8.62-.437 1.133-1.048 2.383-1.358 2.777-.546.695-.623.712-2.434.544-1.51-.14-2.034-.085-2.726.287-.933.503-1.032.488-5.234-.754l-1.852-.547 1.058-.93c2.452-2.155 4.96-4.035 5.375-4.028.245.004.743.417 1.107.919.364.5.74.914.835.918.336.014 2.673-2.777 3.423-4.09.928-1.622 1.429-3.721 1.19-4.992-.414-2.208-2.105-3.2-8.836-5.183-4.604-1.356-5.44-1.637-6.837-2.3-.81-.384-.92-.36-3.047.664-2.593 1.248-5.507 2.251-8.665 2.983-3.304.766-9.686.95-12.988.376-3.227-.562-7.639-2.035-9.626-3.214-.856-.508-1.618-.862-1.693-.787-.15.15 1.12 2.079 1.665 2.53.271.226.239.732-.166 2.586-1.245 5.713-2.66 8.612-7.189 14.73-2.852 3.852-3.402 5.685-2.327 7.762.66 1.274 9.278 9.763 11.016 10.85.797.498 1.576 1.26 1.929 1.889.496.883 2.158 5.275 2.158 5.704 0 .2-1.577.111-2.779-.154\" style=\"fill:teal;stroke-width:.264583\"></path></svg>\n`)}`\n\n// ---------- Built-in Skins Registry ---------- //\n\n/**\n * Built-in skins that ship with the WalletConnect adapter.\n * PRs to add new WalletConnect-compatible wallets should add entries here.\n */\nexport const BUILTIN_SKINS: Record<string, WalletConnectSkin> = {\n biatec: {\n id: 'biatec',\n name: 'Biatec Wallet',\n icon: BIATEC_ICON\n },\n voiwallet: {\n id: 'voiwallet',\n name: 'Voi Wallet',\n icon: VOI_WALLET_ICON\n }\n}\n\n// ---------- Custom Skins Registry (Runtime) ---------- //\n\n/**\n * Runtime registry for custom skins added by developers.\n * Use `registerSkin()` to add custom skins.\n */\nconst customSkins = new Map<string, WalletConnectSkin>()\n\n/**\n * Register a custom WalletConnect skin at runtime.\n * This allows developers to add their own wallet skins without PRing the library.\n *\n * @param skin - The skin definition to register\n * @throws Error if attempting to override a built-in skin\n *\n * @example\n * ```typescript\n * import { registerSkin } from '@txnlab/use-wallet-walletconnect'\n *\n * registerSkin({\n * id: 'mywallet',\n * name: 'My Custom Wallet',\n * icon: 'data:image/svg+xml;base64,...'\n * })\n * ```\n */\nexport function registerSkin(skin: WalletConnectSkin): void {\n if (BUILTIN_SKINS[skin.id]) {\n throw new Error(`Cannot override built-in skin: ${skin.id}`)\n }\n customSkins.set(skin.id, skin)\n}\n\n/**\n * Get a skin by its ID from either built-in or custom registries.\n *\n * @param skinId - The skin identifier\n * @returns The skin definition, or undefined if not found\n */\nexport function getSkin(skinId: string): WalletConnectSkin | undefined {\n return BUILTIN_SKINS[skinId] || customSkins.get(skinId)\n}\n\n/**\n * Resolve a skin option to a full WalletConnectSkin object.\n *\n * If the option is a string, looks up the skin in the registries.\n * If the option is a full skin object, registers it as a custom skin and returns it.\n *\n * @param skinOption - Either a skin ID string or a full skin definition\n * @returns The resolved skin, or undefined if not found (when string ID provided)\n */\nexport function resolveSkin(skinOption: WalletConnectSkinOption): WalletConnectSkin | undefined {\n if (typeof skinOption === 'string') {\n return getSkin(skinOption)\n }\n\n // If it's a full skin definition, register it as a custom skin\n if (!BUILTIN_SKINS[skinOption.id]) {\n customSkins.set(skinOption.id, skinOption)\n }\n return skinOption\n}\n","import { WalletConnectAdapter } from './adapter'\nimport { resolveSkin } from './skins'\nimport type { WalletConnectOptions } from './adapter'\nimport type { WalletAdapterConfig } from '@txnlab/use-wallet'\n\nexport const WALLET_ID = 'walletconnect' as const\n\nexport function walletConnect(options: WalletConnectOptions): WalletAdapterConfig {\n const skin = options.skin ? resolveSkin(options.skin) : null\n const id = skin ? `walletconnect:${skin.id}` : WALLET_ID\n const metadata = skin\n ? { name: skin.name, icon: skin.icon }\n : WalletConnectAdapter.defaultMetadata\n\n return {\n id,\n metadata,\n Adapter: WalletConnectAdapter as unknown as WalletAdapterConfig['Adapter'],\n options: options as unknown as Record<string, unknown> | undefined\n }\n}\n\nexport { WalletConnectAdapter }\nexport { SessionError } from './adapter'\nexport type { WalletConnectOptions, SignTxnsResponse } from './adapter'\n\n// Skins utilities and types\nexport { registerSkin, getSkin, resolveSkin, BUILTIN_SKINS } from './skins'\nexport type { WalletConnectSkin, WalletConnectSkinOption } from './skins'\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/icon.ts","../src/adapter.ts","../src/skins.ts","../src/index.ts"],"sourcesContent":["export const icon = `\n<svg viewBox=\"0 0 480 480\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"480\" height=\"480\" fill=\"#FFFFFF\" />\n <path fill=\"#3396FF\" d=\"M126.6,168c62.6-61.3,164.2-61.3,226.8,0l7.5,7.4c3.1,3.1,3.1,8,0,11.1l-25.8,25.2c-1.6,1.5-4.1,1.5-5.7,0l-10.4-10.2c-43.7-42.8-114.5-42.8-158.2,0l-11.1,10.9c-1.6,1.5-4.1,1.5-5.7,0l-25.8-25.2c-3.1-3.1-3.1-8,0-11.1L126.6,168zM406.7,220.2l22.9,22.5c3.1,3.1,3.1,8,0,11.1L326.2,355.1c-3.1,3.1-8.2,3.1-11.3,0l-73.4-71.9c-0.8-0.8-2.1-0.8-2.8,0l-73.4,71.9c-3.1,3.1-8.2,3.1-11.3,0L50.3,253.8c-3.1-3.1-3.1-8,0-11.1l22.9-22.5c3.1-3.1,8.2-3.1,11.3,0l73.4,71.9c0.8,0.8,2.1,0.8,2.8,0 l73.4-71.9c3.1-3.1,8.2-3.1,11.3,0l73.4,71.9c0.8,0.8,2.1,0.8,2.8,0l73.4-71.9C398.5,217.1,403.6,217.1,406.7,220.2L406.7,220.2z\" />\n</svg>\n`\n","import algosdk from 'algosdk'\nimport {\n BaseWallet,\n base64ToByteArray,\n byteArrayToBase64,\n compareAccounts,\n flattenTxnGroup,\n formatJsonRpcRequest,\n isSignedTxn,\n isTransactionArray,\n type AdapterConstructorParams,\n type WalletAccount,\n type WalletMetadata,\n type WalletState,\n type WalletTransaction\n} from '@txnlab/use-wallet/adapter'\nimport type { WalletConnectModal, WalletConnectModalConfig } from '@walletconnect/modal'\nimport type SignClient from '@walletconnect/sign-client'\nimport type { SessionTypes, SignClientTypes } from '@walletconnect/types'\nimport type { WalletConnectSkinOption } from './skins'\n\ninterface SignClientOptions {\n projectId: string\n relayUrl?: string\n metadata?: SignClientTypes.Metadata\n}\n\ntype WalletConnectModalOptions = Pick<\n WalletConnectModalConfig,\n | 'enableExplorer'\n | 'explorerRecommendedWalletIds'\n | 'privacyPolicyUrl'\n | 'termsOfServiceUrl'\n | 'themeMode'\n | 'themeVariables'\n>\n\ntype WalletConnectBaseOptions = SignClientOptions & WalletConnectModalOptions\n\nexport interface WalletConnectOptions extends WalletConnectBaseOptions {\n /**\n * Optional skin to apply to this WalletConnect instance.\n * Can be either:\n * - A string ID referencing a built-in skin (e.g., 'biatec')\n * - A full skin object with id, name, and icon\n *\n * When a skin is applied, the wallet will use the skin's metadata\n * and a unique walletKey for state isolation.\n */\n skin?: WalletConnectSkinOption\n}\n\nexport type SignTxnsResponse = Array<Uint8Array | number[] | string | null | undefined>\n\nexport class SessionError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'SessionError'\n }\n}\n\nimport { icon } from './icon'\n\nconst ICON = `data:image/svg+xml;base64,${btoa(icon)}`\n\nexport class WalletConnectAdapter extends BaseWallet<WalletConnectOptions> {\n private client: SignClient | null = null\n private clientOptions: SignClientOptions\n private modal: WalletConnectModal | null = null\n private modalOptions: WalletConnectModalOptions\n private session: SessionTypes.Struct | null = null\n\n constructor(params: AdapterConstructorParams<WalletConnectOptions>) {\n super(params)\n\n if (!this.options?.projectId) {\n this.logger.error('Missing required option: projectId')\n throw new Error('Missing required option: projectId')\n }\n\n const {\n projectId,\n relayUrl = 'wss://relay.walletconnect.com',\n metadata: metadataOptions,\n\n skin: _skinOption, // Extract skin to exclude from modalOptions\n ...modalOptions\n } = this.options\n\n const clientMetadata: SignClientTypes.Metadata = {\n ...this.getWindowMetadata(),\n ...metadataOptions\n }\n\n this.clientOptions = {\n projectId,\n relayUrl,\n metadata: clientMetadata\n }\n\n this.modalOptions = modalOptions\n }\n\n static defaultMetadata: WalletMetadata = {\n name: 'WalletConnect',\n icon: ICON\n }\n\n /**\n * Get metadata from the current window. This is adapted from the @walletconnect/utils\n * implementation, to avoid requiring the entire package as a dependency.\n * @see https://github.com/WalletConnect/walletconnect-utils/blob/master/browser/window-metadata/src/index.ts\n */\n private getWindowMetadata(): SignClientTypes.Metadata {\n let doc: Document\n let loc: Location\n\n const defaultMetadata = {\n name: '',\n description: '',\n url: '',\n icons: []\n }\n\n function getFromWindow<T>(name: string): T | undefined {\n let res: T | undefined\n if (typeof window !== 'undefined' && typeof (window as any)[name] !== 'undefined') {\n res = (window as any)[name]\n }\n return res\n }\n\n function getFromWindowOrThrow<T>(name: string): T {\n const res = getFromWindow<T>(name)\n if (!res) {\n throw new Error(`${name} is not defined in Window`)\n }\n return res\n }\n\n function getDocumentOrThrow(): Document {\n return getFromWindowOrThrow<Document>('document')\n }\n\n function getLocationOrThrow(): Location {\n return getFromWindowOrThrow<Location>('location')\n }\n\n try {\n doc = getDocumentOrThrow()\n loc = getLocationOrThrow()\n } catch (error) {\n this.logger.warn('Error getting window metadata:', error)\n return defaultMetadata\n }\n\n function getIcons(): string[] {\n const links: HTMLCollectionOf<HTMLLinkElement> = doc.getElementsByTagName('link')\n const icons: string[] = []\n\n for (let i = 0; i < links.length; i++) {\n const link: HTMLLinkElement = links[i]\n\n const rel: string | null = link.getAttribute('rel')\n if (rel) {\n if (rel.toLowerCase().indexOf('icon') > -1) {\n const href: string | null = link.getAttribute('href')\n\n if (href) {\n if (\n href.toLowerCase().indexOf('https:') === -1 &&\n href.toLowerCase().indexOf('http:') === -1 &&\n href.indexOf('//') !== 0\n ) {\n let absoluteHref: string = loc.protocol + '//' + loc.host\n\n if (href.indexOf('/') === 0) {\n absoluteHref += href\n } else {\n const path: string[] = loc.pathname.split('/')\n path.pop()\n const finalPath: string = path.join('/')\n absoluteHref += finalPath + '/' + href\n }\n\n icons.push(absoluteHref)\n } else if (href.indexOf('//') === 0) {\n const absoluteUrl: string = loc.protocol + href\n\n icons.push(absoluteUrl)\n } else {\n icons.push(href)\n }\n }\n }\n }\n }\n\n return icons\n }\n\n function getWindowMetadataOfAny(...args: string[]): string {\n const metaTags: HTMLCollectionOf<HTMLMetaElement> = doc.getElementsByTagName('meta')\n\n for (let i = 0; i < metaTags.length; i++) {\n const tag: HTMLMetaElement = metaTags[i]\n const attributes: Array<string | null> = ['itemprop', 'property', 'name']\n .map((target: string) => tag.getAttribute(target))\n .filter((attr: string | null) => {\n if (attr) {\n return args.includes(attr)\n }\n return false\n })\n\n if (attributes.length && attributes) {\n const content: string | null = tag.getAttribute('content')\n if (content) {\n return content\n }\n }\n }\n\n return ''\n }\n\n function getName(): string {\n let name: string = getWindowMetadataOfAny('name', 'og:site_name', 'og:title', 'twitter:title')\n\n if (!name) {\n name = doc.title\n }\n\n return name\n }\n\n function getDescription(): string {\n const description: string = getWindowMetadataOfAny(\n 'description',\n 'og:description',\n 'twitter:description',\n 'keywords'\n )\n\n return description\n }\n\n const name: string = getName()\n const description: string = getDescription()\n const url: string = loc.origin\n const icons: string[] = getIcons()\n\n const meta: SignClientTypes.Metadata = {\n description,\n url,\n icons,\n name\n }\n\n return meta\n }\n\n private async initializeClient(): Promise<SignClient> {\n this.logger.info('Initializing client...')\n const SignClient = (await import('@walletconnect/sign-client')).SignClient\n const client = await SignClient.init(this.clientOptions)\n\n client.on('session_event', (args) => {\n this.logger.info('EVENT: session_event', args)\n })\n\n client.on('session_update', ({ topic, params }) => {\n this.logger.info('EVENT: session_update', { topic, params })\n const { namespaces } = params\n const session = client.session.get(topic)\n const updatedSession = { ...session, namespaces }\n this.onSessionConnected(updatedSession)\n })\n\n client.on('session_delete', () => {\n this.logger.info('EVENT: session_delete')\n this.session = null\n })\n\n this.client = client\n this.logger.info('Client initialized')\n return client\n }\n\n private async initializeModal(): Promise<WalletConnectModal> {\n this.logger.info('Initializing modal...')\n const WalletConnectModal = (await import('@walletconnect/modal')).WalletConnectModal\n const modal = new WalletConnectModal({\n projectId: this.clientOptions.projectId,\n ...this.modalOptions\n })\n\n modal.subscribeModal((state) => this.logger.info(`Modal ${state.open ? 'open' : 'closed'}`))\n\n this.modal = modal\n this.logger.info('Modal initialized')\n return modal\n }\n\n private onSessionConnected(session: SessionTypes.Struct): WalletAccount[] {\n const caipAccounts = session.namespaces.algorand!.accounts\n\n if (!caipAccounts.length) {\n this.logger.error('No accounts found!')\n throw new Error('No accounts found!')\n }\n\n // @todo: Validate format of CAIP-10 accounts\n\n // Filter duplicate accounts (same address, different chain)\n const accounts = [...new Set(caipAccounts.map((account) => account.split(':').pop()!))]\n\n const walletAccounts = accounts.map((address: string, idx: number) => ({\n name: `${this.metadata.name} Account ${idx + 1}`,\n address\n }))\n\n const walletState = this.store.getWalletState()\n\n if (!walletState) {\n const newWalletState: WalletState = {\n accounts: walletAccounts,\n activeAccount: walletAccounts[0]\n }\n\n this.store.addWallet(newWalletState)\n\n this.logger.info('Connected', newWalletState)\n } else {\n const match = compareAccounts(walletAccounts, walletState.accounts)\n\n if (!match) {\n this.logger.warn('Session accounts mismatch, updating accounts', {\n prev: walletState.accounts,\n current: walletAccounts\n })\n this.store.setAccounts(walletAccounts)\n }\n }\n\n this.session = session\n return walletAccounts\n }\n\n public get activeChainId(): string {\n const network = this.activeNetworkConfig\n if (!network?.caipChainId) {\n this.logger.warn(`No CAIP-2 chain ID found for network: ${this.activeNetwork}`)\n return ''\n }\n return network.caipChainId\n }\n\n public connect = async (): Promise<WalletAccount[]> => {\n this.logger.info('Connecting...')\n try {\n const client = this.client || (await this.initializeClient())\n const modal = this.modal || (await this.initializeModal())\n\n const requiredNamespaces = {\n algorand: {\n chains: [this.activeChainId],\n methods: ['algo_signTxn'],\n events: []\n }\n }\n\n const { uri, approval } = await client.connect({ requiredNamespaces })\n\n if (!uri) {\n this.logger.error('No URI found')\n throw new Error('No URI found')\n }\n\n await modal.openModal({ uri })\n\n const session = await approval()\n const walletAccounts = this.onSessionConnected(session)\n\n this.logger.info('Connected successfully')\n return walletAccounts\n } catch (error: any) {\n this.logger.error('Error connecting:', error.message)\n throw error\n } finally {\n this.modal?.closeModal()\n }\n }\n\n public disconnect = async (): Promise<void> => {\n this.logger.info('Disconnecting...')\n try {\n this.onDisconnect()\n if (this.client && this.session) {\n await this.client.disconnect({\n topic: this.session.topic,\n reason: {\n message: 'User disconnected.',\n code: 6000\n }\n })\n }\n this.logger.info('Disconnected')\n } catch (error: any) {\n this.logger.error('Error disconnecting:', error.message)\n throw error\n }\n }\n\n public resumeSession = async (): Promise<void> => {\n try {\n const walletState = this.store.getWalletState()\n\n // No session to resume\n if (!walletState) {\n this.logger.info('No session to resume')\n return\n }\n\n this.logger.info('Resuming session...')\n\n const client = this.client || (await this.initializeClient())\n\n if (client.session.length) {\n const lastKeyIndex = client.session.keys.length - 1\n const restoredSession = client.session.get(client.session.keys[lastKeyIndex])\n this.onSessionConnected(restoredSession)\n }\n this.logger.info('Session resumed successfully')\n } catch (error: any) {\n this.logger.error('Error resuming session:', error.message)\n this.onDisconnect()\n throw error\n }\n }\n\n private processTxns(\n txnGroup: algosdk.Transaction[],\n indexesToSign?: number[]\n ): WalletTransaction[] {\n const txnsToSign: WalletTransaction[] = []\n\n txnGroup.forEach((txn, index) => {\n const isIndexMatch = !indexesToSign || indexesToSign.includes(index)\n const signer = txn.sender.toString()\n const canSignTxn = this.addresses.includes(signer)\n\n const txnString = byteArrayToBase64(txn.toByte())\n\n if (isIndexMatch && canSignTxn) {\n txnsToSign.push({ txn: txnString })\n } else {\n txnsToSign.push({ txn: txnString, signers: [] })\n }\n })\n\n return txnsToSign\n }\n\n private processEncodedTxns(\n txnGroup: Uint8Array[],\n indexesToSign?: number[]\n ): WalletTransaction[] {\n const txnsToSign: WalletTransaction[] = []\n\n txnGroup.forEach((txnBuffer, index) => {\n const decodedObj = algosdk.msgpackRawDecode(txnBuffer)\n const isSigned = isSignedTxn(decodedObj)\n\n const txn: algosdk.Transaction = isSigned\n ? algosdk.decodeSignedTransaction(txnBuffer).txn\n : algosdk.decodeUnsignedTransaction(txnBuffer)\n\n const isIndexMatch = !indexesToSign || indexesToSign.includes(index)\n const signer = txn.sender.toString()\n const canSignTxn = !isSigned && this.addresses.includes(signer)\n\n const txnString = byteArrayToBase64(txn.toByte())\n\n if (isIndexMatch && canSignTxn) {\n txnsToSign.push({ txn: txnString })\n } else {\n txnsToSign.push({ txn: txnString, signers: [] })\n }\n })\n\n return txnsToSign\n }\n\n public signTransactions = async <T extends algosdk.Transaction[] | Uint8Array[]>(\n txnGroup: T | T[],\n indexesToSign?: number[]\n ): Promise<(Uint8Array | null)[]> => {\n try {\n if (!this.session) {\n this.logger.error('No session found!')\n throw new SessionError('No session found!')\n }\n\n this.logger.debug('Signing transactions...', { txnGroup, indexesToSign })\n\n let txnsToSign: WalletTransaction[] = []\n\n // Determine type and process transactions for signing\n if (isTransactionArray(txnGroup)) {\n const flatTxns: algosdk.Transaction[] = flattenTxnGroup(txnGroup)\n txnsToSign = this.processTxns(flatTxns, indexesToSign)\n } else {\n const flatTxns: Uint8Array[] = flattenTxnGroup(txnGroup as Uint8Array[])\n txnsToSign = this.processEncodedTxns(flatTxns, indexesToSign)\n }\n\n const client = this.client || (await this.initializeClient())\n\n this.logger.debug('Sending processed transactions to wallet...', [txnsToSign])\n\n // Format JSON-RPC request\n const request = formatJsonRpcRequest('algo_signTxn', [txnsToSign])\n\n // Sign transactions\n const signTxnsResult = await client.request<SignTxnsResponse>({\n chainId: this.activeChainId,\n topic: this.session.topic,\n request\n })\n\n this.logger.debug('Received signed transactions from wallet', signTxnsResult)\n\n // Filter out unsigned transactions, convert signed transactions to Uint8Array\n const signedTxns = signTxnsResult.reduce<Uint8Array[]>((acc, value) => {\n if (value) {\n let signedTxn: Uint8Array\n if (typeof value === 'string') {\n signedTxn = base64ToByteArray(value)\n } else if (value instanceof Uint8Array) {\n signedTxn = value\n } else if (Array.isArray(value)) {\n signedTxn = new Uint8Array(value)\n } else {\n // Log unexpected types for debugging\n this.logger.warn('Unexpected type in signTxnsResult', value)\n signedTxn = new Uint8Array()\n }\n acc.push(signedTxn)\n }\n return acc\n }, [])\n\n // ARC-0001 - Return null for unsigned transactions\n const result = txnsToSign.reduce<(Uint8Array | null)[]>((acc, txn) => {\n if (txn.signers && txn.signers.length == 0) {\n acc.push(null)\n } else {\n const signedTxn = signedTxns.shift()\n if (signedTxn) {\n acc.push(signedTxn)\n }\n }\n return acc\n }, [])\n\n this.logger.debug('Transactions signed successfully', result)\n return result\n } catch (error: any) {\n this.logger.error('Error signing transactions:', error.message)\n throw error\n }\n }\n}\n","// ---------- Skin Types ---------- //\n\nexport interface WalletConnectSkin {\n id: string\n name: string\n icon: string\n}\n\nexport type WalletConnectSkinOption = string | WalletConnectSkin\n\n// ---------- Built-in Skin Icons ---------- //\n\nconst VOI_WALLET_ICON = `data:image/svg+xml;base64,${btoa(`\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"322\" height=\"322\">\n <path fill=\"#32B1E8\" d=\"M131 19a42 42 0 0 1 15 8c18 12 36 26 50 43l2 3c26 29 41 64 47 102v2l1 20h-49v10l-42 4a70897 70897 0 0 0-78 7h-3l-18 1a804 804 0 0 0 55-186c16 8 29 33 39 48l-2-16-1-3c-3-14-9-27-15-40l-1-3Z\"/>\n <path fill=\"#1F3AB7\" d=\"M111 33c13 6 23 25 32 37l1 2 4 6 1 2c6 8 4 20 4 30v3c0 32-11 62-26 89h2c23-3 45-4 68-4v9l-42 4a70897 70897 0 0 0-78 7h-3l-18 1a804 804 0 0 0 55-186Z\"/>\n <path fill=\"#3C4856\" d=\"M267 214a2941 2941 0 0 0-12 14l-2 1-10 10-5 4-2 2a8522 8522 0 0 1-21 20c-6 7-11 9-20 10-7 0-12-1-17-6l-8-7-5-6a120 120 0 0 1-8-7l-2-2-4-1-10 7a4157 4157 0 0 1-15 14l-1 1c-5 5-9 6-16 6h-3a397 397 0 0 1-15 0c-14 0-14 0-19-3l-4-7a322 322 0 0 0-8-12l-2-3-8-15 65-7 15-1a47903 47903 0 0 1 122-11l2-1h13Z\"/>\n <path fill=\"#1B87DF\" d=\"M152 86v2l1 2 3 1 3 5 2 4 2 3 2 4c11 21 11 21 14 30l2 4v2l3 7 6 18 5 19 2 9h44v1h-3l-64 2h-3a526 526 0 0 0-44 3l4-9a190 190 0 0 0 21-94V86Z\"/>\n <path fill=\"#1A279D\" d=\"M139 71c5 1 5 1 7 4l2 3 2 3c5 9 3 20 3 29v3c0 32-11 62-26 89h2c23-3 45-4 68-4v9a798 798 0 0 1-92 7l2-2 1-5 5-9c8-16 14-32 19-49l2-8 2-14 1-1c3-18 2-37 2-55Z\"/>\n <path fill=\"#3D4856\" d=\"M151 261c4 1 6 3 8 5l3 3 3 5-4 1-1 19h-18v-20h-7l5-5 2-2 3-2 2-3 4-1Z\"/>\n <path fill=\"#2EB4EB\" d=\"m254 65 4 6c4 6 8 9 14 12v2l-2 1c-7 4-11 9-15 16l-5-7c-3-6-9-8-15-10l7-5c6-4 9-9 12-15Z\"/>\n <path fill=\"#2021AB\" d=\"M162 206h4c10 0 10 0 15 2v1a11602 11602 0 0 1-44 4h-4l-23 1v-1h9l1-3 8-1 3-1h9l2-1 5-1h15Z\"/>\n <path fill=\"#31B8EF\" d=\"M280 50c3 1 3 1 5 4s4 5 8 7l-5 5-6 7-5-5-7-6 6-5 4-7Z\"/>\n <path fill=\"#2DC1F2\" d=\"m255 35 8 9-6 7c-5-1-6-3-9-6l7-10Z\"/>\n <path fill=\"#2F3A48\" d=\"M157 266c3 1 6 3 8 6v2l-4 1-1 19h-18v-18h1v7l1 4 1 4h7l7 1v-12l-1-3v-7l-1-4Z\"/>\n <path fill=\"#233143\" d=\"M157 266c3 1 6 3 8 6v2l-4 1-1 19h-1v-13l-1-4v-6l-1-5Z\"/>\n <path fill=\"#2A2DB3\" d=\"m179 207 2 2-9 1h-7l-4-2c4-4 13-2 18-1Z\"/>\n <path fill=\"#3864CC\" d=\"m104 69 2 6-1 2v3l-1 2-1 2-1 6-2 1 4-22Z\"/>\n <path fill=\"#1F2DAB\" d=\"m77 166 3 1-1 8-5 1c1-4 1-7 3-10Z\"/>\n <path fill=\"#2651C8\" d=\"M98 95c3 3 3 3 3 6v2l-3 1v2h-2l2-11Z\"/>\n <path fill=\"#383F59\" d=\"m267 214-3 5-1-3-9 1 1-2 12-1Z\"/>\n <path fill=\"#184FCF\" d=\"m111 33 4 2-1 2c-2 3-3 5-3 9l-2-1 2-12Z\"/>\n <path fill=\"#1D25A8\" d=\"M71 182h1v8l-4 2c1-7 1-7 3-10Z\"/>\n <path fill=\"#31BBF6\" d=\"m254 65 4 8-3-1-1-2-1 2h-2l3-7Z\"/>\n <path fill=\"#1E78DC\" d=\"m142 168 2 3-2 5-1 2-3 3 1-5 1-3 2-5Z\"/>\n <path fill=\"#42CDF8\" d=\"m255 35 4 4h-2l-7 3 5-7Z\"/>\n <path fill=\"#25B4EC\" d=\"M148 59h4l-2 8c-2-2-2-2-2-5v-3Z\"/>\n <path fill=\"#2024AA\" d=\"m63 200 2 2-1 4-3 2 2-8Z\"/>\n <path fill=\"#32BEFA\" d=\"m280 50 3 1-1 4-3 1 1-6Z\"/>\n</svg>\n`)}`\n\nconst BIATEC_ICON = `data:image/svg+xml;base64,${btoa(`\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 200 180\"><path d=\"M94.27 151.629c-.861-.526-1.51-1.37-1.83-2.386-.197-.62-.18-.627 1.082-.437.705.105 1.6.356 1.988.557.696.36 1.815 1.876 1.815 2.459 0 .486-2.166.348-3.054-.193m23.953-.263c-.788-.419-2.095-2.123-2.108-2.75-.01-.433 2.467-.182 3.403.345.955.536 2.148 1.97 2.148 2.582 0 .503-2.397.38-3.443-.177m-9.024-1.165c-1.567-1.193-2.38-2.74-2.55-4.849-.075-.933-.054-1.697.045-1.697.866 0 2.714 1.67 3.439 3.107.398.789.657 3.888.351 4.195-.07.07-.648-.27-1.285-.756m-8.906-1.354c-.63-.684-1.21-1.648-1.387-2.305-.318-1.18-.136-3.416.278-3.416.555 0 2.108 1.697 2.505 2.737.472 1.237.457 3.905-.023 4.063-.16.053-.777-.433-1.373-1.08m-6.805-1.775c-2.764-.612-5.223-1.425-5.357-1.772-.08-.21.169-1.027.555-1.814s.701-1.469.701-1.515c0-.047-.803.067-1.786.253-.982.185-1.857.256-1.944.157-.088-.1-.365-.715-.618-1.367-.252-.652-.858-1.729-1.345-2.393-1.293-1.76-5.285-5.526-7.272-6.858-3.826-2.564-4.96-3.855-4.667-5.316.08-.402.692-1.574 1.359-2.606 1.65-2.551 2.51-4.472 2.512-5.62.002-.571-.364-1.69-.901-2.758l-.905-1.796.706-.532c1.936-1.46 4.649-4.916 4.205-5.36-.06-.06-.846.72-1.745 1.732-3.553 3.997-7.814 6.463-16.014 9.27-5.324 1.823-5.853 2.06-7.183 3.228-1.555 1.365-1.962 2.502-2.531 7.063-.284 2.275-.706 4.79-.937 5.591-.231.8-.403 2.17-.382 3.043.032 1.346-.157 2.06-1.248 4.698-1.498 3.622-1.068 3.708-4.138-.827l-2.036-3.008.747-.784c.411-.43 1.075-.978 1.475-1.216.955-.568.919-.922-.236-2.331-.53-.647-.917-1.209-.86-1.25s.43-.277.83-.526c1.788-1.12 2.7-4.727 2.987-11.822.214-5.274.595-6.46 2.195-6.83 6.634-1.535 7.58-1.98 8.618-4.066.926-1.858.9-3.701-.121-8.475-.87-4.072-1.047-7.21-.516-9.223.606-2.303 3.759-7.433 5.667-9.221.376-.353.684-.729.684-.835 0-.254-3.325-2.697-4.448-3.268-.482-.245-1.455-.45-2.163-.456-3.892-.03-6.628 1.877-8.722 6.08-.603 1.212-1.582 2.73-2.176 3.374-2.733 2.965-8.602 4.09-12.666 2.43l-.913-.374 1.323-.05c1.422-.054 3.498-.94 3.944-1.683.414-.69.076-.79-1.06-.314-1.443.605-4.075.597-5.039-.015-1.259-.8-2.23-1.81-2.795-2.908l-.535-1.042 1.243 1.095c1.51 1.328 2.691 1.752 4.425 1.585 1.506-.145 2.523-.851 1.65-1.147-3.195-1.08-5.834-3.078-7.07-5.35-.809-1.485-1.513-3.982-1.504-5.334l.006-.936.42.854c.232.47.941 1.333 1.576 1.918l1.155 1.064 2.189-.012 2.188-.011-1.012-.535c-.975-.514-3.353-2.766-3.353-3.175 0-.11.506.079 1.124.418 1.282.703 3.888 1.32 4.21.996.12-.118-.204-.612-.718-1.097-.513-.484-1.17-1.344-1.46-1.911l-.525-1.03 1.174.895c2.02 1.542 3.883 1.506 6.342-.123.69-.457 1.218-.863 1.175-.903s-.989.227-2.103.594c-1.87.618-2.11.64-3.151.305-1.284-.415-2.023-1.273-2.25-2.613l-.158-.926.486.595c1.07 1.31 2.652 1.255 6.363-.224 1.132-.451 2.892-1.036 3.91-1.3 2.732-.706 1.561-.926-2.298-.43-1.778.228-3.27.376-3.318.329-.047-.047.662-.415 1.575-.818 2.002-.883 4.78-1.152 6.858-.663 1.817.427 2.555.81 4.032 2.087 1.151.997 3.654 2.156 4.605 2.133.595-.015-2.96-3.395-4.552-4.328-1.639-.96-4.11-1.542-6.107-1.438-.92.049-1.627.016-1.571-.073.242-.388 3.44-.825 5.203-.71 4.048.265 6.96 2.546 10.902 8.537 2.553 3.883 4.234 5.67 6.137 6.524l1.092.49 2.215-1.027c4.747-2.2 8.797-2.518 16.097-1.26 2.25.387 4.717.704 5.482.704h1.39l.074 3.203.074 3.203.894-1.113c.88-1.096.894-1.152.846-3.516l-.049-2.402-1.61-1.721c-4.14-4.425-4.335-6.536-1.135-12.213 2.744-4.87 2.704-4.41.813-9.32-.883-2.292-1.696-4.167-1.807-4.167-.339 0-.205 4 .196 5.821.716 3.256.435 4.822-1.006 5.603-.371.2-2.144.33-4.904.36-3.6.036-4.348-.022-4.473-.348-.087-.227.102-.582.451-.845.53-.4.563-.53.274-1.09-.18-.35-.692-1.022-1.137-1.493s-.734-.933-.64-1.026c.093-.094 1.072-.036 2.175.128 3.023.45 3.76.398 4.211-.297.4-.615 2.887-9.725 2.704-9.907-.196-.196-1.55 1.62-2.759 3.7-1.782 3.068-3.14 3.895-6.379 3.889-2.485-.005-5.43-1.098-8.658-3.213-1.439-.943-3.02-1.855-3.514-2.027-1.524-.531-3.75-.392-5.163.324l-1.26.638.567-.603c.892-.95 3.048-2.004 4.432-2.167 1.94-.23 3.3.283 5.786 2.18 2.39 1.823 3.163 2.225 4.28 2.225.6 0 .497-.12-.745-.872-.792-.48-2.416-1.598-3.609-2.486-2.658-1.978-4.119-2.58-5.831-2.4l-1.26.132.926-.39c.667-.281 1.609-.36 3.373-.284 1.346.059 2.448.077 2.448.04 0-.278-2.537-1.455-3.71-1.722-.89-.202-1.231-.365-.884-.421.312-.051 1.86.225 3.44.614 2.564.63 3.167.687 5.602.525 5.536-.369 7.032-1.144 9.218-4.774l1.433-2.382-1.224 1.323c-.673.728-1.779 1.928-2.457 2.666-.677.739-1.53 1.417-1.893 1.508l-.662.165.61-.503c.334-.277 1.088-1.491 1.675-2.698 1.772-3.648 3.228-4.779 6.772-5.257 3.522-.476 4.797-.791 5.421-1.342.332-.293.429-.44.215-.329-.213.112-1.94.277-3.836.367-2.955.14-3.666.263-4.97.86-1.632.749-4.092 2.893-4.996 4.356-.764 1.236-.923.905-.224-.465 1.387-2.718 4.685-4.945 8.366-5.651l1.815-.349-1.058-.235c-.582-.13-1.952-.224-3.043-.209l-1.984.027 1.72-.82c1.427-.682 2.04-.822 3.611-.822 1.607 0 1.86-.06 1.679-.4-.539-1.005-1.377-1.452-2.69-1.432-.769.011-1.156-.067-.937-.19.534-.298 2.168-.34 4.169-.104 1.648.194 1.82.159 3.59-.733 1.023-.515 2.472-1.047 3.22-1.183 1.388-.253 3.607-.04 4.472.429.942.51 1.958 1.825 2.095 2.712.116.746 0 1.052-.671 1.777-.752.813-.811 1.018-.811 2.82 0 1.706-.105 2.127-.85 3.424-.467.814-.973 1.476-1.124 1.473s-.797-.242-1.435-.532c-1.277-.579-1.714-.435-1.988.655-.115.46.045.84.605 1.44.42.448 1.621 2.237 2.671 3.975 1.883 3.116 1.905 3.175 1.585 4.146-.258.78-.258 1.56 0 3.73.179 1.51.253 3.031.166 3.38-.128.509.033.795.805 1.432 1.367 1.126 5.02 2.947 5.914 2.947 1.268 0 1.588.247 1.588 1.227 0 1.057-.642 2.742-1.045 2.742-.153 0-.278-.298-.278-.662 0-.558-.123-.661-.793-.661-.436 0-2.162-.467-3.836-1.036l-3.044-1.036v1.788c0 .984-.077 3.057-.172 4.608l-.173 2.82h3.015l-.133.86c-.073.472-.206 2.11-.295 3.637-.373 6.42-.634 7.203-4.207 12.65-4.119 6.278-4.635 7.984-3.493 11.548.37 1.158.647 2.133.613 2.167-.246.246-2.569-1.19-3.783-2.34-2.616-2.473-2.922-3.975-1.146-5.619.954-.882 1.054-1.087.892-1.828-.417-1.91-.553-1.976-1-.482-.232.777-.693 1.849-1.024 2.382-.526.846-.603 1.318-.603 3.705v2.736l3.175 1.022c1.746.562 3.446 1.028 3.777 1.034.583.012.59-.012.194-.776-.224-.434-.479-1.307-.566-1.939-.208-1.523.53-3.065 3.905-8.159 4.537-6.845 5.478-9.25 5.681-14.513.07-1.82.19-3.93.267-4.692.137-1.353.17-1.398 1.379-1.933 2.27-1.004 4.245-3.717 6.253-8.589.526-1.274.459-1.204-1.891 1.985-1.019 1.382-2.13 2.751-2.47 3.042-.604.516-.603.506.048-.397.938-1.299 1.216-2.144 1.685-5.107.663-4.193 1.699-6.255 4.604-9.16 3.639-3.638 9.47-6.348 13.7-6.365.635-.003 1.201-.155 1.322-.356.117-.192 1.105-.92 2.196-1.615 1.092-.696 2.252-1.511 2.579-1.812.327-.3.66-.48.74-.4.081.081-.038.942-.263 1.914s-.41 1.88-.41 2.016c0 .37 1.393.3 1.992-.102.287-.192 1.296-.62 2.241-.953s1.998-.78 2.338-.994c.34-.215.665-.345.722-.288.302.302-1.982 3.526-2.927 4.132l-1.152.74c-.277.179 1.202 3.732 1.975 4.745.674.882.862 1.347.742 1.825-.089.354.045 1.273.296 2.044.645 1.98 2.913 6.751 3.698 7.779.808 1.06.82 1.416.075 2.363-.32.408-.648 1.225-.728 1.816-.118.879-.279 1.12-.89 1.335-1.457.512-2.298-.449-2.94-3.358-.113-.512-.325-.728-.715-.728-.634 0-.619.099.398 2.514.368.873.572 1.685.453 1.804-.12.119-.679.178-1.244.132-1.006-.082-1.03-.108-1.165-1.29-.11-.958-.407-1.515-1.444-2.716-1.28-1.483-1.523-1.617-3.974-2.186-.436-.102-1.235-.406-1.776-.677l-.981-.491-.311 1.124c-.462 1.668-.381 7.592.14 10.35.244 1.29.926 3.552 1.516 5.027 1.864 4.655 1.933 4.98 1.924 9.031-.006 2.853-.112 3.972-.461 4.87-.25.641-.415 1.204-.367 1.252.047.047 2.935.203 6.419.347 4.2.174 6.786.397 7.679.664 1.433.429 2.955 1.341 3.328 1.995.125.219 1.292 3.718 2.594 7.777 2.56 7.978 2.515 7.613 1.142 9.263-.582.7-.623.918-.458 2.455l.18 1.686-1.685 1.59c-2.476 2.335-2.487 2.338-2.833.702l-.825-3.894c-.497-2.344-.503-2.535-.09-2.844.245-.182.75-.332 1.121-.335 1.259-.007 1.444-.36.672-1.277l-.7-.833.461-1.209c.403-1.054.421-1.428.146-2.924-.856-4.647-3.463-7.755-6.516-7.769-1.198-.006-5.626.726-6.143 1.015-.419.235 1.36 2.035 4.026 4.073 1.954 1.494 2.487 2.265 2.708 3.918.115.858-.031 1.278-.963 2.753-1.122 1.776-2.596 4.941-4.015 8.62-.437 1.133-1.048 2.383-1.358 2.777-.546.695-.623.712-2.434.544-1.51-.14-2.034-.085-2.726.287-.933.503-1.032.488-5.234-.754l-1.852-.547 1.058-.93c2.452-2.155 4.96-4.035 5.375-4.028.245.004.743.417 1.107.919.364.5.74.914.835.918.336.014 2.673-2.777 3.423-4.09.928-1.622 1.429-3.721 1.19-4.992-.414-2.208-2.105-3.2-8.836-5.183-4.604-1.356-5.44-1.637-6.837-2.3-.81-.384-.92-.36-3.047.664-2.593 1.248-5.507 2.251-8.665 2.983-3.304.766-9.686.95-12.988.376-3.227-.562-7.639-2.035-9.626-3.214-.856-.508-1.618-.862-1.693-.787-.15.15 1.12 2.079 1.665 2.53.271.226.239.732-.166 2.586-1.245 5.713-2.66 8.612-7.189 14.73-2.852 3.852-3.402 5.685-2.327 7.762.66 1.274 9.278 9.763 11.016 10.85.797.498 1.576 1.26 1.929 1.889.496.883 2.158 5.275 2.158 5.704 0 .2-1.577.111-2.779-.154\" style=\"fill:teal;stroke-width:.264583\"></path></svg>\n`)}`\n\n// ---------- Built-in Skins Registry ---------- //\n\n/**\n * Built-in skins that ship with the WalletConnect adapter.\n * PRs to add new WalletConnect-compatible wallets should add entries here.\n */\nexport const BUILTIN_SKINS: Record<string, WalletConnectSkin> = {\n biatec: {\n id: 'biatec',\n name: 'Biatec Wallet',\n icon: BIATEC_ICON\n },\n voiwallet: {\n id: 'voiwallet',\n name: 'Voi Wallet',\n icon: VOI_WALLET_ICON\n }\n}\n\n// ---------- Custom Skins Registry (Runtime) ---------- //\n\n/**\n * Runtime registry for custom skins added by developers.\n * Use `registerSkin()` to add custom skins.\n */\nconst customSkins = new Map<string, WalletConnectSkin>()\n\n/**\n * Register a custom WalletConnect skin at runtime.\n * This allows developers to add their own wallet skins without PRing the library.\n *\n * @param skin - The skin definition to register\n * @throws Error if attempting to override a built-in skin\n *\n * @example\n * ```typescript\n * import { registerSkin } from '@txnlab/use-wallet-walletconnect'\n *\n * registerSkin({\n * id: 'mywallet',\n * name: 'My Custom Wallet',\n * icon: 'data:image/svg+xml;base64,...'\n * })\n * ```\n */\nexport function registerSkin(skin: WalletConnectSkin): void {\n if (BUILTIN_SKINS[skin.id]) {\n throw new Error(`Cannot override built-in skin: ${skin.id}`)\n }\n customSkins.set(skin.id, skin)\n}\n\n/**\n * Get a skin by its ID from either built-in or custom registries.\n *\n * @param skinId - The skin identifier\n * @returns The skin definition, or undefined if not found\n */\nexport function getSkin(skinId: string): WalletConnectSkin | undefined {\n return BUILTIN_SKINS[skinId] || customSkins.get(skinId)\n}\n\n/**\n * Resolve a skin option to a full WalletConnectSkin object.\n *\n * If the option is a string, looks up the skin in the registries.\n * If the option is a full skin object, registers it as a custom skin and returns it.\n *\n * @param skinOption - Either a skin ID string or a full skin definition\n * @returns The resolved skin, or undefined if not found (when string ID provided)\n */\nexport function resolveSkin(skinOption: WalletConnectSkinOption): WalletConnectSkin | undefined {\n if (typeof skinOption === 'string') {\n return getSkin(skinOption)\n }\n\n // If it's a full skin definition, register it as a custom skin\n if (!BUILTIN_SKINS[skinOption.id]) {\n customSkins.set(skinOption.id, skinOption)\n }\n return skinOption\n}\n","import { WalletConnectAdapter } from './adapter'\nimport { resolveSkin } from './skins'\nimport type { WalletConnectOptions } from './adapter'\nimport type { WalletAdapterConfig } from '@txnlab/use-wallet'\n\nexport const WALLET_ID = 'walletconnect' as const\n\n/**\n * Note: unlike other adapter factories, `walletConnect` does not accept\n * the shared `metadata` factory option. WalletConnect's `metadata` option\n * is the dApp metadata sent to the relay (name, description, url, icons).\n * To customize the wallet's display name and icon, pass a custom `skin`.\n */\nexport function walletConnect(options: WalletConnectOptions): WalletAdapterConfig {\n const skin = options.skin ? resolveSkin(options.skin) : null\n const id = skin ? `walletconnect:${skin.id}` : WALLET_ID\n const metadata = skin\n ? { name: skin.name, icon: skin.icon }\n : WalletConnectAdapter.defaultMetadata\n\n return {\n id,\n metadata,\n Adapter: WalletConnectAdapter as unknown as WalletAdapterConfig['Adapter'],\n options: options as unknown as Record<string, unknown> | undefined\n }\n}\n\nexport { WalletConnectAdapter }\nexport { SessionError } from './adapter'\nexport type { WalletConnectOptions, SignTxnsResponse } from './adapter'\n\n// Skins utilities and types\nexport { registerSkin, getSkin, resolveSkin, BUILTIN_SKINS } from './skins'\nexport type { WalletConnectSkin, WalletConnectSkinOption } from './skins'\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@txnlab/use-wallet-walletconnect",
3
- "version": "5.0.0-rc.2",
3
+ "version": "5.0.0-rc.4",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
@@ -8,12 +8,16 @@
8
8
  "description": "WalletConnect adapter for @txnlab/use-wallet",
9
9
  "author": "Doug Richar <drichar@gmail.com>",
10
10
  "license": "MIT",
11
+ "engines": {
12
+ "node": ">=22"
13
+ },
11
14
  "repository": {
12
15
  "type": "git",
13
16
  "url": "git+https://github.com/TxnLab/use-wallet.git",
14
17
  "directory": "packages/wallets/walletconnect"
15
18
  },
16
19
  "type": "module",
20
+ "sideEffects": false,
17
21
  "main": "./dist/index.js",
18
22
  "types": "./dist/index.d.ts",
19
23
  "exports": {
@@ -35,10 +39,10 @@
35
39
  "@walletconnect/types": "2.23.4"
36
40
  },
37
41
  "devDependencies": {
38
- "algosdk": "3.5.2",
42
+ "algosdk": "3.6.0",
39
43
  "tsdown": "0.21.0",
40
44
  "typescript": "5.9.3",
41
- "@txnlab/use-wallet": "5.0.0-rc.2"
45
+ "@txnlab/use-wallet": "5.0.0-rc.4"
42
46
  },
43
47
  "scripts": {
44
48
  "build": "tsdown",