@bit-buccaneers/wallet-abstraction 0.0.4 → 0.0.7

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.js CHANGED
@@ -2,7 +2,7 @@ import { injected, metaMask, coinbaseWallet } from '@wagmi/connectors';
2
2
  import { createConfig, getConnectors, signMessage, disconnect, connect, watchConnections } from '@wagmi/core';
3
3
  import { http } from 'viem';
4
4
  import { mainnet } from 'viem/chains';
5
- import bs58 from 'bs58';
5
+ import bs582 from 'bs58';
6
6
  import nacl from 'tweetnacl';
7
7
  import { SignClient } from '@walletconnect/sign-client';
8
8
  import { isWalletAdapterCompatibleStandardWallet } from '@solana/wallet-adapter-base';
@@ -154,6 +154,11 @@ var WALLETS = [
154
154
  name: "Exodus",
155
155
  icon: "https://iconic.dynamic-static-assets.com/icons/sprite.svg#exodus",
156
156
  chromeExtensionUrl: "https://chromewebstore.google.com/detail/aholpfdialjgjfhomihkjbmgjidlcdno"
157
+ },
158
+ {
159
+ id: "walletconnect",
160
+ name: "WalletConnect",
161
+ icon: "https://iconic.dynamic-static-assets.com/icons/sprite.svg#walletconnect"
157
162
  }
158
163
  ];
159
164
 
@@ -204,6 +209,90 @@ var SOLANA_WC_CONFIG = {
204
209
  methods: WC_METHODS.SOLANA,
205
210
  events: WC_EVENTS.SOLANA
206
211
  };
