@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.jsx CHANGED
@@ -149,6 +149,11 @@ var WALLETS = [
149
149
  name: "Exodus",
150
150
  icon: "https://iconic.dynamic-static-assets.com/icons/sprite.svg#exodus",
151
151
  chromeExtensionUrl: "https://chromewebstore.google.com/detail/aholpfdialjgjfhomihkjbmgjidlcdno"
152
+ },
153
+ {
154
+ id: "walletconnect",
155
+ name: "WalletConnect",
156
+ icon: "https://iconic.dynamic-static-assets.com/icons/sprite.svg#walletconnect"
152
157
  }
153
158
  ];
154
159
 
@@ -200,8 +205,95 @@ var SOLANA_WC_CONFIG = {
200
205
  events: WC_EVENTS.SOLANA
201
206
  };
202
207
 
203
- // src/lib/connectors/shared/deeplink.ts
208
+ // src/lib/connectors/shared/injected.ts
204
209
  import bs58 from "bs58";
210
+ var connectEvmInjected = async () => {
211
+ if (!window.ethereum) throw new Error("No injected EVM provider");
212
+ const accounts = await window.ethereum.request({
213
+ method: "eth_requestAccounts"
214
+ });
215
+ if (!accounts[0]) throw new Error("No accounts returned");
216
+ const chainId = await window.ethereum.request({ method: "eth_chainId" });
217
+ return connectedResult(accounts[0], { chainId: parseInt(chainId, 16) });
218
+ };
219
+ var connectSolanaInjected = async () => {
220
+ if (!window.solana) throw new Error("No injected Solana provider");
221
+ const response = await window.solana.connect();
222
+ const publicKey = response.publicKey;
223
+ return connectedResult(publicKey.toBase58(), { publicKey: publicKey.toBytes() });
224
+ };
225
+ var signSolanaInjected = async (message) => {
226
+ if (!window.solana?.signMessage) {
227
+ throw new Error("No injected Solana provider or signMessage not supported");
228
+ }
229
+ const encodedMessage = new TextEncoder().encode(message);
230
+ const result = await window.solana.signMessage(encodedMessage, "utf8");
231
+ return bs58.encode(new Uint8Array(result.signature));
232
+ };
233
+
234
+ // src/lib/connectors/shared/utils.ts
235
+ var isMobile = () => {
236
+ return typeof window !== "undefined" && /iPhone|iPad|iPod|Android/i.test(window.navigator.userAgent);
237
+ };
238
+ var isInWalletBrowser = (key) => {
239
+ return typeof window !== "undefined" && !!window.ethereum?.[key];
240
+ };
241
+ var openDeeplink = (url) => {
242
+ const link = document.createElement("a");
243
+ link.href = url;
244
+ link.click();
245
+ };
246
+ var waitForValue = (getValue) => {
247
+ return new Promise((resolve) => {
248
+ const check = () => {
249
+ const value = getValue();
250
+ if (value != null) resolve(value);
251
+ else window.setTimeout(check, 50);
252
+ };
253
+ check();
254
+ });
255
+ };
256
+
257
+ // src/lib/connectors/shared/dapp-browser.ts
258
+ var buildBrowseUrl = (config2) => {
259
+ if (config2.buildUrl) return config2.buildUrl();
260
+ if (config2.stripProtocol) {
261
+ return `${config2.browseUrl}/${window.location.host}${window.location.pathname}${window.location.search}`;
262
+ }
263
+ return `${config2.browseUrl}/${encodeURIComponent(window.location.href)}`;
264
+ };
265
+ var createDappBrowserSolanaConnector = (config2) => {
266
+ const walletConfig2 = WALLETS.find((w) => w.id === config2.walletId);
267
+ const isInWallet = () => isInWalletBrowser(config2.injectedKey);
268
+ return {
269
+ ...walletConfig2,
270
+ type: "solana",
271
+ wallet: {
272
+ _provider: null,
273
+ connect: async () => {
274
+ if (isInWallet() && window.solana) {
275
+ return connectSolanaInjected();
276
+ }
277
+ window.location.href = buildBrowseUrl(config2);
278
+ return pendingResult();
279
+ },
280
+ disconnect: async () => {
281
+ if (window.solana?.disconnect) {
282
+ await window.solana.disconnect();
283
+ }
284
+ },
285
+ signMessage: async (message) => {
286
+ if (isInWallet() && window.solana) {
287
+ return signSolanaInjected(message);
288
+ }
289
+ throw new Error("signMessage requires dApp browser");
290
+ }
291
+ }
292
+ };
293
+ };
294
+
295
+ // src/lib/connectors/shared/deeplink.ts
296
+ import bs582 from "bs58";
205
297
  import nacl from "tweetnacl";
