@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/dev.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();
@@ -565,11 +608,11 @@ var disconnectWcOrSolana = async () => {
565
608
  }
566
609
  };
567
610
  var createWcEvmConnector = (config2) => {
568
- const walletConfig = WALLETS.find((w) => w.id === config2.walletId);
611
+ const walletConfig2 = WALLETS.find((w) => w.id === config2.walletId);
569
612
  const getDeeplink = createDeeplink(config2.wcDeeplink);
570
613
  const isInWallet = () => isInWalletBrowser(config2.injectedKey);
571
614
  return {
572
- ...walletConfig,
615
+ ...walletConfig2,
573
616
  type: "evm",
574
617
  wallet: {
575
618
  _connector: null,
@@ -610,11 +653,11 @@ var createWcEvmConnector = (config2) => {
610
653
  };
611
654
  };
612
655
  var createWcSolanaConnector = (config2) => {
613
- const walletConfig = WALLETS.find((w) => w.id === config2.walletId);
656
+ const walletConfig2 = WALLETS.find((w) => w.id === config2.walletId);
614
657
  const getDeeplink = createDeeplink(config2.wcDeeplink);
615
658
  const isInWallet = () => isInWalletBrowser(config2.injectedKey);
616
659
  return {
617
- ...walletConfig,
660
+ ...walletConfig2,
618
661
  type: "solana",
619
662
  wallet: {
620
663
  _provider: null,
@@ -641,7 +684,7 @@ var createWcSolanaConnector = (config2) => {
641
684
  const messageBytes = new TextEncoder().encode(message);
642
685
  const result = await requestWalletConnect(
643
686
  "solana_signMessage",
644
- { message: bs58.encode(messageBytes), pubkey },
687
+ { message: bs582.encode(messageBytes), pubkey },
645
688
  WC_CHAINS.SOLANA_MAINNET
646
689
  );
647
690
  return result.signature;
@@ -654,6 +697,11 @@ var createWcSolanaConnector = (config2) => {
654
697
  var PHANTOM_CONNECT_URL = "https://phantom.app/ul/v1/connect";
655
698
  var PHANTOM_SIGN_MESSAGE_URL = "https://phantom.app/ul/v1/signMessage";
656
699
  var PHANTOM_BROWSE_URL = "https://phantom.app/ul/browse";
700
+ var createPhantomSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
701
+ walletId: "phantom",
702
+ browseUrl: PHANTOM_BROWSE_URL,
703
+ injectedKey: "isPhantom"
704
+ });
657
705
  var PHANTOM_CONFIG = {
658
706
  connectUrl: PHANTOM_CONNECT_URL,
659
707
  storageKeyPrefix: "phantom_mobile",
@@ -750,11 +798,24 @@ var METAMASK_CONFIG = {
750
798
  wcDeeplink: "https://metamask.app.link/wc",
751
799
  injectedKey: "isMetaMask"
752
800
  };
801
+ var METAMASK_BROWSE_URL = "https://metamask.app.link/dapp";
753
802
  var createMetaMaskEvmConnector = () => createWcEvmConnector(METAMASK_CONFIG);
803
+ var createMetaMaskSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
804
+ walletId: "metamask",
805
+ browseUrl: METAMASK_BROWSE_URL,
806
+ injectedKey: "isMetaMask",
807
+ stripProtocol: true
808
+ });
754
809
 
755
810
  // src/lib/connectors/solflare.ts
756
811
  var SOLFLARE_CONNECT_URL = "https://solflare.com/ul/v1/connect";
757
812
  var SOLFLARE_SIGN_MESSAGE_URL = "https://solflare.com/ul/v1/signMessage";
813
+ var SOLFLARE_BROWSE_URL = "https://solflare.com/ul/v1/browse";
814
+ var createSolflareSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
815
+ walletId: "solflare",
816
+ browseUrl: SOLFLARE_BROWSE_URL,
817
+ injectedKey: "isSolflare"
818
+ });
758
819
  var SOLFLARE_CONFIG = {
759
820
  connectUrl: SOLFLARE_CONNECT_URL,
760
821
  storageKeyPrefix: "solflare_mobile",
@@ -824,8 +885,14 @@ var TRUST_CONFIG = {
824
885
  wcDeeplink: "https://link.trustwallet.com/wc",
825
886
  injectedKey: "isTrust"
826
887
  };
888
+ var TRUST_BROWSE_URL = "https://link.trustwallet.com/open_url";
827
889
  var createTrustEvmMobileConnector = () => createWcEvmConnector(TRUST_CONFIG);
828
890
  var createTrustSolanaMobileConnector = () => createWcSolanaConnector(TRUST_CONFIG);
891
+ var createTrustSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
892
+ walletId: "trust",
893
+ browseUrl: TRUST_BROWSE_URL,
894
+ injectedKey: "isTrust"
895
+ });
829
896
 
830
897
  // src/lib/connectors/rainbow.ts
831
898
  var RAINBOW_CONFIG = {
@@ -841,8 +908,14 @@ var EXODUS_CONFIG = {
841
908
  wcDeeplink: "https://exodus.com/wc",
842
909
  injectedKey: "isExodus"
843
910
  };
911
+ var EXODUS_BROWSE_URL = "https://exodus.com/m/browser";
844
912
  var createExodusEvmMobileConnector = () => createWcEvmConnector(EXODUS_CONFIG);
845
913
  var createExodusSolanaMobileConnector = () => createWcSolanaConnector(EXODUS_CONFIG);
914
+ var createExodusSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
915
+ walletId: "exodus",
916
+ browseUrl: EXODUS_BROWSE_URL,
917
+ injectedKey: "isExodus"
918
+ });
846
919
 