212
+ var connectEvmInjected = async () => {
213
+ if (!window.ethereum) throw new Error("No injected EVM provider");
214
+ const accounts = await window.ethereum.request({
215
+ method: "eth_requestAccounts"
216
+ });
217
+ if (!accounts[0]) throw new Error("No accounts returned");
218
+ const chainId = await window.ethereum.request({ method: "eth_chainId" });
219
+ return connectedResult(accounts[0], { chainId: parseInt(chainId, 16) });
220
+ };
221
+ var connectSolanaInjected = async () => {
222
+ if (!window.solana) throw new Error("No injected Solana provider");
223
+ const response = await window.solana.connect();
224
+ const publicKey = response.publicKey;
225
+ return connectedResult(publicKey.toBase58(), { publicKey: publicKey.toBytes() });
226
+ };
227
+ var signSolanaInjected = async (message) => {
228
+ if (!window.solana?.signMessage) {
229
+ throw new Error("No injected Solana provider or signMessage not supported");
230
+ }
231
+ const encodedMessage = new TextEncoder().encode(message);
232
+ const result = await window.solana.signMessage(encodedMessage, "utf8");
233
+ return bs582.encode(new Uint8Array(result.signature));
234
+ };
235
+
236
+ // src/lib/connectors/shared/utils.ts
237
+ var isMobile = () => {
238
+ return typeof window !== "undefined" && /iPhone|iPad|iPod|Android/i.test(window.navigator.userAgent);
239
+ };
240
+ var isInWalletBrowser = (key) => {
241
+ return typeof window !== "undefined" && !!window.ethereum?.[key];
242
+ };
243
+ var openDeeplink = (url) => {
244
+ const link = document.createElement("a");
245
+ link.href = url;
246
+ link.click();
247
+ };
248
+ var waitForValue = (getValue) => {
249
+ return new Promise((resolve) => {
250
+ const check = () => {
251
+ const value = getValue();
252
+ if (value != null) resolve(value);
253
+ else window.setTimeout(check, 50);
254
+ };
255
+ check();
256
+ });
257
+ };
258
+
259
+ // src/lib/connectors/shared/dapp-browser.ts
260
+ var buildBrowseUrl = (config2) => {
261
+ if (config2.buildUrl) return config2.buildUrl();
262
+ if (config2.stripProtocol) {
263
+ return `${config2.browseUrl}/${window.location.host}${window.location.pathname}${window.location.search}`;
264
+ }
265
+ return `${config2.browseUrl}/${encodeURIComponent(window.location.href)}`;
266
+ };
267
+ var createDappBrowserSolanaConnector = (config2) => {
268
+ const walletConfig2 = WALLETS.find((w) => w.id === config2.walletId);
269
+ const isInWallet = () => isInWalletBrowser(config2.injectedKey);
270
+ return {
271
+ ...walletConfig2,
272
+ type: "solana",
273
+ wallet: {
274
+ _provider: null,
275
+ connect: async () => {
276
+ if (isInWallet() && window.solana) {
277
+ return connectSolanaInjected();
278
+ }
279
+ window.location.href = buildBrowseUrl(config2);
280
+ return pendingResult();
281
+ },
282
+ disconnect: async () => {
283
+ if (window.solana?.disconnect) {
284
+ await window.solana.disconnect();
285
+ }
286
+ },
287
+ signMessage: async (message) => {
288
+ if (isInWallet() && window.solana) {
289
+ return signSolanaInjected(message);
290
+ }
291
+ throw new Error("signMessage requires dApp browser");
292
+ }
293
+ }
294
+ };
295
+ };
207
296
  var getDappKeyPair = (storageKey) => {
208
297
  const stored = storage.get(storageKey);
209
298
  if (stored) {
@@ -223,7 +312,7 @@ var buildConnectUrl = (config2, params) => {
223
312
  const keyPair = getDappKeyPair(`${config2.storageKeyPrefix}_keypair`);
224
313
  const url = new URL(config2.connectUrl);
225
314
  url.searchParams.set("app_url", params.appUrl);
226
- url.searchParams.set("dapp_encryption_public_key", bs58.encode(keyPair.publicKey));
315
+ url.searchParams.set("dapp_encryption_public_key", bs582.encode(keyPair.publicKey));
227
316
  url.searchParams.set("redirect_link", params.redirectUrl);
228
317
  if (params.cluster) {
229
318
  url.searchParams.set("cluster", params.cluster);
@@ -242,8 +331,8 @@ var parseConnectResponse = (urlParams, config2) => {
242
331
  }
243
332
  try {
244
333
  const keyPair = getDappKeyPair(`${config2.storageKeyPrefix}_keypair`);
245
- const sharedSecret = nacl.box.before(bs58.decode(walletPublicKey), keyPair.secretKey);
246
- const decrypted = nacl.box.open.after(bs58.decode(data), bs58.decode(nonce), sharedSecret);
334
+ const sharedSecret = nacl.box.before(bs582.decode(walletPublicKey), keyPair.secretKey);
335
+ const decrypted = nacl.box.open.after(bs582.decode(data), bs582.decode(nonce), sharedSecret);
247
336
  if (!decrypted) {
248
337
  return null;
249
338
  }
@@ -293,7 +382,7 @@ var buildSignMessageUrl = (signUrl, config2, sessionKey, message, redirectUrl) =
293
382
  const keyPair = getDappKeyPair(`${config2.storageKeyPrefix}_keypair`);
294
383
  const sharedSecret = new Uint8Array(session.sharedSecret);
295
384
  const payload = {
296
- message: bs58.encode(new TextEncoder().encode(message)),
385
+ message: bs582.encode(new TextEncoder().encode(message)),
297
386
  session: session.session,
298
387
  display: "utf8"
299
388
  };
@@ -304,10 +393,10 @@ var buildSignMessageUrl = (signUrl, config2, sessionKey, message, redirectUrl) =
304
393
  sharedSecret
305
394
  );
306
395
  const url = new URL(signUrl);
307
- url.searchParams.set("dapp_encryption_public_key", bs58.encode(keyPair.publicKey));
308
- url.searchParams.set("nonce", bs58.encode(nonce));
396
+ url.searchParams.set("dapp_encryption_public_key", bs582.encode(keyPair.publicKey));
397
+ url.searchParams.set("nonce", bs582.encode(nonce));
309
398
  url.searchParams.set("redirect_link", redirectUrl);
310
- url.searchParams.set("payload", bs58.encode(encrypted));
399
+ url.searchParams.set("payload", bs582.encode(encrypted));
311
400
  return url.toString();
312
401
  };
313
402
  var parseSignMessageResponse = (config2, sessionKey) => {
@@ -319,7 +408,7 @@ var parseSignMessageResponse = (config2, sessionKey) => {
319
408
  if (!session) return null;
320
409
  try {
321
410
  const sharedSecret = new Uint8Array(session.sharedSecret);
322
- const decrypted = nacl.box.open.after(bs58.decode(data), bs58.decode(nonce), sharedSecret);
411
+ const decrypted = nacl.box.open.after(bs582.decode(data), bs582.decode(nonce), sharedSecret);
323
412
  if (!decrypted) return null;
324
413
  const response = JSON.parse(new TextDecoder().decode(decrypted));
325
414
  return response.signature;
@@ -327,29 +416,6 @@ var parseSignMessageResponse = (config2, sessionKey) => {
327
416
  return null;
328
417
  }
329
418
  };
330
- var connectEvmInjected = async () => {
331
- if (!window.ethereum) throw new Error("No injected EVM provider");
332
- const accounts = await window.ethereum.request({
333
- method: "eth_requestAccounts"
334
- });
335
- if (!accounts[0]) throw new Error("No accounts returned");
336
- const chainId = await window.ethereum.request({ method: "eth_chainId" });
337
- return connectedResult(accounts[0], { chainId: parseInt(chainId, 16) });
338
- };
339
- var connectSolanaInjected = async () => {
340
- if (!window.solana) throw new Error("No injected Solana provider");
341
- const response = await window.solana.connect();
342
- const publicKey = response.publicKey;
343
- return connectedResult(publicKey.toBase58(), { publicKey: publicKey.toBytes() });
344
- };
345
- var signSolanaInjected = async (message) => {
346
- if (!window.solana?.signMessage) {
347
- throw new Error("No injected Solana provider or signMessage not supported");
348
- }
349
- const encodedMessage = new TextEncoder().encode(message);
350
- const result = await window.solana.signMessage(encodedMessage, "utf8");
351
- return bs58.encode(new Uint8Array(result.signature));
352
- };
353
419
 
354
420
  // src/lib/connectors/shared/parsers.ts
355
421
  var parseEvmAccount = (account) => {
@@ -360,8 +426,8 @@ var parseEvmAccount = (account) => {
360
426
  var parseSolanaAccount = async (account) => {
361
427
  const address = account.split(":")[2];
362
428
  if (!address) throw new Error("Invalid Solana account format");
363
- const { default: bs586 } = await import('bs58');
364
- return connectedResult(address, { publicKey: bs586.decode(address) });
429
+ const { default: bs587 } = await import('bs58');
430
+ return connectedResult(address, { publicKey: bs587.decode(address) });
365
431
  };
366
432
  var getEvmAccountFromSession = (namespaces) => {
367
433
  const account = namespaces.eip155?.accounts?.[0];
@@ -373,29 +439,6 @@ var getSolanaAccountFromSession = async (namespaces) => {
373
439
  if (!account) throw new Error("No Solana accounts returned");
374
440
  return parseSolanaAccount(account);
375
441
  };
376
-
377
- // src/lib/connectors/shared/utils.ts
378
- var isMobile = () => {
379
- return typeof window !== "undefined" && /iPhone|iPad|iPod|Android/i.test(window.navigator.userAgent);
380
- };
381
- var isInWalletBrowser = (key) => {
382
- return typeof window !== "undefined" && !!window.ethereum?.[key];
383
- };
384
- var openDeeplink = (url) => {
385
- const link = document.createElement("a");
386
- link.href = url;
387
- link.click();
388
- };
389
- var waitForValue = (getValue) => {
390
- return new Promise((resolve) => {
391
- const check = () => {
392
- const value = getValue();
393
- if (value != null) resolve(value);
394
- else window.setTimeout(check, 50);
395
- };
396
- check();
397
- });
398
- };
399
442
  var signClient = null;
400
443
  var currentSession = null;
401
444
  var sessionChangeCallbacks = /* @__PURE__ */ new Set();
@@ -560,11 +603,11 @@ var disconnectWcOrSolana = async () => {
560
603
  }
561
604
  };
562
605
  var createWcEvmConnector = (config2) => {
563
- const walletConfig = WALLETS.find((w) => w.id === config2.walletId);
606
+ const walletConfig2 = WALLETS.find((w) => w.id === config2.walletId);
564
607
  const getDeeplink = createDeeplink(config2.wcDeeplink);
565
608
  const isInWallet = () => isInWalletBrowser(config2.injectedKey);
566
609
  return {
567
- ...walletConfig,
610
+ ...walletConfig2,
568
611
  type: "evm",
569
612
  wallet: {
570
613
  _connector: null,
@@ -605,11 +648,11 @@ var createWcEvmConnector = (config2) => {
605
648
  };
606
649
  };
607
650
  var createWcSolanaConnector = (config2) => {
608
- const walletConfig = WALLETS.find((w) => w.id === config2.walletId);
651
+ const walletConfig2 = WALLETS.find((w) => w.id === config2.walletId);
609
652
  const getDeeplink = createDeeplink(config2.wcDeeplink);
610
653
  const isInWallet = () => isInWalletBrowser(config2.injectedKey);
611
654
  return {
612
- ...walletConfig,
655
+ ...walletConfig2,
613
656
  type: "solana",
614
657
  wallet: {
615
658
  _provider: null,
@@ -636,7 +679,7 @@ var createWcSolanaConnector = (config2) => {
636
679
  const messageBytes = new TextEncoder().encode(message);
637
680
  const result = await requestWalletConnect(
638
681
  "solana_signMessage",
639
- { message: bs58.encode(messageBytes), pubkey },
682
+ { message: bs582.encode(messageBytes), pubkey },
640
683
  WC_CHAINS.SOLANA_MAINNET
641
684
  );
642
685
  return result.signature;
@@ -649,6 +692,11 @@ var createWcSolanaConnector = (config2) => {
649
692
  var PHANTOM_CONNECT_URL = "https://phantom.app/ul/v1/connect";
650
693
  var PHANTOM_SIGN_MESSAGE_URL = "https://phantom.app/ul/v1/signMessage";
651
694
  var PHANTOM_BROWSE_URL = "https://phantom.app/ul/browse";
695
+ var createPhantomSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
696
+ walletId: "phantom",
697
+ browseUrl: PHANTOM_BROWSE_URL,
698
+ injectedKey: "isPhantom"
699
+ });
652
700
  var PHANTOM_CONFIG = {
653
701
  connectUrl: PHANTOM_CONNECT_URL,
654
702
  storageKeyPrefix: "phantom_mobile",
@@ -745,11 +793,24 @@ var METAMASK_CONFIG = {
745
793
  wcDeeplink: "https://metamask.app.link/wc",
746
794
  injectedKey: "isMetaMask"
747
795
  };
796
+ var METAMASK_BROWSE_URL = "https://metamask.app.link/dapp";
748
797
  var createMetaMaskEvmConnector = () => createWcEvmConnector(METAMASK_CONFIG);
798
+ var createMetaMaskSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
799
+ walletId: "metamask",
800
+ browseUrl: METAMASK_BROWSE_URL,
801
+ injectedKey: "isMetaMask",
802
+ stripProtocol: true
803
+ });
749
804
 
750
805
  // src/lib/connectors/solflare.ts
751
806
  var SOLFLARE_CONNECT_URL = "https://solflare.com/ul/v1/connect";
752
807
  var SOLFLARE_SIGN_MESSAGE_URL = "https://solflare.com/ul/v1/signMessage";
808
+ var SOLFLARE_BROWSE_URL = "https://solflare.com/ul/v1/browse";
809
+ var createSolflareSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
810
+ walletId: "solflare",
811
+ browseUrl: SOLFLARE_BROWSE_URL,
812
+ injectedKey: "isSolflare"
813
+ });
753
814
  var SOLFLARE_CONFIG = {
754
815
  connectUrl: SOLFLARE_CONNECT_URL,
755
816
  storageKeyPrefix: "solflare_mobile",
@@ -819,8 +880,14 @@ var TRUST_CONFIG = {
819
880
  wcDeeplink: "https://link.trustwallet.com/wc",
820
881
  injectedKey: "isTrust"
821
882
  };
883
+ var TRUST_BROWSE_URL = "https://link.trustwallet.com/open_url";
822
884
  var createTrustEvmMobileConnector = () => createWcEvmConnector(TRUST_CONFIG);
823
885
  var createTrustSolanaMobileConnector = () => createWcSolanaConnector(TRUST_CONFIG);
886
+ var createTrustSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
887
+ walletId: "trust",
888
+ browseUrl: TRUST_BROWSE_URL,
889
+ injectedKey: "isTrust"
890
+ });
824
891
 
825
892
  // src/lib/connectors/rainbow.ts
826
893
  var RAINBOW_CONFIG = {
@@ -836,8 +903,14 @@ var EXODUS_CONFIG = {
836
903
  wcDeeplink: "https://exodus.com/wc",
837
904
  injectedKey: "isExodus"
838
905
  };
906
+ var EXODUS_BROWSE_URL = "https://exodus.com/m/browser";
839
907
  var createExodusEvmMobileConnector = () => createWcEvmConnector(EXODUS_CONFIG);
840
908
  var createExodusSolanaMobileConnector = () => createWcSolanaConnector(EXODUS_CONFIG);
909
+ var createExodusSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
910
+ walletId: "exodus",
911
+ browseUrl: EXODUS_BROWSE_URL,
912
+ injectedKey: "isExodus"
913
+ });
841
914
 
842
915
  // src/lib/connectors/binance.ts
843
916
  var BINANCE_CONFIG = {
@@ -845,8 +918,118 @@ var BINANCE_CONFIG = {
845
918
  wcDeeplink: "bnc://app.binance.com/cedefi/wc",
846
919
  injectedKey: "isBinance"
847
920
  };
921
+ var buildBinanceBrowseUrl = () => `bnc://app.binance.com/cedefi/dapp?url=${encodeURIComponent(window.location.href)}`;
848
922
  var createBinanceEvmConnector = () => createWcEvmConnector(BINANCE_CONFIG);
849
923
  var createBinanceSolanaConnector = () => createWcSolanaConnector(BINANCE_CONFIG);
924
+ var createBinanceSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
925
+ walletId: "binance",
926
+ injectedKey: "isBinance",
927
+ buildUrl: buildBinanceBrowseUrl
928
+ });
929
+
930
+ // src/lib/connectors/okx.ts
931
+ var buildOkxBrowseUrl = () => {
932
+ const dappUrl = window.location.href;
933
+ const deepLink = `okx://wallet/dapp/url?dappUrl=${encodeURIComponent(dappUrl)}`;
934
+ return `https://web3.okx.com/download?deeplink=${encodeURIComponent(deepLink)}`;
935
+ };
936
+ var createOkxSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
937
+ walletId: "okx",
938
+ injectedKey: "isOkxWallet",
939
+ buildUrl: buildOkxBrowseUrl
940
+ });
941
+
942
+ // src/lib/connectors/coinbase.ts
943
+ var buildCoinbaseBrowseUrl = () => `cbwallet://dapp?url=${encodeURIComponent(window.location.href)}`;
944
+ var createCoinbaseSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
945
+ walletId: "coinbase",
946
+ injectedKey: "isCoinbaseWallet",
947
+ buildUrl: buildCoinbaseBrowseUrl
948
+ });
949
+
950
+ // src/lib/connectors/bitget.ts
951
+ var BITGET_BROWSE_URL = "https://bkcode.vip/dapp";
952
+ var createBitgetSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
953
+ walletId: "bitget",
954
+ browseUrl: BITGET_BROWSE_URL,
955
+ injectedKey: "isBitKeep",
956
+ stripProtocol: true
957
+ });
958
+ var walletConfig = WALLETS.find((w) => w.id === "walletconnect");
959
+ var disconnectWc2 = async () => {
960
+ if (getCurrentSession()) {
961
+ await disconnectWalletConnect();
962
+ }
963
+ };
964
+ var createWalletConnectEvmConnector = () => {
965
+ if (isMobile()) return null;
966
+ return {
967
+ id: walletConfig.id,
968
+ name: walletConfig.name,
969
+ icon: walletConfig.icon,
970
+ type: "evm",
971
+ installed: false,
972
+ wallet: {
973
+ _connector: null,
974
+ connect: async () => {
975
+ return connectViaWalletConnect(EVM_WC_CONFIG, getEvmAccountFromSession);
976
+ },
977
+ disconnect: disconnectWc2,
978
+ signMessage: async (message) => {
979
+ const session = getCurrentSession();
980
+ if (!session) {
981
+ throw new Error("No WalletConnect session");
982
+ }
983
+ const account = session.namespaces.eip155?.accounts?.[0];
984
+ if (!account) {
985
+ throw new Error("No EVM account in session");
986
+ }
987
+ const address = account.split(":")[2];
988
+ const result = await requestWalletConnect(
989
+ "personal_sign",
990
+ [message, address],
991
+ WC_CHAINS.EVM_MAINNET
992
+ );
993
+ return result;
994
+ }
995
+ }
996
+ };
997
+ };
998
+ var createWalletConnectSolanaConnector = () => {
999
+ if (isMobile()) return null;
1000
+ return {
1001
+ id: walletConfig.id,
1002
+ name: walletConfig.name,
1003
+ icon: walletConfig.icon,
1004
+ type: "solana",
1005
+ installed: false,
1006
+ wallet: {
1007
+ _provider: null,
1008
+ connect: async () => {
1009
+ return connectViaWalletConnect(SOLANA_WC_CONFIG, getSolanaAccountFromSession);
1010
+ },
1011
+ disconnect: disconnectWc2,
1012
+ signMessage: async (message) => {
1013
+ const session = getCurrentSession();
1014
+ if (!session) {
1015
+ throw new Error("No WalletConnect session");
1016
+ }
1017
+ const account = session.namespaces.solana?.accounts?.[0];
1018
+ if (!account) {
1019
+ throw new Error("No Solana account in session");
1020
+ }
1021
+ const pubkey = account.split(":")[2];
1022
+ const messageBytes = new TextEncoder().encode(message);
1023
+ const result = await requestWalletConnect(
1024
+ "solana_signMessage",
1025
+ { message: bs582.encode(messageBytes), pubkey },
1026
+ WC_CHAINS.SOLANA_MAINNET
1027
+ );
1028
+ return result.signature;
1029
+ }
1030
+ }
1031
+ };
1032
+ };
850
1033
 
