@dynamic-labs/bitcoin 3.4.4 → 3.4.6

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.
Files changed (22) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +8 -7
  5. package/src/connectors/BitcoinSatsConnectConnector/BitcoinSatsConnectConnector.cjs +28 -14
  6. package/src/connectors/BitcoinSatsConnectConnector/BitcoinSatsConnectConnector.d.ts +5 -0
  7. package/src/connectors/BitcoinSatsConnectConnector/BitcoinSatsConnectConnector.js +28 -14
  8. package/src/connectors/BitcoinWalletConnector.d.ts +2 -1
  9. package/src/connectors/{BitcoinSatsConnectLegacyConnector/BitcoinSatsConnectLegacyConnector.cjs → MagicEdenConnector/MagicEdenConnector.cjs} +21 -48
  10. package/src/connectors/{BitcoinSatsConnectLegacyConnector/BitcoinSatsConnectLegacyConnector.d.ts → MagicEdenConnector/MagicEdenConnector.d.ts} +8 -1
  11. package/src/connectors/{BitcoinSatsConnectLegacyConnector/BitcoinSatsConnectLegacyConnector.js → MagicEdenConnector/MagicEdenConnector.js} +23 -50
  12. package/src/connectors/MagicEdenConnector/index.d.ts +1 -0
  13. package/src/connectors/index.d.ts +1 -1
  14. package/src/index.cjs +7 -5
  15. package/src/index.d.ts +1 -1
  16. package/src/index.js +8 -6
  17. package/src/utils/fetchSatsConnectConnectors/fetchSatsConnectConnectors.cjs +7 -17
  18. package/src/utils/fetchSatsConnectConnectors/fetchSatsConnectConnectors.d.ts +1 -1
  19. package/src/utils/fetchSatsConnectConnectors/fetchSatsConnectConnectors.js +7 -17
  20. package/src/utils/supportsSatsConnect.cjs +1 -0
  21. package/src/utils/supportsSatsConnect.js +1 -0
  22. package/src/connectors/BitcoinSatsConnectLegacyConnector/index.d.ts +0 -1
package/CHANGELOG.md CHANGED
@@ -1,4 +1,30 @@
1
1
 