847
920
  // src/lib/connectors/binance.ts
848
921
  var BINANCE_CONFIG = {
@@ -850,8 +923,118 @@ var BINANCE_CONFIG = {
850
923
  wcDeeplink: "bnc://app.binance.com/cedefi/wc",
851
924
  injectedKey: "isBinance"
852
925
  };
926
+ var buildBinanceBrowseUrl = () => `bnc://app.binance.com/cedefi/dapp?url=${encodeURIComponent(window.location.href)}`;
853
927
  var createBinanceEvmConnector = () => createWcEvmConnector(BINANCE_CONFIG);
854
928
  var createBinanceSolanaConnector = () => createWcSolanaConnector(BINANCE_CONFIG);
929
+ var createBinanceSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
930
+ walletId: "binance",
931
+ injectedKey: "isBinance",
932
+ buildUrl: buildBinanceBrowseUrl
933
+ });
934
+
935
+ // src/lib/connectors/okx.ts
936
+ var buildOkxBrowseUrl = () => {
937
+ const dappUrl = window.location.href;
938
+ const deepLink = `okx://wallet/dapp/url?dappUrl=${encodeURIComponent(dappUrl)}`;
939
+ return `https://web3.okx.com/download?deeplink=${encodeURIComponent(deepLink)}`;
940
+ };
941
+ var createOkxSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
942
+ walletId: "okx",
943
+ injectedKey: "isOkxWallet",
944
+ buildUrl: buildOkxBrowseUrl
945
+ });
946
+
947
+ // src/lib/connectors/coinbase.ts
948
+ var buildCoinbaseBrowseUrl = () => `cbwallet://dapp?url=${encodeURIComponent(window.location.href)}`;
949
+ var createCoinbaseSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
950
+ walletId: "coinbase",
951
+ injectedKey: "isCoinbaseWallet",
952
+ buildUrl: buildCoinbaseBrowseUrl
953
+ });
954
+
955
+ // src/lib/connectors/bitget.ts
956
+ var BITGET_BROWSE_URL = "https://bkcode.vip/dapp";
957
+ var createBitgetSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
958
+ walletId: "bitget",
959
+ browseUrl: BITGET_BROWSE_URL,
960
+ injectedKey: "isBitKeep",
961
+ stripProtocol: true
962
+ });
963
+ var walletConfig = WALLETS.find((w) => w.id === "walletconnect");
964
+ var disconnectWc2 = async () => {
965
+ if (getCurrentSession()) {
966
+ await disconnectWalletConnect();
967
+ }
968
+ };
969
+ var createWalletConnectEvmConnector = () => {
970
+ if (isMobile()) return null;
971
+ return {
972
+ id: walletConfig.id,
973
+ name: walletConfig.name,
974
+ icon: walletConfig.icon,
975
+ type: "evm",
976
+ installed: false,
977
+ wallet: {
978
+ _connector: null,
979
+ connect: async () => {
980
+ return connectViaWalletConnect(EVM_WC_CONFIG, getEvmAccountFromSession);
981
+ },
982
+ disconnect: disconnectWc2,
983
+ signMessage: async (message) => {
984
+ const session = getCurrentSession();
985
+ if (!session) {
986
+ throw new Error("No WalletConnect session");
987
+ }
988
+ const account = session.namespaces.eip155?.accounts?.[0];
989
+ if (!account) {
990
+ throw new Error("No EVM account in session");
991
+ }
992
+ const address = account.split(":")[2];
993
+ const result = await requestWalletConnect(
994
+ "personal_sign",
995
+ [message, address],
996
+ WC_CHAINS.EVM_MAINNET
997
+ );
998
+ return result;
999
+ }
1000
+ }
1001
+ };
1002
+ };
1003
+ var createWalletConnectSolanaConnector = () => {
1004
+ if (isMobile()) return null;
1005
+ return {
1006
+ id: walletConfig.id,
1007
+ name: walletConfig.name,
1008
+ icon: walletConfig.icon,
1009
+ type: "solana",
1010
+ installed: false,
1011
+ wallet: {
1012
+ _provider: null,
1013
+ connect: async () => {
1014
+ return connectViaWalletConnect(SOLANA_WC_CONFIG, getSolanaAccountFromSession);
1015
+ },
1016
+ disconnect: disconnectWc2,
1017
+ signMessage: async (message) => {
1018
+ const session = getCurrentSession();
1019
+ if (!session) {
1020
+ throw new Error("No WalletConnect session");
1021
+ }
1022
+ const account = session.namespaces.solana?.accounts?.[0];
1023
+ if (!account) {
1024
+ throw new Error("No Solana account in session");
1025
+ }
1026
+ const pubkey = account.split(":")[2];
1027
+ const messageBytes = new TextEncoder().encode(message);
1028
+ const result = await requestWalletConnect(
1029
+ "solana_signMessage",
1030
+ { message: bs582.encode(messageBytes), pubkey },
1031
+ WC_CHAINS.SOLANA_MAINNET
1032
+ );
1033
+ return result.signature;
1034
+ }
1035
+ }
1036
+ };
1037
+ };
855
1038
 