206
298
  var getDappKeyPair = (storageKey) => {
207
299
  const stored = storage.get(storageKey);
@@ -222,7 +314,7 @@ var buildConnectUrl = (config2, params) => {
222
314
  const keyPair = getDappKeyPair(`${config2.storageKeyPrefix}_keypair`);
223
315
  const url = new URL(config2.connectUrl);
224
316
  url.searchParams.set("app_url", params.appUrl);
225
- url.searchParams.set("dapp_encryption_public_key", bs58.encode(keyPair.publicKey));
317
+ url.searchParams.set("dapp_encryption_public_key", bs582.encode(keyPair.publicKey));
226
318
  url.searchParams.set("redirect_link", params.redirectUrl);
227
319
  if (params.cluster) {
228
320
  url.searchParams.set("cluster", params.cluster);
@@ -241,8 +333,8 @@ var parseConnectResponse = (urlParams, config2) => {
241
333
  }
242
334
  try {
243
335
  const keyPair = getDappKeyPair(`${config2.storageKeyPrefix}_keypair`);
244
- const sharedSecret = nacl.box.before(bs58.decode(walletPublicKey), keyPair.secretKey);
245
- const decrypted = nacl.box.open.after(bs58.decode(data), bs58.decode(nonce), sharedSecret);
336
+ const sharedSecret = nacl.box.before(bs582.decode(walletPublicKey), keyPair.secretKey);
337
+ const decrypted = nacl.box.open.after(bs582.decode(data), bs582.decode(nonce), sharedSecret);
246
338
  if (!decrypted) {
247
339
  return null;
248
340
  }
@@ -292,7 +384,7 @@ var buildSignMessageUrl = (signUrl, config2, sessionKey, message, redirectUrl) =
292
384
  const keyPair = getDappKeyPair(`${config2.storageKeyPrefix}_keypair`);
293
385
  const sharedSecret = new Uint8Array(session.sharedSecret);
294
386
  const payload = {
295
- message: bs58.encode(new TextEncoder().encode(message)),
387
+ message: bs582.encode(new TextEncoder().encode(message)),
296
388
  session: session.session,
297
389
  display: "utf8"
298
390
  };
@@ -303,10 +395,10 @@ var buildSignMessageUrl = (signUrl, config2, sessionKey, message, redirectUrl) =
303
395
  sharedSecret
304
396
  );
305
397
  const url = new URL(signUrl);
306
- url.searchParams.set("dapp_encryption_public_key", bs58.encode(keyPair.publicKey));
307
- url.searchParams.set("nonce", bs58.encode(nonce));
398
+ url.searchParams.set("dapp_encryption_public_key", bs582.encode(keyPair.publicKey));
399
+ url.searchParams.set("nonce", bs582.encode(nonce));
308
400
  url.searchParams.set("redirect_link", redirectUrl);
309
- url.searchParams.set("payload", bs58.encode(encrypted));
401
+ url.searchParams.set("payload", bs582.encode(encrypted));
310
402
  return url.toString();
311
403
  };
312
404
  var parseSignMessageResponse = (config2, sessionKey) => {
@@ -318,7 +410,7 @@ var parseSignMessageResponse = (config2, sessionKey) => {
318
410
  if (!session) return null;
319
411
  try {
320
412
  const sharedSecret = new Uint8Array(session.sharedSecret);
321
- const decrypted = nacl.box.open.after(bs58.decode(data), bs58.decode(nonce), sharedSecret);
413
+ const decrypted = nacl.box.open.after(bs582.decode(data), bs582.decode(nonce), sharedSecret);
322
414
  if (!decrypted) return null;
323
415
  const response = JSON.parse(new TextDecoder().decode(decrypted));
324
416
  return response.signature;
@@ -327,32 +419,6 @@ var parseSignMessageResponse = (config2, sessionKey) => {
327
419
  }
328
420
  };
329
421
 
330
- // src/lib/connectors/shared/injected.ts
331
- import bs582 from "bs58";
332
- var connectEvmInjected = async () => {
333
- if (!window.ethereum) throw new Error("No injected EVM provider");
334
- const accounts = await window.ethereum.request({
335
- method: "eth_requestAccounts"
336
- });
337
- if (!accounts[0]) throw new Error("No accounts returned");
338
- const chainId = await window.ethereum.request({ method: "eth_chainId" });
339
- return connectedResult(accounts[0], { chainId: parseInt(chainId, 16) });
340
- };
341
- var connectSolanaInjected = async () => {
342
- if (!window.solana) throw new Error("No injected Solana provider");
343
- const response = await window.solana.connect();
344
- const publicKey = response.publicKey;
345
- return connectedResult(publicKey.toBase58(), { publicKey: publicKey.toBytes() });
346
- };
347
- var signSolanaInjected = async (message) => {
348
- if (!window.solana?.signMessage) {
349
- throw new Error("No injected Solana provider or signMessage not supported");
350
- }
351
- const encodedMessage = new TextEncoder().encode(message);
352
- const result = await window.solana.signMessage(encodedMessage, "utf8");
353
- return bs582.encode(new Uint8Array(result.signature));
354
- };
355
-
356
422
  // src/lib/connectors/shared/parsers.ts
357
423
  var parseEvmAccount = (account) => {
358
424
  const [, chainIdStr, address] = account.split(":");
@@ -362,8 +428,8 @@ var parseEvmAccount = (account) => {
362
428
  var parseSolanaAccount = async (account) => {
363
429
  const address = account.split(":")[2];
364
430
  if (!address) throw new Error("Invalid Solana account format");
365
- const { default: bs586 } = await import("bs58");
366
- return connectedResult(address, { publicKey: bs586.decode(address) });
431
+ const { default: bs587 } = await import("bs58");
432
+ return connectedResult(address, { publicKey: bs587.decode(address) });
367
433
  };
368
434
  var getEvmAccountFromSession = (namespaces) => {
369
435
  const account = namespaces.eip155?.accounts?.[0];
@@ -376,29 +442,6 @@ var getSolanaAccountFromSession = async (namespaces) => {
376
442
  return parseSolanaAccount(account);
377
443
  };
378
444
 
379
- // src/lib/connectors/shared/utils.ts
380
- var isMobile = () => {
381
- return typeof window !== "undefined" && /iPhone|iPad|iPod|Android/i.test(window.navigator.userAgent);
382
- };
383
- var isInWalletBrowser = (key) => {
384
- return typeof window !== "undefined" && !!window.ethereum?.[key];
385
- };
386
- var openDeeplink = (url) => {
387
- const link = document.createElement("a");
388
- link.href = url;
389
- link.click();
390
- };
391
- var waitForValue = (getValue) => {
392
- return new Promise((resolve) => {
393
- const check = () => {
394
- const value = getValue();
395
- if (value != null) resolve(value);
396
- else window.setTimeout(check, 50);
397
- };
398
- check();
399
- });
400
- };
401
-
402
445
  // src/lib/walletconnect/client.ts
403
446
  import { SignClient } from "@walletconnect/sign-client";
404
447
  var signClient = null;
@@ -568,11 +611,11 @@ var disconnectWcOrSolana = async () => {
568
611
  }
569
612
  };
570
613
  var createWcEvmConnector = (config2) => {
571
- const walletConfig = WALLETS.find((w) => w.id === config2.walletId);
614
+ const walletConfig2 = WALLETS.find((w) => w.id === config2.walletId);
572
615
  const getDeeplink = createDeeplink(config2.wcDeeplink);
573
616
  const isInWallet = () => isInWalletBrowser(config2.injectedKey);
574
617
  return {
575
- ...walletConfig,
618
+ ...walletConfig2,
576
619
  type: "evm",
577
620
  wallet: {
578
621
  _connector: null,
@@ -613,11 +656,11 @@ var createWcEvmConnector = (config2) => {
613
656
  };
614
657
  };
615
658
  var createWcSolanaConnector = (config2) => {
616
- const walletConfig = WALLETS.find((w) => w.id === config2.walletId);
659
+ const walletConfig2 = WALLETS.find((w) => w.id === config2.walletId);
617
660
  const getDeeplink = createDeeplink(config2.wcDeeplink);
618
661
  const isInWallet = () => isInWalletBrowser(config2.injectedKey);
619
662
  return {
620
- ...walletConfig,
663
+ ...walletConfig2,
621
664
  type: "solana",
622
665
  wallet: {
623
666
  _provider: null,
@@ -657,6 +700,11 @@ var createWcSolanaConnector = (config2) => {
657
700
  var PHANTOM_CONNECT_URL = "https://phantom.app/ul/v1/connect";
658
701
  var PHANTOM_SIGN_MESSAGE_URL = "https://phantom.app/ul/v1/signMessage";
659
702
  var PHANTOM_BROWSE_URL = "https://phantom.app/ul/browse";
703
+ var createPhantomSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
704
+ walletId: "phantom",
705
+ browseUrl: PHANTOM_BROWSE_URL,
706
+ injectedKey: "isPhantom"
707
+ });
660
708
  var PHANTOM_CONFIG = {
661
709
  connectUrl: PHANTOM_CONNECT_URL,
662
710
  storageKeyPrefix: "phantom_mobile",
@@ -753,11 +801,24 @@ var METAMASK_CONFIG = {
753
801
  wcDeeplink: "https://metamask.app.link/wc",
754
802
  injectedKey: "isMetaMask"
755
803
  };
804
+ var METAMASK_BROWSE_URL = "https://metamask.app.link/dapp";
756
805
  var createMetaMaskEvmConnector = () => createWcEvmConnector(METAMASK_CONFIG);
806
+ var createMetaMaskSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
807
+ walletId: "metamask",
808
+ browseUrl: METAMASK_BROWSE_URL,
809
+ injectedKey: "isMetaMask",
810
+ stripProtocol: true
811
+ });
757
812
 
758
813
  // src/lib/connectors/solflare.ts
759
814
  var SOLFLARE_CONNECT_URL = "https://solflare.com/ul/v1/connect";
760
815
  var SOLFLARE_SIGN_MESSAGE_URL = "https://solflare.com/ul/v1/signMessage";
816
+ var SOLFLARE_BROWSE_URL = "https://solflare.com/ul/v1/browse";
817
+ var createSolflareSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
818
+ walletId: "solflare",
819
+ browseUrl: SOLFLARE_BROWSE_URL,
820
+ injectedKey: "isSolflare"
821
+ });
761
822
  var SOLFLARE_CONFIG = {
762
823
  connectUrl: SOLFLARE_CONNECT_URL,
763
824
  storageKeyPrefix: "solflare_mobile",
@@ -827,8 +888,14 @@ var TRUST_CONFIG = {
827
888
  wcDeeplink: "https://link.trustwallet.com/wc",
828
889
  injectedKey: "isTrust"
829
890
  };
891
+ var TRUST_BROWSE_URL = "https://link.trustwallet.com/open_url";
830
892
  var createTrustEvmMobileConnector = () => createWcEvmConnector(TRUST_CONFIG);
831
893
  var createTrustSolanaMobileConnector = () => createWcSolanaConnector(TRUST_CONFIG);
894
+ var createTrustSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
895
+ walletId: "trust",
896
+ browseUrl: TRUST_BROWSE_URL,
897
+ injectedKey: "isTrust"
898
+ });
832
899
 
833
900
  // src/lib/connectors/rainbow.ts
834
901
  var RAINBOW_CONFIG = {
@@ -844,8 +911,14 @@ var EXODUS_CONFIG = {
844
911
  wcDeeplink: "https://exodus.com/wc",
845
912
  injectedKey: "isExodus"
846
913
  };
914
+ var EXODUS_BROWSE_URL = "https://exodus.com/m/browser";
847
915
  var createExodusEvmMobileConnector = () => createWcEvmConnector(EXODUS_CONFIG);
848
916
  var createExodusSolanaMobileConnector = () => createWcSolanaConnector(EXODUS_CONFIG);
917
+ var createExodusSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
918
+ walletId: "exodus",
919
+ browseUrl: EXODUS_BROWSE_URL,
920
+ injectedKey: "isExodus"
921
+ });
849
922
 
850
923
  // src/lib/connectors/binance.ts
851
924
  var BINANCE_CONFIG = {
@@ -853,8 +926,121 @@ var BINANCE_CONFIG = {
853
926
  wcDeeplink: "bnc://app.binance.com/cedefi/wc",
854
927
  injectedKey: "isBinance"
855
928
  };
929
+ var buildBinanceBrowseUrl = () => `bnc://app.binance.com/cedefi/dapp?url=${encodeURIComponent(window.location.href)}`;
856
930
  var createBinanceEvmConnector = () => createWcEvmConnector(BINANCE_CONFIG);
857
931
  var createBinanceSolanaConnector = () => createWcSolanaConnector(BINANCE_CONFIG);
932
+ var createBinanceSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
933
+ walletId: "binance",
934
+ injectedKey: "isBinance",
935
+ buildUrl: buildBinanceBrowseUrl
936
+ });
937
+
938
+ // src/lib/connectors/okx.ts
939
+ var buildOkxBrowseUrl = () => {
940
+ const dappUrl = window.location.href;
941
+ const deepLink = `okx://wallet/dapp/url?dappUrl=${encodeURIComponent(dappUrl)}`;
942
+ return `https://web3.okx.com/download?deeplink=${encodeURIComponent(deepLink)}`;
943
+ };
944
+ var createOkxSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
945
+ walletId: "okx",
946
+ injectedKey: "isOkxWallet",
947
+ buildUrl: buildOkxBrowseUrl
948
+ });
949
+
950
+ // src/lib/connectors/coinbase.ts
951
+ var buildCoinbaseBrowseUrl = () => `cbwallet://dapp?url=${encodeURIComponent(window.location.href)}`;
952
+ var createCoinbaseSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
953
+ walletId: "coinbase",
954
+ injectedKey: "isCoinbaseWallet",
955
+ buildUrl: buildCoinbaseBrowseUrl
956
+ });
957
+
958
+ // src/lib/connectors/bitget.ts
959
+ var BITGET_BROWSE_URL = "https://bkcode.vip/dapp";
960
+ var createBitgetSolanaDappBrowserConnector = () => createDappBrowserSolanaConnector({
961
+ walletId: "bitget",
962
+ browseUrl: BITGET_BROWSE_URL,
963
+ injectedKey: "isBitKeep",
964
+ stripProtocol: true
965
+ });
966
+
967
+ // src/lib/connectors/walletconnect.ts
968
+ import bs584 from "bs58";
969
+ var walletConfig = WALLETS.find((w) => w.id === "walletconnect");
970
+ var disconnectWc2 = async () => {
971
+ if (getCurrentSession()) {
972
+ await disconnectWalletConnect();
973
+ }
974
+ };
975
+ var createWalletConnectEvmConnector = () => {
976
+ if (isMobile()) return null;
977
+ return {
978
+ id: walletConfig.id,
979
+ name: walletConfig.name,
980
+ icon: walletConfig.icon,
981
+ type: "evm",
982
+ installed: false,
983
+ wallet: {
984
+ _connector: null,
985
+ connect: async () => {
986
+ return connectViaWalletConnect(EVM_WC_CONFIG, getEvmAccountFromSession);
987
+ },
988
+ disconnect: disconnectWc2,
989
+ signMessage: async (message) => {
990
+ const session = getCurrentSession();
991
+ if (!session) {
992
+ throw new Error("No WalletConnect session");
993
+ }
994
+ const account = session.namespaces.eip155?.accounts?.[0];
995
+ if (!account) {
996
+ throw new Error("No EVM account in session");
997
+ }
998
+ const address = account.split(":")[2];
999
+ const result = await requestWalletConnect(
1000
+ "personal_sign",
1001
+ [message, address],
1002
+ WC_CHAINS.EVM_MAINNET
1003
+ );
1004
+ return result;
1005
+ }
1006
+ }
1007
+ };
1008
+ };
1009
+ var createWalletConnectSolanaConnector = () => {
1010
+ if (isMobile()) return null;
1011
+ return {
1012
+ id: walletConfig.id,
1013
+ name: walletConfig.name,
1014
+ icon: walletConfig.icon,
1015
+ type: "solana",
1016
+ installed: false,
1017
+ wallet: {
1018
+ _provider: null,
1019
+ connect: async () => {
1020
+ return connectViaWalletConnect(SOLANA_WC_CONFIG, getSolanaAccountFromSession);
1021
+ },
1022
+ disconnect: disconnectWc2,
1023
+ signMessage: async (message) => {
1024
+ const session = getCurrentSession();
1025
+ if (!session) {
1026
+ throw new Error("No WalletConnect session");
1027
+ }
1028
+ const account = session.namespaces.solana?.accounts?.[0];
1029
+ if (!account) {
1030
+ throw new Error("No Solana account in session");
1031
+ }
1032
+ const pubkey = account.split(":")[2];
1033
+ const messageBytes = new TextEncoder().encode(message);
1034
+ const result = await requestWalletConnect(
1035
+ "solana_signMessage",
1036
+ { message: bs584.encode(messageBytes), pubkey },
1037
+ WC_CHAINS.SOLANA_MAINNET
1038
+ );
1039
+ return result.signature;
1040
+ }
1041
+ }
1042
+ };
1043
+ };
858
1044
 
