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

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/dist/index.d.ts CHANGED
@@ -3,7 +3,6 @@ import { AdapterConstructorParams, BaseWallet, WalletAccount, WalletMetadata } f
3
3
  import { WalletConnectModalConfig } from "@walletconnect/modal";
4
4
  import { SignClientTypes } from "@walletconnect/types";
5
5
  import { WalletAdapterConfig } from "@txnlab/use-wallet";
6
-
7
6
  //#region src/skins.d.ts
8
7
  interface WalletConnectSkin {
9
8
  id: string;
@@ -15,7 +14,7 @@ type WalletConnectSkinOption = string | WalletConnectSkin;
15
14
  * Built-in skins that ship with the WalletConnect adapter.
16
15
  * PRs to add new WalletConnect-compatible wallets should add entries here.
17
16
  */
18
- declare const BUILTIN_SKINS: Record<string, WalletConnectSkin>;
17
+ export declare const BUILTIN_SKINS: Record<string, WalletConnectSkin>;
19
18
  /**
20
19
  * Register a custom WalletConnect skin at runtime.
21
20
  * This allows developers to add their own wallet skins without PRing the library.
@@ -34,14 +33,14 @@ declare const BUILTIN_SKINS: Record<string, WalletConnectSkin>;
34
33
  * })
35
34
  * ```
36
35
  */
37
- declare function registerSkin(skin: WalletConnectSkin): void;
36
+ export declare function registerSkin(skin: WalletConnectSkin): void;
38
37
  /**
39
38
  * Get a skin by its ID from either built-in or custom registries.
40
39
  *
41
40
  * @param skinId - The skin identifier
42
41
  * @returns The skin definition, or undefined if not found
43
42
  */
44
- declare function getSkin(skinId: string): WalletConnectSkin | undefined;
43
+ export declare function getSkin(skinId: string): WalletConnectSkin | undefined;
45
44
  /**
46
45
  * Resolve a skin option to a full WalletConnectSkin object.
47
46
  *
@@ -51,7 +50,7 @@ declare function getSkin(skinId: string): WalletConnectSkin | undefined;
51
50
  * @param skinOption - Either a skin ID string or a full skin definition
52
51
  * @returns The resolved skin, or undefined if not found (when string ID provided)
53
52
  */
54
- declare function resolveSkin(skinOption: WalletConnectSkinOption): WalletConnectSkin | undefined;
53
+ export declare function resolveSkin(skinOption: WalletConnectSkinOption): WalletConnectSkin | undefined;
55
54
  //#endregion
56
55
  //#region src/adapter.d.ts
57
56
  interface SignClientOptions {
@@ -74,10 +73,10 @@ interface WalletConnectOptions extends WalletConnectBaseOptions {
74
73
  skin?: WalletConnectSkinOption;
75
74
  }
76
75
  type SignTxnsResponse = Array<Uint8Array | number[] | string | null | undefined>;
77
- declare class SessionError extends Error {
76
+ export declare class SessionError extends Error {
78
77
  constructor(message: string);
79
78
  }
80
- declare class WalletConnectAdapter extends BaseWallet<WalletConnectOptions> {
79
+ export declare class WalletConnectAdapter extends BaseWallet<WalletConnectOptions> {
81
80
  private client;
82
81
  private clientOptions;
83
82
  private modal;
@@ -104,14 +103,14 @@ declare class WalletConnectAdapter extends BaseWallet<WalletConnectOptions> {
104
103
  }
105
104
  //#endregion
106
105
  //#region src/index.d.ts
107
- declare const WALLET_ID: "walletconnect";
106
+ export declare const WALLET_ID: "walletconnect";
108
107
  /**
109
108
  * Note: unlike other adapter factories, `walletConnect` does not accept
110
109
  * the shared `metadata` factory option. WalletConnect's `metadata` option
111
110
  * is the dApp metadata sent to the relay (name, description, url, icons).
112
111
  * To customize the wallet's display name and icon, pass a custom `skin`.
113
112
  */
114
- declare function walletConnect(options: WalletConnectOptions): WalletAdapterConfig;
113
+ export declare function walletConnect(options: WalletConnectOptions): WalletAdapterConfig;
115
114
  //#endregion
116
- export { BUILTIN_SKINS, SessionError, type SignTxnsResponse, WALLET_ID, WalletConnectAdapter, type WalletConnectOptions, type WalletConnectSkin, type WalletConnectSkinOption, getSkin, registerSkin, resolveSkin, walletConnect };
115
+ export type { SignTxnsResponse, WalletConnectOptions, WalletConnectSkin, WalletConnectSkinOption };
117
116
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -29,13 +29,14 @@ var WalletConnectAdapter = class extends BaseWallet {
29
29
  throw new Error("Missing required option: projectId");
30
30
  }
31
31
  const { projectId, relayUrl = "wss://relay.walletconnect.com", metadata: metadataOptions, skin: _skinOption, ...modalOptions } = this.options;
32
+ const clientMetadata = {
33
+ ...this.getWindowMetadata(),
34
+ ...metadataOptions
35
+ };
32
36
  this.clientOptions = {
33
37
  projectId,
34
38
  relayUrl,
35
- metadata: {
36
- ...this.getWindowMetadata(),
37
- ...metadataOptions
38
- }
39
+ metadata: clientMetadata
39
40
  };
40
41
  this.modalOptions = modalOptions;
41
42
  }
@@ -89,20 +90,22 @@ var WalletConnectAdapter = class extends BaseWallet {
89
90
  if (rel) {
90
91
  if (rel.toLowerCase().indexOf("icon") > -1) {
91
92
  const href = link.getAttribute("href");
92
- if (href) if (href.toLowerCase().indexOf("https:") === -1 && href.toLowerCase().indexOf("http:") === -1 && href.indexOf("//") !== 0) {
93
- let absoluteHref = loc.protocol + "//" + loc.host;
94
- if (href.indexOf("/") === 0) absoluteHref += href;
95
- else {
96
- const path = loc.pathname.split("/");
97
- path.pop();
98
- const finalPath = path.join("/");
99
- absoluteHref += finalPath + "/" + href;
100
- }
101
- icons.push(absoluteHref);
102
- } else if (href.indexOf("//") === 0) {
103
- const absoluteUrl = loc.protocol + href;
104
- icons.push(absoluteUrl);
105
- } else icons.push(href);
93
+ if (href) {
94
+ if (href.toLowerCase().indexOf("https:") === -1 && href.toLowerCase().indexOf("http:") === -1 && href.indexOf("//") !== 0) {
95
+ let absoluteHref = loc.protocol + "//" + loc.host;
96
+ if (href.indexOf("/") === 0) absoluteHref += href;
97
+ else {
98
+ const path = loc.pathname.split("/");
99
+ path.pop();
100
+ const finalPath = path.join("/");
101
+ absoluteHref += finalPath + "/" + href;
102
+ }
103
+ icons.push(absoluteHref);
104
+ } else if (href.indexOf("//") === 0) {
105
+ const absoluteUrl = loc.protocol + href;
106
+ icons.push(absoluteUrl);
107
+ } else icons.push(href);
108
+ }
106
109
  }
107
110
  }
108
111
  }
@@ -299,7 +302,8 @@ var WalletConnectAdapter = class extends BaseWallet {
299
302
  processEncodedTxns(txnGroup, indexesToSign) {
300
303
  const txnsToSign = [];
301
304
  txnGroup.forEach((txnBuffer, index) => {
302
- const isSigned = isSignedTxn(algosdk.msgpackRawDecode(txnBuffer));
305
+ const decodedObj = algosdk.msgpackRawDecode(txnBuffer);
306
+ const isSigned = isSignedTxn(decodedObj);
303
307
  const txn = isSigned ? algosdk.decodeSignedTransaction(txnBuffer).txn : algosdk.decodeUnsignedTransaction(txnBuffer);
304
308
  const isIndexMatch = !indexesToSign || indexesToSign.includes(index);
305
309
  const signer = txn.sender.toString();
@@ -348,7 +352,7 @@ var WalletConnectAdapter = class extends BaseWallet {
348
352
  else if (Array.isArray(value)) signedTxn = new Uint8Array(value);
349
353
  else {
350
354
  this.logger.warn("Unexpected type in signTxnsResult", value);
351
- signedTxn = new Uint8Array();
355
+ signedTxn = /* @__PURE__ */ new Uint8Array();
352
356
  }
353
357
  acc.push(signedTxn);
354
358
  }
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\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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"}
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.4",
3
+ "version": "5.0.1",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
@@ -35,14 +35,14 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "@walletconnect/modal": "2.7.0",
38
- "@walletconnect/sign-client": "2.23.4",
39
- "@walletconnect/types": "2.23.4"
38
+ "@walletconnect/sign-client": "2.25.0",
39
+ "@walletconnect/types": "2.25.0"
40
40
  },
41
41
  "devDependencies": {
42
42
  "algosdk": "3.6.0",
43
- "tsdown": "0.21.0",
43
+ "tsdown": "0.23.0",
44
44
  "typescript": "5.9.3",
45
- "@txnlab/use-wallet": "5.0.0-rc.4"
45
+ "@txnlab/use-wallet": "5.0.1"
46
46
  },
47
47
  "scripts": {
48
48
  "build": "tsdown",