856
1039
  // src/lib/evm/connectors.ts
857
1040
  var EVM_FALLBACK_CONNECTORS = [
@@ -955,7 +1138,7 @@ var createSolanaConnector = (provider) => {
955
1138
  const result = await signFeature.signMessage({ message: encodedMessage, account });
956
1139
  const signature = result[0]?.signature;
957
1140
  if (!signature) throw new Error("No signature returned");
958
- return bs58.encode(signature);
1141
+ return bs582.encode(signature);
959
1142
  }
960
1143
  }
961
1144
  };
@@ -972,16 +1155,59 @@ var createSolanaMobileConnector = (connector) => ({
972
1155
  }
973
1156
  }
974
1157
  });
975
- var SOLANA_FALLBACK_CONNECTORS = [
1158
+ var SOLANA_FALLBACK_CONNECTORS = isMobile() ? [
1159
+ {
1160
+ id: "phantom",
1161
+ create: () => createSolanaMobileConnector(createPhantomSolanaDappBrowserConnector())
1162
+ },
1163
+ {
1164
+ id: "solflare",
1165
+ create: () => createSolanaMobileConnector(createSolflareSolanaDappBrowserConnector())
1166
+ },
1167
+ {
1168
+ id: "metamask",
1169
+ create: () => createSolanaMobileConnector(createMetaMaskSolanaDappBrowserConnector())
1170
+ },
1171
+ {
1172
+ id: "okx",
1173
+ create: () => createSolanaMobileConnector(createOkxSolanaDappBrowserConnector())
1174
+ },
1175
+ {
1176
+ id: "coinbase",
1177
+ create: () => createSolanaMobileConnector(createCoinbaseSolanaDappBrowserConnector())
1178
+ },
1179
+ {
1180
+ id: "bitget",
1181
+ create: () => createSolanaMobileConnector(createBitgetSolanaDappBrowserConnector())
1182
+ },
1183
+ {
1184
+ id: "trust",
1185
+ create: () => createSolanaMobileConnector(createTrustSolanaDappBrowserConnector())
1186
+ },
1187
+ {
1188
+ id: "binance",
1189
+ create: () => createSolanaMobileConnector(createBinanceSolanaDappBrowserConnector())
1190
+ },
1191
+ {
1192
+ id: "exodus",
1193
+ create: () => createSolanaMobileConnector(createExodusSolanaDappBrowserConnector())
1194
+ }
1195
+ ] : [
976
1196
  { id: "phantom", create: () => createSolanaMobileConnector(createPhantomSolanaConnector()) },
977
1197
  // { id: 'metamask', create: () => createSolanaMobileConnector(createMetaMaskSolanaConnector()) },
978
1198
  {
979
1199
  id: "solflare",
980
1200
  create: () => createSolanaMobileConnector(createSolflareSolanaMobileConnector())
981
1201
  },
982
- { id: "trust", create: () => createSolanaMobileConnector(createTrustSolanaMobileConnector()) },
1202
+ {
1203
+ id: "trust",
1204
+ create: () => createSolanaMobileConnector(createTrustSolanaMobileConnector())
1205
+ },
983
1206
  { id: "binance", create: () => createSolanaMobileConnector(createBinanceSolanaConnector()) },
984
- { id: "exodus", create: () => createSolanaMobileConnector(createExodusSolanaMobileConnector()) }
1207
+ {
1208
+ id: "exodus",
1209
+ create: () => createSolanaMobileConnector(createExodusSolanaMobileConnector())
1210
+ }
985
1211
  ];
986
1212
  var getSolanaWallets = () => {
987
1213
  const { get } = getWallets();
@@ -1082,7 +1308,12 @@ var useEvmWallet = (options) => {
1082
1308
  const [connectedConnector, setConnectedConnector] = createSignal(null);
1083
1309
  onMount(() => {
1084
1310
  createEvmConfig(options.chains);
1085
- setEvmConnectors(getEvmConnectors());
1311
+ const connectors = getEvmConnectors();
1312
+ const wcConnector = createWalletConnectEvmConnector();
1313
+ if (wcConnector) {
1314
+ connectors.unshift(wcConnector);
1315
+ }
1316
+ setEvmConnectors(connectors);
1086
1317
  const unsubscribe = watchEvmConnections((connections) => {
1087
1318
  const connection = connections[0];
1088
1319
  if (connection && connection.accounts[0]) {
@@ -1128,7 +1359,12 @@ var useSolanaWallet = () => {
1128
1359
  null
1129
1360
  );
1130
1361
  onMount(() => {
1131
- setSolanaConnectors(getSolanaWallets());
1362
+ const connectors = getSolanaWallets();
1363
+ const wcConnector = createWalletConnectSolanaConnector();
1364
+ if (wcConnector) {
1365
+ connectors.unshift(wcConnector);
1366
+ }
1367
+ setSolanaConnectors(connectors);
1132
1368
  const unsubscribeWallets = onSolanaWalletsChange(setSolanaConnectors);
1133
1369
  const unsubscribeConnection = watchSolanaConnection((state) => {
1134
1370
  setSolanaConnection(state.connection);
@@ -1232,7 +1468,7 @@ var useWalletConnect = (options) => {
1232
1468
  const messageBytes = new TextEncoder().encode(message);
1233
1469
  const result = await requestWalletConnect(
1234
1470
  "solana_signMessage",
1235
- { message: bs58.encode(messageBytes), pubkey },
1471
+ { message: bs582.encode(messageBytes), pubkey },
1236
1472
  WC_CHAINS.SOLANA_MAINNET
1237
1473
  );
1238
1474
  return result.signature;
@@ -1341,4 +1577,4 @@ function useWallet() {
1341
1577
  return context;
1342
1578
  }
1343
1579
 
1344
- export { WALLETS, WalletProvider, checkPhantomSignCallback, checkSolflareSignCallback, createEvmConfig, getEvmConfig, getEvmConnectors, getSolanaWallets, initWalletConnect, onSolanaWalletsChange, reconnectSolana, useWallet, watchEvmConnections, watchSolanaConnection };
1580
+ export { WALLETS, WalletProvider, checkPhantomSignCallback, checkSolflareSignCallback, createEvmConfig, getCurrentSession, getEvmConfig, getEvmConnectors, getSolanaWallets, initWalletConnect, onSolanaWalletsChange, onWalletConnectSessionChange, reconnectSolana, useWallet, watchEvmConnections, watchSolanaConnection };