2
+ ### [3.4.6](https://github.com/dynamic-labs/DynamicAuth/compare/v3.4.5...v3.4.6) (2024-10-31)
3
+
4
+
5
+ ### Features
6
+
7
+ * add support for compass and leap wallets ([ab170c9](https://github.com/dynamic-labs/DynamicAuth/commit/ab170c962099ed6356d2f31c947b122f1aa7ec73))
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * prevent use-wallet-options from reading empty wallet-book ([#7320](https://github.com/dynamic-labs/DynamicAuth/issues/7320)) ([24c6cb1](https://github.com/dynamic-labs/DynamicAuth/commit/24c6cb14ce324925b120d363e029e29b72560895))
13
+ * sats-connect wallets not prompting correctly to sync account when making a transaction ([#7311](https://github.com/dynamic-labs/DynamicAuth/issues/7311)) ([#7312](https://github.com/dynamic-labs/DynamicAuth/issues/7312)) ([2026be4](https://github.com/dynamic-labs/DynamicAuth/commit/2026be412edcbb7e98341a5a5b2a3bd75ffdb83f))
14
+ * update check for wallet provider event listeners support ([#7303](https://github.com/dynamic-labs/DynamicAuth/issues/7303)) ([#7304](https://github.com/dynamic-labs/DynamicAuth/issues/7304)) ([1e91c76](https://github.com/dynamic-labs/DynamicAuth/commit/1e91c767ebe078f63c27884e4a8e7729d49b2114))
15
+
16
+ ### [3.4.5](https://github.com/dynamic-labs/DynamicAuth/compare/v3.4.4...v3.4.5) (2024-10-30)
17
+
18
+
19
+ ### Features
20
+
21
+ * add support for epicgames social ([#7222](https://github.com/dynamic-labs/DynamicAuth/issues/7222)) ([f34f027](https://github.com/dynamic-labs/DynamicAuth/commit/f34f02738a4d163792ff457dfe053335a4d57328))
22
+
23
+
24
+ ### Bug Fixes
25
+
26
+ * show connect view when user selects a wallet to connect with ([#7211](https://github.com/dynamic-labs/DynamicAuth/issues/7211)) ([c7d3ab0](https://github.com/dynamic-labs/DynamicAuth/commit/c7d3ab00d4ced00128e0e7bde908165707a15a5c))
27
+
2
28
  ### [3.4.4](https://github.com/dynamic-labs/DynamicAuth/compare/v3.4.3...v3.4.4) (2024-10-24)
3
29
 
4
30
  ### [3.4.3](https://github.com/dynamic-labs/DynamicAuth/compare/v3.4.2...v3.4.3) (2024-10-23)
package/package.cjs CHANGED
@@ -3,6 +3,6 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "3.4.4";
6
+ var version = "3.4.6";
7
7
 
8
8
  exports.version = version;
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  'use client'
2
- var version = "3.4.4";
2
+ var version = "3.4.6";
3
3
 
4
4
  export { version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/bitcoin",
3
- "version": "3.4.4",
3
+ "version": "3.4.6",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/dynamic-labs/dynamic-auth.git",
@@ -27,16 +27,17 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@btckit/types": "0.0.19",
30
- "@dynamic-labs/sdk-api-core": "0.0.547",
30
+ "@dynamic-labs/sdk-api-core": "0.0.559",
31
31
  "@wallet-standard/app": "1.0.1",
32
32
  "@wallet-standard/base": "1.0.1",
33
33
  "bitcoinjs-lib": "6.1.5",
34
34
  "sats-connect": "2.8.0",
35
- "@dynamic-labs/assert-package-version": "3.4.4",
36
- "@dynamic-labs/types": "3.4.4",
37
- "@dynamic-labs/utils": "3.4.4",
38
- "@dynamic-labs/wallet-book": "3.4.4",
39
- "@dynamic-labs/wallet-connector-core": "3.4.4",
35
+ "jsontokens": "4.0.1",
36
+ "@dynamic-labs/assert-package-version": "3.4.6",
37
+ "@dynamic-labs/types": "3.4.6",
38
+ "@dynamic-labs/utils": "3.4.6",
39
+ "@dynamic-labs/wallet-book": "3.4.6",
40
+ "@dynamic-labs/wallet-connector-core": "3.4.6",
40
41
  "eventemitter3": "5.0.1"
41
42
  },
42
43
  "peerDependencies": {}
@@ -52,22 +52,30 @@ class BitcoinSatsConnectConnector extends BitcoinWalletConnector.BitcoinWalletCo
52
52
  return mainAddress;
53
53
  });
54
54
  }
55
+ /**
56
+ * If is inAppBrowser experience, redirects to the inAppBrowser template.
57
+ * Returns true if redirection was triggered.
58
+ */
59
+ handleInAppBrowserGetAddress() {
60
+ var _a;
61
+ const wallet = walletBook.findWalletBookWallet(this.walletBook, this.key);
62
+ const inAppBrowserUrl = (_a = wallet === null || wallet === void 0 ? void 0 : wallet.mobile) === null || _a === void 0 ? void 0 : _a.inAppBrowser;
63
+ if (!utils.isMobile() ||
64
+ this.isInstalledOnBrowser() ||
65
+ !inAppBrowserUrl ||
66
+ this.mobileExperience !== 'in-app-browser')
67
+ return false;
68
+ const inAppBrowserTemplate = utils.template(inAppBrowserUrl);
69
+ const deepLink = inAppBrowserTemplate({
70
+ encodedDappURI: encodeURIComponent(window.location.toString()),
71
+ });
72
+ window.location.href = deepLink;
73
+ return true;
74
+ }
55
75
  getAddress() {
56
76
  return _tslib.__awaiter(this, void 0, void 0, function* () {
57
- var _a;
58
- const wallet = walletBook.findWalletBookWallet(this.walletBook, this.key);
59
- const inAppBrowserUrl = (_a = wallet === null || wallet === void 0 ? void 0 : wallet.mobile) === null || _a === void 0 ? void 0 : _a.inAppBrowser;
60
- if (utils.isMobile() &&
61
- !this.isInstalledOnBrowser() &&
62
- inAppBrowserUrl &&
63
- this.mobileExperience === 'in-app-browser') {
64
- const inAppBrowserTemplate = utils.template(inAppBrowserUrl);
65
- const deepLink = inAppBrowserTemplate({
66
- encodedDappURI: encodeURIComponent(window.location.toString()),
67
- });
68
- window.location.href = deepLink;
77
+ if (this.handleInAppBrowserGetAddress())
69
78
  return;
70
- }
71
79
  try {
72
80
  // requesting permissions on initial connect will avoid connection prompt for other requests
73
81
  const permissionResponse = yield satsConnect.request('wallet_requestPermissions', undefined);
@@ -243,13 +251,19 @@ class BitcoinSatsConnectConnector extends BitcoinWalletConnector.BitcoinWalletCo
243
251
  });
244
252
  }
245
253
  validateActiveWallet(expectedAddress) {
254
+ const _super = Object.create(null, {
255
+ validateActiveWallet: { get: () => super.validateActiveWallet }
256
+ });
246
257
  return _tslib.__awaiter(this, void 0, void 0, function* () {
247
258
  // TODO: this is a workaround to avoid extra connecting prompt for xverse
248
259
  // we should revisit it once xverse releases a new version with bug fixes
260
+ if (this.key !== 'xverse') {
261
+ yield _super.validateActiveWallet.call(this, expectedAddress);
262
+ return;
263
+ }
249
264
  walletConnectorCore.logger.debug('validateActiveWallet - skipping validation for xverse', {
250
265
  expectedAddress,
251
266
  });
252
- return;
253
267
  });
254
268
  }
255
269
  handleXverseAccountChange() {
@@ -8,6 +8,11 @@ export declare abstract class BitcoinSatsConnectConnector extends BitcoinWalletC
8
8
  constructor(opts: BitcoinWalletConnectorOpts);
9
9
  private getGenericUserCancelledError;
10
10
  private getAddresses;
11
+ /**
12
+ * If is inAppBrowser experience, redirects to the inAppBrowser template.
13
+ * Returns true if redirection was triggered.
14
+ */
15
+ protected handleInAppBrowserGetAddress(): boolean;
11
16
  getAddress(): Promise<string | undefined>;
12
17
  signMessage(messageToSign: string, withAddress: string): Promise<string | undefined>;
13
18
  sendBitcoin(transaction: BitcoinTransaction): Promise<string | undefined>;
@@ -48,22 +48,30 @@ class BitcoinSatsConnectConnector extends BitcoinWalletConnector {
48
48
  return mainAddress;
49
49
  });
50
50
  }
51
+ /**
52
+ * If is inAppBrowser experience, redirects to the inAppBrowser template.
53
+ * Returns true if redirection was triggered.
54
+ */
55
+ handleInAppBrowserGetAddress() {
56
+ var _a;
57
+ const wallet = findWalletBookWallet(this.walletBook, this.key);
58
+ const inAppBrowserUrl = (_a = wallet === null || wallet === void 0 ? void 0 : wallet.mobile) === null || _a === void 0 ? void 0 : _a.inAppBrowser;
59
+ if (!isMobile() ||
60
+ this.isInstalledOnBrowser() ||
61
+ !inAppBrowserUrl ||
62
+ this.mobileExperience !== 'in-app-browser')
63
+ return false;
64
+ const inAppBrowserTemplate = template(inAppBrowserUrl);
65
+ const deepLink = inAppBrowserTemplate({
66
+ encodedDappURI: encodeURIComponent(window.location.toString()),
67
+ });
68
+ window.location.href = deepLink;
69
+ return true;
70
+ }
51
71
  getAddress() {
52
72
  return __awaiter(this, void 0, void 0, function* () {
53
- var _a;
54
- const wallet = findWalletBookWallet(this.walletBook, this.key);
55
- const inAppBrowserUrl = (_a = wallet === null || wallet === void 0 ? void 0 : wallet.mobile) === null || _a === void 0 ? void 0 : _a.inAppBrowser;
56
- if (isMobile() &&
57
- !this.isInstalledOnBrowser() &&
58
- inAppBrowserUrl &&
59
- this.mobileExperience === 'in-app-browser') {
60
- const inAppBrowserTemplate = template(inAppBrowserUrl);
61
- const deepLink = inAppBrowserTemplate({
62
- encodedDappURI: encodeURIComponent(window.location.toString()),
63
- });
64
- window.location.href = deepLink;
73
+ if (this.handleInAppBrowserGetAddress())
65
74
  return;
66
- }
67
75
  try {
68
76
  // requesting permissions on initial connect will avoid connection prompt for other requests
69
77
  const permissionResponse = yield request('wallet_requestPermissions', undefined);
@@ -239,13 +247,19 @@ class BitcoinSatsConnectConnector extends BitcoinWalletConnector {
239
247
  });
240
248
  }
241
249
  validateActiveWallet(expectedAddress) {
250
+ const _super = Object.create(null, {
251
+ validateActiveWallet: { get: () => super.validateActiveWallet }
252
+ });
242
253
  return __awaiter(this, void 0, void 0, function* () {
243
254
  // TODO: this is a workaround to avoid extra connecting prompt for xverse
244
255
  // we should revisit it once xverse releases a new version with bug fixes
256
+ if (this.key !== 'xverse') {
257
+ yield _super.validateActiveWallet.call(this, expectedAddress);
258
+ return;
259
+ }
245
260
  logger.debug('validateActiveWallet - skipping validation for xverse', {
246
261
  expectedAddress,
247
262
  });
248
- return;
249
263
  });
250
264
  }
251
265
  handleXverseAccountChange() {
@@ -1,6 +1,6 @@
1
1
  import { type EventEmitter } from 'eventemitter3';
2
2
  import type { Wallet } from '@wallet-standard/base';
3
- import { Chain, IBitcoinWalletConnector, WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
3
+ import { Chain, IBitcoinWalletConnector, WalletConnectorBase, WalletMetadata } from '@dynamic-labs/wallet-connector-core';
4
4
  import { WalletBookSchema, WalletSchema } from '@dynamic-labs/wallet-book';
5
5
  import { JwtVerifiedCredential, WalletAdditionalAddress } from '@dynamic-labs/sdk-api-core';
6
6
  import { IBitcoinSessionCache } from '../BitcoinLocalStorageCache';
@@ -10,6 +10,7 @@ export type BitcoinWalletConnectorOpts = {
10
10
  walletBook: WalletBookSchema;
11
11
  walletData: WalletSchema;
12
12
  overrideKey?: string;
13
+ metadata?: WalletMetadata;
13
14
  };
14
15
  export declare abstract class BitcoinWalletConnector extends WalletConnectorBase<typeof BitcoinWallet> implements IBitcoinWalletConnector {
15
16
  cache: IBitcoinSessionCache;
@@ -4,46 +4,29 @@
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../../../_virtual/_tslib.cjs');
7
+ var jsontokens = require('jsontokens');
7
8
  var satsConnect = require('sats-connect');
8
9
  var utils = require('@dynamic-labs/utils');
9
- var walletBook = require('@dynamic-labs/wallet-book');
10
10
  var _const = require('../../const.cjs');
11
11
  require('bitcoinjs-lib');
12
12
  require('@dynamic-labs/wallet-connector-core');
13
+ require('@dynamic-labs/wallet-book');
13
14
  require('@dynamic-labs/sdk-api-core');
14
15
  require('@wallet-standard/app');
15
16
  var BitcoinSatsConnectConnector = require('../BitcoinSatsConnectConnector/BitcoinSatsConnectConnector.cjs');
16
17
  var supportsSatsConnect = require('../../utils/supportsSatsConnect.cjs');
17
18
 
18
- class BitcoinSatsConnectLegacyConnector extends BitcoinSatsConnectConnector.BitcoinSatsConnectConnector {
19
- constructor() {
20
- super(...arguments);
19
+ class MagicEdenConnector extends BitcoinSatsConnectConnector.BitcoinSatsConnectConnector {
20
+ constructor(opts) {
21
+ super(Object.assign(Object.assign({}, opts), { overrideKey: 'magicedenbtc' }));
22
+ this.name = 'Magic Eden';
23
+ this.overrideKey = 'magicedenbtc';
21
24
  this.isLegacy = true;
22
25
  }
23
26
  getAddress() {
24
27
  return _tslib.__awaiter(this, void 0, void 0, function* () {
25
- var _a;
26
- // xverse doesn't support wallet standard, so we won't have a wallet object,
27
- // but it's already the default provider for sats-connect, so it's ok
28
- // for getProvider in getAddress to return undefined
29
- // if we're not using xverse, we need to check if there is a wallet and
30
- // that it has the satsconnect feature to return the correct provider to use
31
- if (!supportsSatsConnect.supportsSatsConnect(this)) {
28
+ if (this.handleInAppBrowserGetAddress())
32
29
  return;
33
- }
34
- const wallet = walletBook.findWalletBookWallet(this.walletBook, this.key);
35
- const inAppBrowserUrl = (_a = wallet === null || wallet === void 0 ? void 0 : wallet.mobile) === null || _a === void 0 ? void 0 : _a.inAppBrowser;
36
- if (utils.isMobile() &&
37
- !this.isInstalledOnBrowser() &&
38
- inAppBrowserUrl &&
39
- this.mobileExperience === 'in-app-browser') {
40
- const inAppBrowserTemplate = utils.template(inAppBrowserUrl);
41
- const deepLink = inAppBrowserTemplate({
42
- encodedDappURI: encodeURIComponent(window.location.toString()),
43
- });
44
- window.location.href = deepLink;
45
- return;
46
- }
47
30
  return new Promise((resolve, reject) => {
48
31
  satsConnect.getAddress({
49
32
  getProvider: () => _tslib.__awaiter(this, void 0, void 0, function* () {
@@ -185,32 +168,22 @@ class BitcoinSatsConnectLegacyConnector extends BitcoinSatsConnectConnector.Bitc
185
168
  });
186
169
  });
187
170
  }
171
+ /**
172
+ * Uses the custom Magic Eden signTransactions feature to sign multiple transactions
173
+ */
188
174
  signTransactions(transactions) {
189
175
  return _tslib.__awaiter(this, void 0, void 0, function* () {
190
- const { message, psbts, network } = transactions;
191
- return new Promise((resolve, reject) => {
192
- satsConnect.signMultipleTransactions({
193
- getProvider: () => _tslib.__awaiter(this, void 0, void 0, function* () {
194
- var _a, _b;
195
- return (_b = (_a = this.wallet) === null || _a === void 0 ? void 0 : _a.features[_const.SATSCONNECT_FEATURE]) === null || _b === void 0 ? void 0 : _b.provider;
196
- }),
197
- onCancel: () => {
198
- const error = new Error();
199
- error.code = '-32000'; // error code for user cancelled
200
- reject(error);
201
- },
202
- onFinish: (response) => {
203
- resolve(response);
204
- },
205
- payload: {
206
- message: message || 'Sign Transaction',
207
- network,
208
- psbts,
209
- },
210
- });
211
- });
176
+ var _a;
177
+ (_a = transactions.message) !== null && _a !== void 0 ? _a : (transactions.message = 'Sign Transaction');
178
+ const request = jsontokens.createUnsecuredToken(transactions);
179
+ // Magic Eden has implemented their own signTransactions feature, and have requested us
180
+ // to ensure we use it rather than the general Sats Connect API for this method
181
+ const provider = this.getProvider();
182
+ if (!provider)
183
+ throw new utils.DynamicError('signTransactions failed: Magic Eden provider not found');
184
+ return provider.signMultipleTransactions(request);
212
185
  });
213
186
  }
214
187
  }
215
188
 
216
- exports.BitcoinSatsConnectLegacyConnector = BitcoinSatsConnectLegacyConnector;
189
+ exports.MagicEdenConnector = MagicEdenConnector;
@@ -1,11 +1,18 @@
1
1
  import { SignMultipleTransactionsPayload, SignTransactionResponse } from 'sats-connect';
2
2
  import { BitcoinTransaction, SatsConnectSignTransactionInput } from '../../types';
3
3
  import { BitcoinSatsConnectConnector } from '../BitcoinSatsConnectConnector';
4
- export declare abstract class BitcoinSatsConnectLegacyConnector extends BitcoinSatsConnectConnector {
4
+ import { BitcoinWalletConnectorOpts } from '../BitcoinWalletConnector';
5
+ export declare class MagicEdenConnector extends BitcoinSatsConnectConnector {
6
+ name: string;
7
+ overrideKey: string;
5
8
  isLegacy: boolean;
9
+ constructor(opts: BitcoinWalletConnectorOpts);
6
10
  getAddress(): Promise<string | undefined>;
7
11
  signMessage(messageToSign: string, withAddress: string): Promise<string | undefined>;
8
12
  sendBitcoin(transaction: BitcoinTransaction): Promise<string | undefined>;
9
13
  signTransaction(params: SatsConnectSignTransactionInput): Promise<SignTransactionResponse | undefined>;
14
+ /**
15
+ * Uses the custom Magic Eden signTransactions feature to sign multiple transactions
16
+ */
10
17
  signTransactions(transactions: SignMultipleTransactionsPayload): Promise<SignTransactionResponse[] | undefined>;
11
18
  }
@@ -1,45 +1,28 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../_virtual/_tslib.js';
3
- import { getAddress, AddressPurpose, signMessage, sendBtcTransaction, signTransaction, signMultipleTransactions } from 'sats-connect';
4
- import { isMobile, template } from '@dynamic-labs/utils';
5
- import { findWalletBookWallet } from '@dynamic-labs/wallet-book';
3
+ import { createUnsecuredToken } from 'jsontokens';
4
+ import { getAddress, AddressPurpose, signMessage, sendBtcTransaction, signTransaction } from 'sats-connect';
5
+ import { DynamicError } from '@dynamic-labs/utils';
6
6
  import { SATSCONNECT_FEATURE } from '../../const.js';
7
7
  import 'bitcoinjs-lib';
8
8
  import '@dynamic-labs/wallet-connector-core';
9
+ import '@dynamic-labs/wallet-book';
9
10
  import '@dynamic-labs/sdk-api-core';
10
11
  import '@wallet-standard/app';
11
12
  import { BitcoinSatsConnectConnector } from '../BitcoinSatsConnectConnector/BitcoinSatsConnectConnector.js';
12
13
  import { supportsSatsConnect } from '../../utils/supportsSatsConnect.js';
13
14
 
14
- class BitcoinSatsConnectLegacyConnector extends BitcoinSatsConnectConnector {
15
- constructor() {
16
- super(...arguments);
15
+ class MagicEdenConnector extends BitcoinSatsConnectConnector {
16
+ constructor(opts) {
17
+ super(Object.assign(Object.assign({}, opts), { overrideKey: 'magicedenbtc' }));
18
+ this.name = 'Magic Eden';
19
+ this.overrideKey = 'magicedenbtc';
17
20
  this.isLegacy = true;
18
21
  }
19
22
  getAddress() {
20
23
  return __awaiter(this, void 0, void 0, function* () {
21
- var _a;
22
- // xverse doesn't support wallet standard, so we won't have a wallet object,
23
- // but it's already the default provider for sats-connect, so it's ok
24
- // for getProvider in getAddress to return undefined
25
- // if we're not using xverse, we need to check if there is a wallet and
26
- // that it has the satsconnect feature to return the correct provider to use
27
- if (!supportsSatsConnect(this)) {
24
+ if (this.handleInAppBrowserGetAddress())
28
25
  return;
29
- }
30
- const wallet = findWalletBookWallet(this.walletBook, this.key);
31
- const inAppBrowserUrl = (_a = wallet === null || wallet === void 0 ? void 0 : wallet.mobile) === null || _a === void 0 ? void 0 : _a.inAppBrowser;
32
- if (isMobile() &&
33
- !this.isInstalledOnBrowser() &&
34
- inAppBrowserUrl &&
35
- this.mobileExperience === 'in-app-browser') {
36
- const inAppBrowserTemplate = template(inAppBrowserUrl);
37
- const deepLink = inAppBrowserTemplate({
38
- encodedDappURI: encodeURIComponent(window.location.toString()),
39
- });
40
- window.location.href = deepLink;
41
- return;
42
- }
43
26
  return new Promise((resolve, reject) => {
44
27
  getAddress({
45
28
  getProvider: () => __awaiter(this, void 0, void 0, function* () {
@@ -181,32 +164,22 @@ class BitcoinSatsConnectLegacyConnector extends BitcoinSatsConnectConnector {
181
164
  });
182
165
  });
183
166
  }
167
+ /**
168
+ * Uses the custom Magic Eden signTransactions feature to sign multiple transactions
169
+ */
184
170
  signTransactions(transactions) {
185
171
  return __awaiter(this, void 0, void 0, function* () {
186
- const { message, psbts, network } = transactions;
187
- return new Promise((resolve, reject) => {
188
- signMultipleTransactions({
189
- getProvider: () => __awaiter(this, void 0, void 0, function* () {
190
- var _a, _b;
191
- return (_b = (_a = this.wallet) === null || _a === void 0 ? void 0 : _a.features[SATSCONNECT_FEATURE]) === null || _b === void 0 ? void 0 : _b.provider;
192
- }),
193
- onCancel: () => {
194
- const error = new Error();
195
- error.code = '-32000'; // error code for user cancelled
196
- reject(error);
197
- },
198
- onFinish: (response) => {
199
- resolve(response);
200
- },
201
- payload: {
202
- message: message || 'Sign Transaction',
203
- network,
204
- psbts,
205
- },
206
- });
207
- });
172
+ var _a;
173
+ (_a = transactions.message) !== null && _a !== void 0 ? _a : (transactions.message = 'Sign Transaction');
174
+ const request = createUnsecuredToken(transactions);
175
+ // Magic Eden has implemented their own signTransactions feature, and have requested us
176
+ // to ensure we use it rather than the general Sats Connect API for this method
177
+ const provider = this.getProvider();
178
+ if (!provider)
179
+ throw new DynamicError('signTransactions failed: Magic Eden provider not found');
180
+ return provider.signMultipleTransactions(request);
208
181
  });
209
182
  }
210
183
  }
211
184
 
212
- export { BitcoinSatsConnectLegacyConnector };
185
+ export { MagicEdenConnector };
@@ -0,0 +1 @@
1
+ export { MagicEdenConnector } from './MagicEdenConnector';
@@ -1,7 +1,7 @@
1
1
  export * from './BitcoinWalletConnector';
2
2
  export * from './BitcoinBtcKitConnector';
3
3
  export * from './BitcoinSatsConnectConnector';
4
- export * from './BitcoinSatsConnectLegacyConnector';
4
+ export * from './MagicEdenConnector';
5
5
  export * from './PhantomConnector';
6
6
  export * from './OkxConnector';
7
7
  export * from './OylConnector';
package/src/index.cjs CHANGED
@@ -12,17 +12,18 @@ require('bitcoinjs-lib');
12
12
  require('@dynamic-labs/wallet-connector-core');
13
13
  require('@dynamic-labs/utils');
14
14
  require('@dynamic-labs/wallet-book');
15
- var fetchBtcKitConnectors = require('./utils/fetchBtcKitConnectors/fetchBtcKitConnectors.cjs');
16
- var fetchSatsConnectConnectors = require('./utils/fetchSatsConnectConnectors/fetchSatsConnectConnectors.cjs');
17
- var hasSatsConnectFeature = require('./utils/hasSatsConnectFeature.cjs');
18
- var supportsSatsConnect = require('./utils/supportsSatsConnect.cjs');
19
- var getMempoolApiUrl = require('./utils/getMempoolApiUrl.cjs');
15
+ var MagicEdenConnector = require('./connectors/MagicEdenConnector/MagicEdenConnector.cjs');
20
16
  var PhantomConnector = require('./connectors/PhantomConnector/PhantomConnector.cjs');
21
17
  var OkxConnector = require('./connectors/OkxConnector/OkxConnector.cjs');
22
18
  var OylConnector = require('./connectors/OylConnector/OylConnector.cjs');
23
19
  var UnisatConnector = require('./connectors/UnisatConnector/UnisatConnector.cjs');
24
20
  var UnknownInjected = require('./connectors/UnknownInjected/UnknownInjected.cjs');
25
21
  var FallbackBitcoinConnector = require('./connectors/FallbackBitcoinConnector/FallbackBitcoinConnector.cjs');
22
+ var fetchBtcKitConnectors = require('./utils/fetchBtcKitConnectors/fetchBtcKitConnectors.cjs');
23
+ var fetchSatsConnectConnectors = require('./utils/fetchSatsConnectConnectors/fetchSatsConnectConnectors.cjs');
24
+ var hasSatsConnectFeature = require('./utils/hasSatsConnectFeature.cjs');
25
+ var supportsSatsConnect = require('./utils/supportsSatsConnect.cjs');
26
+ var getMempoolApiUrl = require('./utils/getMempoolApiUrl.cjs');
26
27
  var BitcoinWallet = require('./wallet/BitcoinWallet.cjs');
27
28
  var isBitcoinWallet = require('./wallet/isBitcoinWallet/isBitcoinWallet.cjs');
28
29
 
@@ -30,6 +31,7 @@ assertPackageVersion.assertPackageVersion('@dynamic-labs/bitcoin', _package.vers
30
31
  const BitcoinWalletConnectors = (props) => [
31
32
  ...fetchSatsConnectConnectors.fetchSatsConnectConnectors(props),
32
33
  ...fetchBtcKitConnectors.fetchBtcKitConnectors(props),
34
+ MagicEdenConnector.MagicEdenConnector,
33
35
  PhantomConnector.PhantomConnector,
34
36
  OkxConnector.OkxConnector,
35
37
  OylConnector.OylConnector,
package/src/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { OkxConnector, PhantomConnector, OylConnector } from './connectors';
1
+ import { OkxConnector, OylConnector, PhantomConnector } from './connectors';
2
2
  export { BitcoinWalletConnector } from './connectors';
3
3
  export type { BitcoinTransaction } from './types';
4
4
  export * from './utils';
package/src/index.js CHANGED
@@ -8,6 +8,13 @@ import 'bitcoinjs-lib';
8
8
  import '@dynamic-labs/wallet-connector-core';
9
9
  import '@dynamic-labs/utils';
10
10
  import '@dynamic-labs/wallet-book';
11
+ import { MagicEdenConnector } from './connectors/MagicEdenConnector/MagicEdenConnector.js';
12
+ import { PhantomConnector } from './connectors/PhantomConnector/PhantomConnector.js';
13
+ import { OkxConnector } from './connectors/OkxConnector/OkxConnector.js';
14
+ import { OylConnector } from './connectors/OylConnector/OylConnector.js';
15
+ import { UnisatConnector } from './connectors/UnisatConnector/UnisatConnector.js';
16
+ import { UnknownInjectedConnector } from './connectors/UnknownInjected/UnknownInjected.js';
17
+ import { FallbackBitcoinConnector } from './connectors/FallbackBitcoinConnector/FallbackBitcoinConnector.js';
11
18
  import { fetchBtcKitConnectors } from './utils/fetchBtcKitConnectors/fetchBtcKitConnectors.js';
12
19
  export { fetchBtcKitConnectors } from './utils/fetchBtcKitConnectors/fetchBtcKitConnectors.js';
13
20
  import { fetchSatsConnectConnectors } from './utils/fetchSatsConnectConnectors/fetchSatsConnectConnectors.js';
@@ -15,12 +22,6 @@ export { fetchSatsConnectConnectors } from './utils/fetchSatsConnectConnectors/f
15
22
  export { hasSatsConnectFeature } from './utils/hasSatsConnectFeature.js';
16
23
  export { supportsSatsConnect } from './utils/supportsSatsConnect.js';
17
24
  export { getMempoolApiUrl } from './utils/getMempoolApiUrl.js';
18
- import { PhantomConnector } from './connectors/PhantomConnector/PhantomConnector.js';
19
- import { OkxConnector } from './connectors/OkxConnector/OkxConnector.js';
20
- import { OylConnector } from './connectors/OylConnector/OylConnector.js';
21
- import { UnisatConnector } from './connectors/UnisatConnector/UnisatConnector.js';
22
- import { UnknownInjectedConnector } from './connectors/UnknownInjected/UnknownInjected.js';
23
- import { FallbackBitcoinConnector } from './connectors/FallbackBitcoinConnector/FallbackBitcoinConnector.js';
24
25
  export { BitcoinWallet } from './wallet/BitcoinWallet.js';
25
26
  export { isBitcoinWallet } from './wallet/isBitcoinWallet/isBitcoinWallet.js';
26
27
 
@@ -28,6 +29,7 @@ assertPackageVersion('@dynamic-labs/bitcoin', version);
28
29
  const BitcoinWalletConnectors = (props) => [
29
30
  ...fetchSatsConnectConnectors(props),
30
31
  ...fetchBtcKitConnectors(props),
32
+ MagicEdenConnector,
31
33
  PhantomConnector,
32
34
  OkxConnector,
33
35
  OylConnector,
@@ -3,7 +3,6 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var _const = require('../../const.cjs');
7
6
  require('../../../_virtual/_tslib.cjs');
8
7
  require('sats-connect');
9
8
  require('@dynamic-labs/wallet-connector-core');
@@ -11,9 +10,10 @@ require('@dynamic-labs/wallet-book');
11
10
  require('@dynamic-labs/utils');
12
11
  require('@dynamic-labs/sdk-api-core');
13
12
  require('@wallet-standard/app');
13
+ var _const = require('../../const.cjs');
14
14
  require('bitcoinjs-lib');
15
15
  var BitcoinSatsConnectConnector = require('../../connectors/BitcoinSatsConnectConnector/BitcoinSatsConnectConnector.cjs');
16
- var BitcoinSatsConnectLegacyConnector = require('../../connectors/BitcoinSatsConnectLegacyConnector/BitcoinSatsConnectLegacyConnector.cjs');
16
+ require('jsontokens');
17
17
 
18
18
  const fetchSatsConnectConnectors = ({ walletBook, }) => {
19
19
  var _a;
@@ -22,26 +22,16 @@ const fetchSatsConnectConnectors = ({ walletBook, }) => {
22
22
  .filter(([_, wallet]) => {
23
23
  var _a;
24
24
  return (_a = wallet.injectedConfig) === null || _a === void 0 ? void 0 : _a.find((config) => {
25
- var _a;
25
+ var _a, _b;
26
26
  return config.chain === 'btc' &&
27
- Boolean((_a = config.walletStandard) === null || _a === void 0 ? void 0 : _a.features.includes(_const.SATSCONNECT_FEATURE));
27
+ ((_a = config.walletStandard) === null || _a === void 0 ? void 0 : _a.features.includes(_const.SATSCONNECT_FEATURE)) &&
28
+ ((_b = config.walletStandard) === null || _b === void 0 ? void 0 : _b.providerId);
28
29
  });
29
30
  })
30
31
  .map(([key, wallet]) => {
31
- var _a;
32
- const { shortName, injectedConfig } = wallet;
32
+ const { shortName } = wallet;
33
33
  const name = shortName || wallet.name;
34
- // if has providerId, use the new connector (xverse)
35
- if ((_a = injectedConfig === null || injectedConfig === void 0 ? void 0 : injectedConfig[0].walletStandard) === null || _a === void 0 ? void 0 : _a.providerId) {
36
- return class extends BitcoinSatsConnectConnector.BitcoinSatsConnectConnector {
37
- constructor(props) {
38
- super(Object.assign(Object.assign({}, props), { overrideKey: key, walletData: wallet }));
39
- this.name = name;
40
- }
41
- };
42
- }
43
- // id doesn't have providerId, use the legacy connector (magiceden)
44
- return class extends BitcoinSatsConnectLegacyConnector.BitcoinSatsConnectLegacyConnector {
34
+ return class extends BitcoinSatsConnectConnector.BitcoinSatsConnectConnector {
45
35
  constructor(props) {
46
36
  super(Object.assign(Object.assign({}, props), { overrideKey: key, walletData: wallet }));
47
37
  this.name = name;
@@ -1,5 +1,5 @@
1
- import { WalletConnectorConstructor } from '@dynamic-labs/wallet-connector-core';
2
1
  import { WalletBookSchema } from '@dynamic-labs/wallet-book';
2
+ import { WalletConnectorConstructor } from '@dynamic-labs/wallet-connector-core';
3
3
  export declare const fetchSatsConnectConnectors: ({ walletBook, }: {
4
4
  walletBook: WalletBookSchema;
5
5
  }) => WalletConnectorConstructor[];
@@ -1,5 +1,4 @@
1
1
  'use client'
2
- import { SATSCONNECT_FEATURE } from '../../const.js';
3
2
  import '../../../_virtual/_tslib.js';
4
3
  import 'sats-connect';
5
4
  import '@dynamic-labs/wallet-connector-core';
@@ -7,9 +6,10 @@ import '@dynamic-labs/wallet-book';
7
6
  import '@dynamic-labs/utils';
8
7
  import '@dynamic-labs/sdk-api-core';
9
8
  import '@wallet-standard/app';
9
+ import { SATSCONNECT_FEATURE } from '../../const.js';
10
10
  import 'bitcoinjs-lib';
11
11
  import { BitcoinSatsConnectConnector } from '../../connectors/BitcoinSatsConnectConnector/BitcoinSatsConnectConnector.js';
12
- import { BitcoinSatsConnectLegacyConnector } from '../../connectors/BitcoinSatsConnectLegacyConnector/BitcoinSatsConnectLegacyConnector.js';
12
+ import 'jsontokens';
13
13
 
14
14
  const fetchSatsConnectConnectors = ({ walletBook, }) => {
15
15
  var _a;
@@ -18,26 +18,16 @@ const fetchSatsConnectConnectors = ({ walletBook, }) => {
18
18
  .filter(([_, wallet]) => {
19
19
  var _a;
20
20
  return (_a = wallet.injectedConfig) === null || _a === void 0 ? void 0 : _a.find((config) => {
21
- var _a;
21
+ var _a, _b;
22
22
  return config.chain === 'btc' &&
23
- Boolean((_a = config.walletStandard) === null || _a === void 0 ? void 0 : _a.features.includes(SATSCONNECT_FEATURE));
23
+ ((_a = config.walletStandard) === null || _a === void 0 ? void 0 : _a.features.includes(SATSCONNECT_FEATURE)) &&
24
+ ((_b = config.walletStandard) === null || _b === void 0 ? void 0 : _b.providerId);
24
25
  });
25
26
  })
26
27
  .map(([key, wallet]) => {
27
- var _a;
28
- const { shortName, injectedConfig } = wallet;
28
+ const { shortName } = wallet;
29
29
  const name = shortName || wallet.name;
30
- // if has providerId, use the new connector (xverse)
31
- if ((_a = injectedConfig === null || injectedConfig === void 0 ? void 0 : injectedConfig[0].walletStandard) === null || _a === void 0 ? void 0 : _a.providerId) {
32
- return class extends BitcoinSatsConnectConnector {
33
- constructor(props) {
34
- super(Object.assign(Object.assign({}, props), { overrideKey: key, walletData: wallet }));
35
- this.name = name;
36
- }
37
- };
38
- }
39
- // id doesn't have providerId, use the legacy connector (magiceden)
40
- return class extends BitcoinSatsConnectLegacyConnector {
30
+ return class extends BitcoinSatsConnectConnector {
41
31
  constructor(props) {
42
32
  super(Object.assign(Object.assign({}, props), { overrideKey: key, walletData: wallet }));
43
33
  this.name = name;
@@ -12,6 +12,7 @@ require('bitcoinjs-lib');
12
12
  require('@dynamic-labs/wallet-connector-core');
13
13
  require('@dynamic-labs/sdk-api-core');
14
14
  require('@wallet-standard/app');
15
+ require('jsontokens');
15
16
  var hasSatsConnectFeature = require('./hasSatsConnectFeature.cjs');
16
17
 
17
18
  const supportsSatsConnect = (connector) => {
@@ -8,6 +8,7 @@ import 'bitcoinjs-lib';
8
8
  import '@dynamic-labs/wallet-connector-core';
9
9
  import '@dynamic-labs/sdk-api-core';
10
10
  import '@wallet-standard/app';
11
+ import 'jsontokens';
11
12
  import { hasSatsConnectFeature } from './hasSatsConnectFeature.js';
12
13
 
13
14
  const supportsSatsConnect = (connector) => {
@@ -1 +0,0 @@
1
- export { BitcoinSatsConnectLegacyConnector } from './BitcoinSatsConnectLegacyConnector';