859
1045
  // src/lib/evm/connectors.ts
860
1046
  var EVM_FALLBACK_CONNECTORS = [
@@ -924,7 +1110,7 @@ import {
924
1110
  isWalletAdapterCompatibleStandardWallet
925
1111
  } from "@solana/wallet-adapter-base";
926
1112
  import { getWallets } from "@wallet-standard/app";
927
- import bs584 from "bs58";
1113
+ import bs585 from "bs58";
928
1114
  var createSolanaConnector = (provider) => {
929
1115
  const id = normalizeSolanaWalletId(provider.name.toLowerCase().replace(/\s+/g, "-"));
930
1116
  const connector = {
@@ -968,7 +1154,7 @@ var createSolanaConnector = (provider) => {
968
1154
  const result = await signFeature.signMessage({ message: encodedMessage, account });
969
1155
  const signature = result[0]?.signature;
970
1156
  if (!signature) throw new Error("No signature returned");
971
- return bs584.encode(signature);
1157
+ return bs585.encode(signature);
972
1158
  }
973
1159
  }
974
1160
  };
@@ -985,16 +1171,59 @@ var createSolanaMobileConnector = (connector) => ({
985
1171
  }
986
1172
  }
987
1173
  });
988
- var SOLANA_FALLBACK_CONNECTORS = [
1174
+ var SOLANA_FALLBACK_CONNECTORS = isMobile() ? [
1175
+ {
1176
+ id: "phantom",
1177
+ create: () => createSolanaMobileConnector(createPhantomSolanaDappBrowserConnector())
1178
+ },
1179
+ {
1180
+ id: "solflare",
1181
+ create: () => createSolanaMobileConnector(createSolflareSolanaDappBrowserConnector())
1182
+ },
1183
+ {
1184
+ id: "metamask",
1185
+ create: () => createSolanaMobileConnector(createMetaMaskSolanaDappBrowserConnector())
1186
+ },
1187
+ {
1188
+ id: "okx",
1189
+ create: () => createSolanaMobileConnector(createOkxSolanaDappBrowserConnector())
1190
+ },
1191
+ {
1192
+ id: "coinbase",
1193
+ create: () => createSolanaMobileConnector(createCoinbaseSolanaDappBrowserConnector())
1194
+ },
1195
+ {
1196
+ id: "bitget",
1197
+ create: () => createSolanaMobileConnector(createBitgetSolanaDappBrowserConnector())
1198
+ },
1199
+ {
1200
+ id: "trust",
1201
+ create: () => createSolanaMobileConnector(createTrustSolanaDappBrowserConnector())
1202
+ },
1203
+ {
1204
+ id: "binance",
1205
+ create: () => createSolanaMobileConnector(createBinanceSolanaDappBrowserConnector())
1206
+ },
1207
+ {
1208
+ id: "exodus",
1209
+ create: () => createSolanaMobileConnector(createExodusSolanaDappBrowserConnector())
1210
+ }
1211
+ ] : [
989
1212
  { id: "phantom", create: () => createSolanaMobileConnector(createPhantomSolanaConnector()) },
990
1213
  // { id: 'metamask', create: () => createSolanaMobileConnector(createMetaMaskSolanaConnector()) },
991
1214
  {
992
1215
  id: "solflare",
993
1216
  create: () => createSolanaMobileConnector(createSolflareSolanaMobileConnector())
994
1217
  },
995
- { id: "trust", create: () => createSolanaMobileConnector(createTrustSolanaMobileConnector()) },
1218
+ {
1219
+ id: "trust",
1220
+ create: () => createSolanaMobileConnector(createTrustSolanaMobileConnector())
1221
+ },
996
1222
  { id: "binance", create: () => createSolanaMobileConnector(createBinanceSolanaConnector()) },
997
- { id: "exodus", create: () => createSolanaMobileConnector(createExodusSolanaMobileConnector()) }
1223
+ {
1224
+ id: "exodus",
1225
+ create: () => createSolanaMobileConnector(createExodusSolanaMobileConnector())
1226
+ }
998
1227
  ];
999
1228
  var getSolanaWallets = () => {
1000
1229
  const { get } = getWallets();
@@ -1104,7 +1333,12 @@ var useEvmWallet = (options) => {
1104
1333
  const [connectedConnector, setConnectedConnector] = createSignal(null);
1105
1334
  onMount(() => {
1106
1335
  createEvmConfig(options.chains);
1107
- setEvmConnectors(getEvmConnectors());
1336
+ const connectors = getEvmConnectors();
1337
+ const wcConnector = createWalletConnectEvmConnector();
1338
+ if (wcConnector) {
1339
+ connectors.unshift(wcConnector);
1340
+ }
1341
+ setEvmConnectors(connectors);
1108
1342
  const unsubscribe = watchEvmConnections((connections) => {
1109
1343
  const connection = connections[0];
1110
1344
  if (connection && connection.accounts[0]) {
@@ -1153,7 +1387,12 @@ var useSolanaWallet = () => {
1153
1387
  null
1154
1388
  );
1155
1389
  onMount2(() => {
1156
- setSolanaConnectors(getSolanaWallets());
1390
+ const connectors = getSolanaWallets();
1391
+ const wcConnector = createWalletConnectSolanaConnector();
1392
+ if (wcConnector) {
1393
+ connectors.unshift(wcConnector);
1394
+ }
1395
+ setSolanaConnectors(connectors);
1157
1396
  const unsubscribeWallets = onSolanaWalletsChange(setSolanaConnectors);
1158
1397
  const unsubscribeConnection = watchSolanaConnection((state) => {
1159
1398
  setSolanaConnection(state.connection);
@@ -1206,7 +1445,7 @@ var useSolanaWallet = () => {
1206
1445
  };
1207
1446
 
1208
1447
  // src/lib/context/hooks/useWalletConnect.ts
1209
- import bs585 from "bs58";
1448
+ import bs586 from "bs58";
1210
1449
  import { onCleanup as onCleanup3, onMount as onMount3 } from "solid-js";
1211
1450
  var useWalletConnect = (options) => {
1212
1451
  onMount3(async () => {
@@ -1261,7 +1500,7 @@ var useWalletConnect = (options) => {
1261
1500
  const messageBytes = new TextEncoder().encode(message);
1262
1501
  const result = await requestWalletConnect(
1263
1502
  "solana_signMessage",
1264
- { message: bs585.encode(messageBytes), pubkey },
1503
+ { message: bs586.encode(messageBytes), pubkey },
1265
1504
  WC_CHAINS.SOLANA_MAINNET
1266
1505
  );
1267
1506
  return result.signature;
@@ -1368,11 +1607,13 @@ export {
1368
1607
  checkPhantomSignCallback,
1369
1608
  checkSolflareSignCallback,
1370
1609
  createEvmConfig,
1610
+ getCurrentSession,
1371
1611
  getEvmConfig,
1372
1612
  getEvmConnectors,
1373
1613
  getSolanaWallets,
1374
1614
  initWalletConnect,
1375
1615
  onSolanaWalletsChange,
1616
+ onWalletConnectSessionChange,
1376
1617
  reconnectSolana,
1377
1618
  useWallet,
1378
1619
  watchEvmConnections,
@@ -2,3 +2,4 @@ import type { EvmWalletConnector } from '../evm';
2
2
  import type { SolanaWalletConnector } from '../solana';
3
3
  export declare const createBinanceEvmConnector: () => EvmWalletConnector;
4
4
  export declare const createBinanceSolanaConnector: () => SolanaWalletConnector;
5
+ export declare const createBinanceSolanaDappBrowserConnector: () => SolanaWalletConnector;
@@ -0,0 +1,2 @@
1
+ import type { SolanaWalletConnector } from '../solana';
2
+ export declare const createBitgetSolanaDappBrowserConnector: () => SolanaWalletConnector;
@@ -0,0 +1,2 @@
1
+ import type { SolanaWalletConnector } from '../solana';
2
+ export declare const createCoinbaseSolanaDappBrowserConnector: () => SolanaWalletConnector;
@@ -2,3 +2,4 @@ import type { EvmWalletConnector } from '../evm';
2
2
  import type { SolanaWalletConnector } from '../solana';
3
3
  export declare const createExodusEvmMobileConnector: () => EvmWalletConnector;
4
4
  export declare const createExodusSolanaMobileConnector: () => SolanaWalletConnector;
5
+ export declare const createExodusSolanaDappBrowserConnector: () => SolanaWalletConnector;
@@ -1,7 +1,11 @@
1
- export { createPhantomEvmConnector, createPhantomSolanaConnector, isPhantomMobilePending, handlePhantomMobileCallback, restorePhantomMobileSession, isPhantomSignPending, handlePhantomSignCallback, } from './phantom';
2
- export { createMetaMaskEvmConnector, createMetaMaskSolanaConnector } from './metamask';
3
- export { createSolflareSolanaMobileConnector, isSolflareMobilePending, handleSolflareMobileCallback, restoreSolflareMobileSession, isSolflareSignPending, handleSolflareSignCallback, } from './solflare';
4
- export { createTrustEvmMobileConnector, createTrustSolanaMobileConnector } from './trust';
1
+ export { createPhantomEvmConnector, createPhantomSolanaConnector, createPhantomSolanaDappBrowserConnector, isPhantomMobilePending, handlePhantomMobileCallback, restorePhantomMobileSession, isPhantomSignPending, handlePhantomSignCallback, } from './phantom';
2
+ export { createMetaMaskEvmConnector, createMetaMaskSolanaConnector, createMetaMaskSolanaDappBrowserConnector, } from './metamask';
3
+ export { createSolflareSolanaMobileConnector, createSolflareSolanaDappBrowserConnector, isSolflareMobilePending, handleSolflareMobileCallback, restoreSolflareMobileSession, isSolflareSignPending, handleSolflareSignCallback, } from './solflare';
4
+ export { createTrustEvmMobileConnector, createTrustSolanaMobileConnector, createTrustSolanaDappBrowserConnector, } from './trust';
5
5
  export { createRainbowEvmMobileConnector } from './rainbow';
6
- export { createExodusEvmMobileConnector, createExodusSolanaMobileConnector } from './exodus';
7
- export { createBinanceEvmConnector, createBinanceSolanaConnector } from './binance';
6
+ export { createExodusEvmMobileConnector, createExodusSolanaMobileConnector, createExodusSolanaDappBrowserConnector, } from './exodus';
7
+ export { createBinanceEvmConnector, createBinanceSolanaConnector, createBinanceSolanaDappBrowserConnector, } from './binance';
8
+ export { createOkxSolanaDappBrowserConnector } from './okx';
9
+ export { createCoinbaseSolanaDappBrowserConnector } from './coinbase';
10
+ export { createBitgetSolanaDappBrowserConnector } from './bitget';
11
+ export { createWalletConnectEvmConnector, createWalletConnectSolanaConnector, } from './walletconnect';
@@ -2,3 +2,4 @@ import type { EvmWalletConnector } from '../evm';
2
2
  import type { SolanaWalletConnector } from '../solana';
3
3
  export declare const createMetaMaskEvmConnector: () => EvmWalletConnector;
4
4
  export declare const createMetaMaskSolanaConnector: () => SolanaWalletConnector;
5
+ export declare const createMetaMaskSolanaDappBrowserConnector: () => SolanaWalletConnector;
@@ -0,0 +1,2 @@
1
+ import type { SolanaWalletConnector } from '../solana';
2
+ export declare const createOkxSolanaDappBrowserConnector: () => SolanaWalletConnector;
@@ -1,6 +1,7 @@
1
1
  import { type ConnectedResult } from '../core';
2
2
  import type { EvmWalletConnector } from '../evm';
3
3
  import type { SolanaWalletConnector } from '../solana';
4
+ export declare const createPhantomSolanaDappBrowserConnector: () => SolanaWalletConnector;
4
5
  export declare const createPhantomEvmConnector: () => EvmWalletConnector;
5
6
  export declare const createPhantomSolanaConnector: () => SolanaWalletConnector;
6
7
  export declare const isPhantomMobilePending: () => boolean;
@@ -0,0 +1,10 @@
1
+ import type { SolanaWalletConnector } from '../../solana';
2
+ import { type WalletId } from '../../wallets';
3
+ export interface DappBrowserConfig {
4
+ walletId: WalletId;
5
+ injectedKey: string;
6
+ browseUrl?: string;
7
+ stripProtocol?: boolean;
8
+ buildUrl?: () => string;
9
+ }
10
+ export declare const createDappBrowserSolanaConnector: (config: DappBrowserConfig) => SolanaWalletConnector;
@@ -1,4 +1,5 @@
1
1
  export * from './constants';
2
+ export * from './dapp-browser';
2
3
  export * from './deeplink';
3
4
  export * from './injected';
4
5
  export * from './parsers';
@@ -1,6 +1,7 @@
1
1
  import { type ConnectedResult } from '../core';
2
2
  import type { SolanaWalletConnector } from '../solana';
3
3
  import { type StoredSession } from './shared';
4
+ export declare const createSolflareSolanaDappBrowserConnector: () => SolanaWalletConnector;
4
5
  export declare const createSolflareSolanaMobileConnector: () => SolanaWalletConnector;
5
6
  export declare const isSolflareMobilePending: () => boolean;
6
7
  export declare const handleSolflareMobileCallback: () => ConnectedResult | null;
@@ -2,3 +2,4 @@ import type { EvmWalletConnector } from '../evm';
2
2
  import type { SolanaWalletConnector } from '../solana';
3
3
  export declare const createTrustEvmMobileConnector: () => EvmWalletConnector;
4
4
  export declare const createTrustSolanaMobileConnector: () => SolanaWalletConnector;
5
+ export declare const createTrustSolanaDappBrowserConnector: () => SolanaWalletConnector;