851
1034
  // src/lib/evm/connectors.ts
852
1035
  var EVM_FALLBACK_CONNECTORS = [
@@ -950,7 +1133,7 @@ var createSolanaConnector = (provider) => {
950
1133
  const result = await signFeature.signMessage({ message: encodedMessage, account });
951
1134
  const signature = result[0]?.signature;
952
1135
  if (!signature) throw new Error("No signature returned");
953
- return bs58.encode(signature);
1136
+ return bs582.encode(signature);
954
1137
  }
955
1138
  }
956
1139
  };
@@ -967,16 +1150,59 @@ var createSolanaMobileConnector = (connector) => ({
967
1150
  }
968
1151
  }
969
1152
  });
970
- var SOLANA_FALLBACK_CONNECTORS = [
1153
+ var SOLANA_FALLBACK_CONNECTORS = isMobile() ? [
1154
+ {
1155
+ id: "phantom",
1156
+ create: () => createSolanaMobileConnector(createPhantomSolanaDappBrowserConnector())
1157
+ },
1158
+ {
1159
+ id: "solflare",
1160
+ create: () => createSolanaMobileConnector(createSolflareSolanaDappBrowserConnector())
1161
+ },
1162
+ {
1163
+ id: "metamask",
1164
+ create: () => createSolanaMobileConnector(createMetaMaskSolanaDappBrowserConnector())
1165
+ },
1166
+ {
1167
+ id: "okx",
1168
+ create: () => createSolanaMobileConnector(createOkxSolanaDappBrowserConnector())
1169
+ },
1170
+ {
1171
+ id: "coinbase",
1172
+ create: () => createSolanaMobileConnector(createCoinbaseSolanaDappBrowserConnector())
1173
+ },
1174
+ {
1175
+ id: "bitget",
1176
+ create: () => createSolanaMobileConnector(createBitgetSolanaDappBrowserConnector())
1177
+ },
1178
+ {
1179
+ id: "trust",
1180
+ create: () => createSolanaMobileConnector(createTrustSolanaDappBrowserConnector())
1181
+ },
1182
+ {
1183
+ id: "binance",
1184
+ create: () => createSolanaMobileConnector(createBinanceSolanaDappBrowserConnector())
1185
+ },
1186
+ {
1187
+ id: "exodus",
1188
+ create: () => createSolanaMobileConnector(createExodusSolanaDappBrowserConnector())
1189
+ }
1190
+ ] : [
971
1191
  { id: "phantom", create: () => createSolanaMobileConnector(createPhantomSolanaConnector()) },
972
1192
  // { id: 'metamask', create: () => createSolanaMobileConnector(createMetaMaskSolanaConnector()) },
973
1193
  {
974
1194
  id: "solflare",
975
1195
  create: () => createSolanaMobileConnector(createSolflareSolanaMobileConnector())
976
1196
  },
977
- { id: "trust", create: () => createSolanaMobileConnector(createTrustSolanaMobileConnector()) },
1197
+ {
1198
+ id: "trust",
1199
+ create: () => createSolanaMobileConnector(createTrustSolanaMobileConnector())
1200
+ },
978
1201
  { id: "binance", create: () => createSolanaMobileConnector(createBinanceSolanaConnector()) },
979
- { id: "exodus", create: () => createSolanaMobileConnector(createExodusSolanaMobileConnector()) }
1202
+ {
1203
+ id: "exodus",
1204
+ create: () => createSolanaMobileConnector(createExodusSolanaMobileConnector())
1205
+ }
980
1206
  ];
981
1207
  var getSolanaWallets = () => {
982
1208
  const { get } = getWallets();
@@ -1077,7 +1303,12 @@ var useEvmWallet = (options) => {
1077
1303
  const [connectedConnector, setConnectedConnector] = createSignal(null);
1078
1304
  onMount(() => {
1079
1305
  createEvmConfig(options.chains);
1080
- setEvmConnectors(getEvmConnectors());
1306
+ const connectors = getEvmConnectors();
1307
+ const wcConnector = createWalletConnectEvmConnector();
1308
+ if (wcConnector) {
1309
+ connectors.unshift(wcConnector);
1310
+ }
1311
+ setEvmConnectors(connectors);
1081
1312
  const unsubscribe = watchEvmConnections((connections) => {
1082
1313
  const connection = connections[0];
1083
1314
  if (connection && connection.accounts[0]) {
@@ -1123,7 +1354,12 @@ var useSolanaWallet = () => {
1123
1354
  null
1124
1355
  );
1125
1356
  onMount(() => {
1126
- setSolanaConnectors(getSolanaWallets());
1357
+ const connectors = getSolanaWallets();
1358
+ const wcConnector = createWalletConnectSolanaConnector();
1359
+ if (wcConnector) {
1360
+ connectors.unshift(wcConnector);
1361
+ }
1362
+ setSolanaConnectors(connectors);
1127
1363
  const unsubscribeWallets = onSolanaWalletsChange(setSolanaConnectors);
1128
1364
  const unsubscribeConnection = watchSolanaConnection((state) => {
1129
1365
  setSolanaConnection(state.connection);
@@ -1227,7 +1463,7 @@ var useWalletConnect = (options) => {
1227
1463
  const messageBytes = new TextEncoder().encode(message);
1228
1464
  const result = await requestWalletConnect(
1229
1465
  "solana_signMessage",
1230
- { message: bs58.encode(messageBytes), pubkey },
1466
+ { message: bs582.encode(messageBytes), pubkey },
1231
1467
  WC_CHAINS.SOLANA_MAINNET
1232
1468
  );
1233
1469
  return result.signature;
@@ -1336,4 +1572,4 @@ function useWallet() {
1336
1572
  return context;
1337
1573
  }
1338
1574
 
1339
- export { WALLETS, WalletProvider, checkPhantomSignCallback, checkSolflareSignCallback, createEvmConfig, getEvmConfig, getEvmConnectors, getSolanaWallets, initWalletConnect, onSolanaWalletsChange, reconnectSolana, useWallet, watchEvmConnections, watchSolanaConnection };
1575
+ export { WALLETS, WalletProvider, checkPhantomSignCallback, checkSolflareSignCallback, createEvmConfig, getCurrentSession, getEvmConfig, getEvmConnectors, getSolanaWallets, initWalletConnect, onSolanaWalletsChange, onWalletConnectSessionChange, reconnectSolana, useWallet, watchEvmConnections, watchSolanaConnection };