@dynamic-labs/bitcoin 3.0.0-alpha.46 → 3.0.0-alpha.48

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 (23) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/package.json +5 -5
  3. package/src/connectors/BitcoinSatsConnectConnector/BitcoinSatsConnectConnector.cjs +54 -15
  4. package/src/connectors/BitcoinSatsConnectConnector/BitcoinSatsConnectConnector.d.ts +3 -1
  5. package/src/connectors/BitcoinSatsConnectConnector/BitcoinSatsConnectConnector.js +55 -16
  6. package/src/connectors/BitcoinWalletConnector.cjs +12 -0
  7. package/src/connectors/BitcoinWalletConnector.d.ts +1 -0
  8. package/src/connectors/BitcoinWalletConnector.js +12 -0
  9. package/src/connectors/FallbackBitcoinConnector/FallbackBitcoinConnector.cjs +7 -0
  10. package/src/connectors/FallbackBitcoinConnector/FallbackBitcoinConnector.d.ts +1 -0
  11. package/src/connectors/FallbackBitcoinConnector/FallbackBitcoinConnector.js +7 -0
  12. package/src/connectors/OkxConnector/OkxConnector.cjs +17 -0
  13. package/src/connectors/OkxConnector/OkxConnector.d.ts +1 -0
  14. package/src/connectors/OkxConnector/OkxConnector.js +17 -0
  15. package/src/connectors/UnisatConnector/UnisatConnector.cjs +17 -0
  16. package/src/connectors/UnisatConnector/UnisatConnector.d.ts +1 -0
  17. package/src/connectors/UnisatConnector/UnisatConnector.js +17 -0
  18. package/src/connectors/UnknownInjected/UnknownInjected.cjs +7 -0
  19. package/src/connectors/UnknownInjected/UnknownInjected.d.ts +1 -0
  20. package/src/connectors/UnknownInjected/UnknownInjected.js +7 -0
  21. package/src/utils/psbt/createSignPsbtOptions.cjs +17 -1
  22. package/src/utils/psbt/createSignPsbtOptions.d.ts +2 -0
  23. package/src/utils/psbt/createSignPsbtOptions.js +17 -2
package/CHANGELOG.md CHANGED
@@ -1,4 +1,38 @@
1
1
 
2
+ ## [3.0.0-alpha.48](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.47...v3.0.0-alpha.48) (2024-08-21)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * collect user data to work when no wallet is selected ([#6670](https://github.com/dynamic-labs/DynamicAuth/issues/6670)) ([b86aae8](https://github.com/dynamic-labs/DynamicAuth/commit/b86aae8e7ceb35793f792941a34cabd19b9e65d4))
8
+ * disable cookie when running on native mobile ([#6668](https://github.com/dynamic-labs/DynamicAuth/issues/6668)) ([e52a3d9](https://github.com/dynamic-labs/DynamicAuth/commit/e52a3d94a9028e36525be2e80a9f0916efad4320))
9
+ * prevent external auth blocking pending user requirements views ([#6669](https://github.com/dynamic-labs/DynamicAuth/issues/6669)) ([848356c](https://github.com/dynamic-labs/DynamicAuth/commit/848356c57e730a8516c642da84274a236e026f40))
10
+
11
+ ## [3.0.0-alpha.47](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.46...v3.0.0-alpha.47) (2024-08-21)
12
+
13
+
14
+ ### ⚠ BREAKING CHANGES
15
+
16
+ * rename useSelectWalletOption to useWalletOptions (#6616)
17
+ * stop exposing walletConnectorOptions from dynamic context (#6622)
18
+
19
+ ### Features
20
+
21
+ * add support for base.eth ens resolution ([#6655](https://github.com/dynamic-labs/DynamicAuth/issues/6655)) ([e2fb1c0](https://github.com/dynamic-labs/DynamicAuth/commit/e2fb1c0ca8410e85b7464d032abc6686bd46149f))
22
+ * expose wallet options from useWalletOptions hook ([#6624](https://github.com/dynamic-labs/DynamicAuth/issues/6624)) ([7287359](https://github.com/dynamic-labs/DynamicAuth/commit/7287359d1564564b87e82bf182edef8ef02c16f1))
23
+ * global wallet chain switching ([#6648](https://github.com/dynamic-labs/DynamicAuth/issues/6648)) ([10179fc](https://github.com/dynamic-labs/DynamicAuth/commit/10179fcddc747977c7dd250abd78bad0ec375f8f))
24
+ * implement Apple Sign-In for mobile ([#6632](https://github.com/dynamic-labs/DynamicAuth/issues/6632)) ([e68b088](https://github.com/dynamic-labs/DynamicAuth/commit/e68b088b1c13c1140b43a6d0c215383455a71a4a))
25
+ * surface mfa rate limit error ([#6658](https://github.com/dynamic-labs/DynamicAuth/issues/6658)) ([5fbcbc2](https://github.com/dynamic-labs/DynamicAuth/commit/5fbcbc2382ebcf2721a308d8e87bc8b2b5cb38cf))
26
+
27
+
28
+ ### Bug Fixes
29
+
30
+ * update bottom nav border radius ([#6651](https://github.com/dynamic-labs/DynamicAuth/issues/6651)) ([79212c2](https://github.com/dynamic-labs/DynamicAuth/commit/79212c26735eb06f31655e8b98a3d9c2c8371489))
31
+
32
+
33
+ * rename useSelectWalletOption to useWalletOptions ([#6616](https://github.com/dynamic-labs/DynamicAuth/issues/6616)) ([3850dad](https://github.com/dynamic-labs/DynamicAuth/commit/3850dad47f847ace84aadc63a84c4e62f84f7df2))
34
+ * stop exposing walletConnectorOptions from dynamic context ([#6622](https://github.com/dynamic-labs/DynamicAuth/issues/6622)) ([b9da7db](https://github.com/dynamic-labs/DynamicAuth/commit/b9da7dbfc4020913ba3d95ec496811e9d8ee17b8))
35
+
2
36
  ## [3.0.0-alpha.46](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.45...v3.0.0-alpha.46) (2024-08-19)
3
37
 
4
38
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/bitcoin",
3
- "version": "3.0.0-alpha.46",
3
+ "version": "3.0.0-alpha.48",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/dynamic-labs/dynamic-auth.git",
@@ -27,14 +27,14 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@btckit/types": "0.0.19",
30
- "@dynamic-labs/sdk-api-core": "0.0.516",
30
+ "@dynamic-labs/sdk-api-core": "0.0.519",
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.0.0",
35
- "@dynamic-labs/utils": "3.0.0-alpha.46",
36
- "@dynamic-labs/wallet-book": "3.0.0-alpha.46",
37
- "@dynamic-labs/wallet-connector-core": "3.0.0-alpha.46",
35
+ "@dynamic-labs/utils": "3.0.0-alpha.48",
36
+ "@dynamic-labs/wallet-book": "3.0.0-alpha.48",
37
+ "@dynamic-labs/wallet-connector-core": "3.0.0-alpha.48",
38
38
  "stream": "0.0.2"
39
39
  },
40
40
  "peerDependencies": {}
@@ -11,9 +11,8 @@ var walletBook = require('@dynamic-labs/wallet-book');
11
11
  var _const = require('../../const.cjs');
12
12
  require('@dynamic-labs/wallet-connector-core');
13
13
  var BitcoinWalletConnector = require('../BitcoinWalletConnector.cjs');
14
- var validatePsbt = require('../../utils/psbt/validator/validatePsbt.cjs');
15
- var getSigHashType = require('../../utils/psbt/getSigHashType.cjs');
16
14
  var bitcoinNetworkTypeToNetworks = require('../../utils/psbt/bitcoinNetworkTypeToNetworks.cjs');
15
+ var createSignPsbtOptions = require('../../utils/psbt/createSignPsbtOptions.cjs');
17
16
  var supportsSatsConnect = require('../../utils/supportsSatsConnect.cjs');
18
17
 
19
18
  class BitcoinSatsConnectConnector extends BitcoinWalletConnector.BitcoinWalletConnector {
@@ -187,29 +186,44 @@ class BitcoinSatsConnectConnector extends BitcoinWalletConnector.BitcoinWalletCo
187
186
  });
188
187
  });
189
188
  }
189
+ signTransactions(transactions) {
190
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
191
+ const { message, psbts, network } = transactions;
192
+ return new Promise((resolve, reject) => {
193
+ satsConnect.signMultipleTransactions({
194
+ getProvider: () => _tslib.__awaiter(this, void 0, void 0, function* () {
195
+ var _a, _b;
196
+ return (_b = (_a = this.wallet) === null || _a === void 0 ? void 0 : _a.features[_const.SATSCONNECT_FEATURE]) === null || _b === void 0 ? void 0 : _b.provider;
197
+ }),
198
+ onCancel: () => {
199
+ const error = new Error();
200
+ error.code = '-32000'; // error code for user cancelled
201
+ reject(error);
202
+ },
203
+ onFinish: (response) => {
204
+ resolve(response);
205
+ },
206
+ payload: {
207
+ message: message || 'Sign Transaction',
208
+ network,
209
+ psbts,
210
+ },
211
+ });
212
+ });
213
+ });
214
+ }
190
215
  signPsbt(request) {
191
216
  return _tslib.__awaiter(this, void 0, void 0, function* () {
192
- var _a, _b, _c, _d;
217
+ var _a;
193
218
  if (!((_a = request.allowedSighash) === null || _a === void 0 ? void 0 : _a.length))
194
219
  throw new Error('allowedSighash cannot be an empty array');
195
220
  const network = bitcoinNetworkTypeToNetworks.convertNetworkTypeForPsbt(this.currentNetwork);
196
221
  const psbtFromBase64 = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64, {
197
222
  network,
198
223
  });
199
- if ((_b = request.signature) === null || _b === void 0 ? void 0 : _b.length) {
200
- validatePsbt.validatePsbt(psbtFromBase64, request.allowedSighash, request.signature);
201
- }
202
- const inputsToSign = ((_d = (_c = request.signature) === null || _c === void 0 ? void 0 : _c.map((sig) => {
203
- var _a;
204
- return ((_a = sig.signingIndexes) !== null && _a !== void 0 ? _a : []).map((inputIndex) => ({
205
- address: sig.address,
206
- sigHash: getSigHashType.getSigHashType(psbtFromBase64.data.inputs[inputIndex]),
207
- signingIndexes: [inputIndex],
208
- }));
209
- })) !== null && _d !== void 0 ? _d : []).flat();
210
224
  const signedPsbt = yield this.signTransaction({
211
225
  broadcast: false,
212
- inputsToSign,
226
+ inputsToSign: createSignPsbtOptions.createSignPsbtOptionsForSatsConnect(psbtFromBase64, request),
213
227
  psbtBase64: request.unsignedPsbtBase64,
214
228
  });
215
229
  if (!signedPsbt) {
@@ -218,6 +232,31 @@ class BitcoinSatsConnectConnector extends BitcoinWalletConnector.BitcoinWalletCo
218
232
  return { signedPsbt: signedPsbt.psbtBase64 };
219
233
  });
220
234
  }
235
+ signPsbts(requests) {
236
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
237
+ var _a;
238
+ const network = bitcoinNetworkTypeToNetworks.convertNetworkTypeForPsbt(this.currentNetwork);
239
+ const signMultipleTransactionPayload = {
240
+ message: 'Sign Transaction',
241
+ network: {
242
+ type: this.currentNetwork,
243
+ },
244
+ psbts: [],
245
+ };
246
+ for (const request of requests) {
247
+ const psbtFromBase64 = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64, {
248
+ network,
249
+ });
250
+ const inputsToSign = createSignPsbtOptions.createSignPsbtOptionsForSatsConnect(psbtFromBase64, request);
251
+ signMultipleTransactionPayload.psbts.push({
252
+ inputsToSign,
253
+ psbtBase64: request.unsignedPsbtBase64,
254
+ });
255
+ }
256
+ const signedPsbts = yield this.signTransactions(signMultipleTransactionPayload);
257
+ return (_a = signedPsbts === null || signedPsbts === void 0 ? void 0 : signedPsbts.map((signedPsbts) => signedPsbts.psbtBase64)) !== null && _a !== void 0 ? _a : [];
258
+ });
259
+ }
221
260
  }
222
261
 
223
262
  exports.BitcoinSatsConnectConnector = BitcoinSatsConnectConnector;
@@ -1,4 +1,4 @@
1
- import { BitcoinNetworkType, SignTransactionResponse } from 'sats-connect';
1
+ import { BitcoinNetworkType, SignMultipleTransactionsPayload, SignTransactionResponse } from 'sats-connect';
2
2
  import { BitcoinSignPsbtRequest, BitcoinSignPsbtResponse, BitcoinTransaction, SatsConnectSignTransactionInput } from '../../types';
3
3
  import { BitcoinWalletConnector, BitcoinWalletConnectorOpts } from '../BitcoinWalletConnector';
4
4
  export declare abstract class BitcoinSatsConnectConnector extends BitcoinWalletConnector {
@@ -8,5 +8,7 @@ export declare abstract class BitcoinSatsConnectConnector extends BitcoinWalletC
8
8
  signMessage(messageToSign: string): Promise<string | undefined>;
9
9
  sendBitcoin(transaction: BitcoinTransaction): Promise<string | undefined>;
10
10
  signTransaction(params: SatsConnectSignTransactionInput): Promise<SignTransactionResponse | undefined>;
11
+ signTransactions(transactions: SignMultipleTransactionsPayload): Promise<SignTransactionResponse[] | undefined>;
11
12
  signPsbt(request: BitcoinSignPsbtRequest): Promise<BitcoinSignPsbtResponse | undefined>;
13
+ signPsbts(requests: BitcoinSignPsbtRequest[]): Promise<string[] | undefined>;
12
14
  }
@@ -1,15 +1,14 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../_virtual/_tslib.js';
3
3
  import { Psbt } from 'bitcoinjs-lib';
4
- import { BitcoinNetworkType, getAddress, AddressPurpose, signMessage, sendBtcTransaction, signTransaction } from 'sats-connect';
4
+ import { BitcoinNetworkType, getAddress, AddressPurpose, signMessage, sendBtcTransaction, signTransaction, signMultipleTransactions } from 'sats-connect';
5
5
  import { isMobile, template } from '@dynamic-labs/utils';
6
6
  import { findWalletBookWallet } from '@dynamic-labs/wallet-book';
7
7
  import { SATSCONNECT_FEATURE } from '../../const.js';
8
8
  import '@dynamic-labs/wallet-connector-core';
9
9
  import { BitcoinWalletConnector } from '../BitcoinWalletConnector.js';
10
- import { validatePsbt } from '../../utils/psbt/validator/validatePsbt.js';
11
- import { getSigHashType } from '../../utils/psbt/getSigHashType.js';
12
10
  import { convertNetworkTypeForPsbt } from '../../utils/psbt/bitcoinNetworkTypeToNetworks.js';
11
+ import { createSignPsbtOptionsForSatsConnect } from '../../utils/psbt/createSignPsbtOptions.js';
13
12
  import { supportsSatsConnect } from '../../utils/supportsSatsConnect.js';
14
13
 
15
14
  class BitcoinSatsConnectConnector extends BitcoinWalletConnector {
@@ -183,29 +182,44 @@ class BitcoinSatsConnectConnector extends BitcoinWalletConnector {
183
182
  });
184
183
  });
185
184
  }
185
+ signTransactions(transactions) {
186
+ return __awaiter(this, void 0, void 0, function* () {
187
+ const { message, psbts, network } = transactions;
188
+ return new Promise((resolve, reject) => {
189
+ signMultipleTransactions({
190
+ getProvider: () => __awaiter(this, void 0, void 0, function* () {
191
+ var _a, _b;
192
+ return (_b = (_a = this.wallet) === null || _a === void 0 ? void 0 : _a.features[SATSCONNECT_FEATURE]) === null || _b === void 0 ? void 0 : _b.provider;
193
+ }),
194
+ onCancel: () => {
195
+ const error = new Error();
196
+ error.code = '-32000'; // error code for user cancelled
197
+ reject(error);
198
+ },
199
+ onFinish: (response) => {
200
+ resolve(response);
201
+ },
202
+ payload: {
203
+ message: message || 'Sign Transaction',
204
+ network,
205
+ psbts,
206
+ },
207
+ });
208
+ });
209
+ });
210
+ }
186
211
  signPsbt(request) {
187
212
  return __awaiter(this, void 0, void 0, function* () {
188
- var _a, _b, _c, _d;
213
+ var _a;
189
214
  if (!((_a = request.allowedSighash) === null || _a === void 0 ? void 0 : _a.length))
190
215
  throw new Error('allowedSighash cannot be an empty array');
191
216
  const network = convertNetworkTypeForPsbt(this.currentNetwork);
192
217
  const psbtFromBase64 = Psbt.fromBase64(request.unsignedPsbtBase64, {
193
218
  network,
194
219
  });
195
- if ((_b = request.signature) === null || _b === void 0 ? void 0 : _b.length) {
196
- validatePsbt(psbtFromBase64, request.allowedSighash, request.signature);
197
- }
198
- const inputsToSign = ((_d = (_c = request.signature) === null || _c === void 0 ? void 0 : _c.map((sig) => {
199
- var _a;
200
- return ((_a = sig.signingIndexes) !== null && _a !== void 0 ? _a : []).map((inputIndex) => ({
201
- address: sig.address,
202
- sigHash: getSigHashType(psbtFromBase64.data.inputs[inputIndex]),
203
- signingIndexes: [inputIndex],
204
- }));
205
- })) !== null && _d !== void 0 ? _d : []).flat();
206
220
  const signedPsbt = yield this.signTransaction({
207
221
  broadcast: false,
208
- inputsToSign,
222
+ inputsToSign: createSignPsbtOptionsForSatsConnect(psbtFromBase64, request),
209
223
  psbtBase64: request.unsignedPsbtBase64,
210
224
  });
211
225
  if (!signedPsbt) {
@@ -214,6 +228,31 @@ class BitcoinSatsConnectConnector extends BitcoinWalletConnector {
214
228
  return { signedPsbt: signedPsbt.psbtBase64 };
215
229
  });
216
230
  }
231
+ signPsbts(requests) {
232
+ return __awaiter(this, void 0, void 0, function* () {
233
+ var _a;
234
+ const network = convertNetworkTypeForPsbt(this.currentNetwork);
235
+ const signMultipleTransactionPayload = {
236
+ message: 'Sign Transaction',
237
+ network: {
238
+ type: this.currentNetwork,
239
+ },
240
+ psbts: [],
241
+ };
242
+ for (const request of requests) {
243
+ const psbtFromBase64 = Psbt.fromBase64(request.unsignedPsbtBase64, {
244
+ network,
245
+ });
246
+ const inputsToSign = createSignPsbtOptionsForSatsConnect(psbtFromBase64, request);
247
+ signMultipleTransactionPayload.psbts.push({
248
+ inputsToSign,
249
+ psbtBase64: request.unsignedPsbtBase64,
250
+ });
251
+ }
252
+ const signedPsbts = yield this.signTransactions(signMultipleTransactionPayload);
253
+ return (_a = signedPsbts === null || signedPsbts === void 0 ? void 0 : signedPsbts.map((signedPsbts) => signedPsbts.psbtBase64)) !== null && _a !== void 0 ? _a : [];
254
+ });
255
+ }
217
256
  }
218
257
 
219
258
  export { BitcoinSatsConnectConnector };
@@ -185,6 +185,18 @@ class BitcoinWalletConnector extends walletConnectorCore.WalletConnectorBase {
185
185
  var _a;
186
186
  return (_a = this.bitcoinProviderHelper) === null || _a === void 0 ? void 0 : _a.getProvider();
187
187
  }
188
+ signPsbts(requests) {
189
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
190
+ const signedPsbtResponses = [];
191
+ for (const request of requests) {
192
+ const signedPsbtResponse = yield this.signPsbt(request);
193
+ if (signedPsbtResponse) {
194
+ signedPsbtResponses.push(signedPsbtResponse);
195
+ }
196
+ }
197
+ return signedPsbtResponses.map((response) => response.signedPsbt);
198
+ });
199
+ }
188
200
  setConnectedAccountWithAddresses(_a) {
189
201
  return _tslib.__awaiter(this, arguments, void 0, function* ({ mainAddress, ordinalsAddress, paymentAddress, active, }) {
190
202
  if (!mainAddress) {
@@ -41,6 +41,7 @@ export declare abstract class BitcoinWalletConnector extends WalletConnectorBase
41
41
  abstract sendBitcoin(transaction: BitcoinTransaction): Promise<string | undefined>;
42
42
  getProvider<T>(): T & EventEmitter;
43
43
  abstract signPsbt(request: BitcoinSignPsbtRequest): Promise<BitcoinSignPsbtResponse | undefined>;
44
+ signPsbts(requests: BitcoinSignPsbtRequest[]): Promise<string[] | undefined>;
44
45
  setConnectedAccountWithAddresses({ mainAddress, ordinalsAddress, paymentAddress, active, }: ConnectedAccountWithAddressesProps): Promise<void>;
45
46
  setupEventListeners(): void;
46
47
  setVerifiedCredentials(verifiedCredentials: JwtVerifiedCredential[]): void;
@@ -181,6 +181,18 @@ class BitcoinWalletConnector extends WalletConnectorBase {
181
181
  var _a;
182
182
  return (_a = this.bitcoinProviderHelper) === null || _a === void 0 ? void 0 : _a.getProvider();
183
183
  }
184
+ signPsbts(requests) {
185
+ return __awaiter(this, void 0, void 0, function* () {
186
+ const signedPsbtResponses = [];
187
+ for (const request of requests) {
188
+ const signedPsbtResponse = yield this.signPsbt(request);
189
+ if (signedPsbtResponse) {
190
+ signedPsbtResponses.push(signedPsbtResponse);
191
+ }
192
+ }
193
+ return signedPsbtResponses.map((response) => response.signedPsbt);
194
+ });
195
+ }
184
196
  setConnectedAccountWithAddresses(_a) {
185
197
  return __awaiter(this, arguments, void 0, function* ({ mainAddress, ordinalsAddress, paymentAddress, active, }) {
186
198
  if (!mainAddress) {
@@ -25,6 +25,13 @@ class FallbackBitcoinConnector extends BitcoinWalletConnector.BitcoinWalletConne
25
25
  return;
26
26
  });
27
27
  }
28
+ signPsbts(
29
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
30
+ _requests) {
31
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
32
+ return;
33
+ });
34
+ }
28
35
  sendBitcoin(
29
36
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
30
37
  _transaction) {
@@ -7,5 +7,6 @@ export declare class FallbackBitcoinConnector extends BitcoinWalletConnector {
7
7
  constructor(opts: BitcoinWalletConnectorOpts);
8
8
  getAddress(): Promise<string | undefined>;
9
9
  signPsbt(_request: BitcoinSignPsbtRequest): Promise<BitcoinSignPsbtResponse | undefined>;
10
+ signPsbts(_requests: BitcoinSignPsbtRequest[]): Promise<string[] | undefined>;
10
11
  sendBitcoin(_transaction: BitcoinTransaction): Promise<string | undefined>;
11
12
  }
@@ -21,6 +21,13 @@ class FallbackBitcoinConnector extends BitcoinWalletConnector {
21
21
  return;
22
22
  });
23
23
  }
24
+ signPsbts(
25
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
26
+ _requests) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ return;
29
+ });
30
+ }
24
31
  sendBitcoin(
25
32
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
26
33
  _transaction) {
@@ -78,6 +78,23 @@ class OkxConnector extends BitcoinWalletConnector.BitcoinWalletConnector {
78
78
  return { signedPsbt: bitcoinjsLib.Psbt.fromHex(signedPsbtHex).toBase64() };
79
79
  });
80
80
  }
81
+ signPsbts(requests) {
82
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
83
+ const provider = this.getProvider();
84
+ if (!provider) {
85
+ return;
86
+ }
87
+ const psbtHexs = [];
88
+ const psbtOptions = [];
89
+ for (const request of requests) {
90
+ const psbt = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64);
91
+ psbtHexs.push(psbt.toHex());
92
+ psbtOptions.push(createSignPsbtOptions.createPsbtOptions(psbt, request));
93
+ }
94
+ const signedPsbtHexs = yield provider.signPsbts(psbtHexs, psbtOptions);
95
+ return signedPsbtHexs.map((signedPsbtHex) => bitcoinjsLib.Psbt.fromHex(signedPsbtHex).toBase64());
96
+ });
97
+ }
81
98
  }
82
99
 
83
100
  exports.OkxConnector = OkxConnector;
@@ -8,4 +8,5 @@ export declare class OkxConnector extends BitcoinWalletConnector {
8
8
  signMessage(messageToSign: string): Promise<string | undefined>;
9
9
  sendBitcoin(transaction: BitcoinTransaction): Promise<string | undefined>;
10
10
  signPsbt(request: BitcoinSignPsbtRequest): Promise<BitcoinSignPsbtResponse | undefined>;
11
+ signPsbts(requests: BitcoinSignPsbtRequest[]): Promise<string[] | undefined>;
11
12
  }
@@ -74,6 +74,23 @@ class OkxConnector extends BitcoinWalletConnector {
74
74
  return { signedPsbt: Psbt.fromHex(signedPsbtHex).toBase64() };
75
75
  });
76
76
  }
77
+ signPsbts(requests) {
78
+ return __awaiter(this, void 0, void 0, function* () {
79
+ const provider = this.getProvider();
80
+ if (!provider) {
81
+ return;
82
+ }
83
+ const psbtHexs = [];
84
+ const psbtOptions = [];
85
+ for (const request of requests) {
86
+ const psbt = Psbt.fromBase64(request.unsignedPsbtBase64);
87
+ psbtHexs.push(psbt.toHex());
88
+ psbtOptions.push(createPsbtOptions(psbt, request));
89
+ }
90
+ const signedPsbtHexs = yield provider.signPsbts(psbtHexs, psbtOptions);
91
+ return signedPsbtHexs.map((signedPsbtHex) => Psbt.fromHex(signedPsbtHex).toBase64());
92
+ });
93
+ }
77
94
  }
78
95
 
79
96
  export { OkxConnector };
@@ -64,6 +64,23 @@ class UnisatConnector extends BitcoinWalletConnector.BitcoinWalletConnector {
64
64
  return { signedPsbt: bitcoinjsLib.Psbt.fromHex(signedPsbtHex).toBase64() };
65
65
  });
66
66
  }
67
+ signPsbts(requests) {
68
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
69
+ const provider = this.getProvider();
70
+ if (!provider) {
71
+ return;
72
+ }
73
+ const psbtHexs = [];
74
+ const psbtOptions = [];
75
+ for (const request of requests) {
76
+ const psbtFromBase64 = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64);
77
+ psbtHexs.push(psbtFromBase64.toHex());
78
+ psbtOptions.push(createSignPsbtOptions.createPsbtOptions(psbtFromBase64, request));
79
+ }
80
+ const signedPsbtHexs = yield provider.signPsbts(psbtHexs, psbtOptions);
81
+ return signedPsbtHexs.map((signedPsbtHex) => bitcoinjsLib.Psbt.fromHex(signedPsbtHex).toBase64());
82
+ });
83
+ }
67
84
  getConnectedAccounts() {
68
85
  return _tslib.__awaiter(this, void 0, void 0, function* () {
69
86
  const provider = this.getProvider();
@@ -8,5 +8,6 @@ export declare class UnisatConnector extends BitcoinWalletConnector {
8
8
  signMessage(messageToSign: string): Promise<string | undefined>;
9
9
  sendBitcoin(transaction: BitcoinTransaction): Promise<string | undefined>;
10
10
  signPsbt(request: BitcoinSignPsbtRequest): Promise<BitcoinSignPsbtResponse | undefined>;
11
+ signPsbts(requests: BitcoinSignPsbtRequest[]): Promise<string[] | undefined>;
11
12
  getConnectedAccounts(): Promise<string[]>;
12
13
  }
@@ -60,6 +60,23 @@ class UnisatConnector extends BitcoinWalletConnector {
60
60
  return { signedPsbt: Psbt.fromHex(signedPsbtHex).toBase64() };
61
61
  });
62
62
  }
63
+ signPsbts(requests) {
64
+ return __awaiter(this, void 0, void 0, function* () {
65
+ const provider = this.getProvider();
66
+ if (!provider) {
67
+ return;
68
+ }
69
+ const psbtHexs = [];
70
+ const psbtOptions = [];
71
+ for (const request of requests) {
72
+ const psbtFromBase64 = Psbt.fromBase64(request.unsignedPsbtBase64);
73
+ psbtHexs.push(psbtFromBase64.toHex());
74
+ psbtOptions.push(createPsbtOptions(psbtFromBase64, request));
75
+ }
76
+ const signedPsbtHexs = yield provider.signPsbts(psbtHexs, psbtOptions);
77
+ return signedPsbtHexs.map((signedPsbtHex) => Psbt.fromHex(signedPsbtHex).toBase64());
78
+ });
79
+ }
63
80
  getConnectedAccounts() {
64
81
  return __awaiter(this, void 0, void 0, function* () {
65
82
  const provider = this.getProvider();
@@ -24,6 +24,13 @@ class UnknownInjectedConnector extends BitcoinWalletConnector.BitcoinWalletConne
24
24
  return;
25
25
  });
26
26
  }
27
+ signPsbts(
28
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
29
+ _requests) {
30
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
31
+ return;
32
+ });
33
+ }
27
34
  sendBitcoin(
28
35
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
29
36
  _transaction) {
@@ -6,5 +6,6 @@ export declare class UnknownInjectedConnector extends BitcoinWalletConnector {
6
6
  constructor(opts: BitcoinWalletConnectorOpts);
7
7
  getAddress(): Promise<string | undefined>;
8
8
  signPsbt(_request: BitcoinSignPsbtRequest): Promise<BitcoinSignPsbtResponse | undefined>;
9
+ signPsbts(_requests: BitcoinSignPsbtRequest[]): Promise<string[] | undefined>;
9
10
  sendBitcoin(_transaction: BitcoinTransaction): Promise<string | undefined>;
10
11
  }
@@ -20,6 +20,13 @@ class UnknownInjectedConnector extends BitcoinWalletConnector {
20
20
  return;
21
21
  });
22
22
  }
23
+ signPsbts(
24
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
25
+ _requests) {
26
+ return __awaiter(this, void 0, void 0, function* () {
27
+ return;
28
+ });
29
+ }
23
30
  sendBitcoin(
24
31
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
25
32
  _transaction) {
@@ -4,8 +4,8 @@
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var validatePsbt = require('./validator/validatePsbt.cjs');
7
+ var getSigHashType = require('./getSigHashType.cjs');
7
8
  require('bitcoinjs-lib');
8
- require('@dynamic-labs/wallet-connector-core');
9
9
  require('sats-connect');
10
10
 
11
11
  const createPsbtOptions = (psbt, request) => {
@@ -32,5 +32,21 @@ const createPsbtOptions = (psbt, request) => {
32
32
  }
33
33
  return psbtSignOptions;
34
34
  };
35
+ const createSignPsbtOptionsForSatsConnect = (psbtFromBase64, request) => {
36
+ var _a, _b, _c;
37
+ if ((_a = request.signature) === null || _a === void 0 ? void 0 : _a.length) {
38
+ validatePsbt.validatePsbt(psbtFromBase64, request.allowedSighash, request.signature);
39
+ }
40
+ const inputsToSign = ((_c = (_b = request.signature) === null || _b === void 0 ? void 0 : _b.map((sig) => {
41
+ var _a;
42
+ return ((_a = sig.signingIndexes) !== null && _a !== void 0 ? _a : []).map((inputIndex) => ({
43
+ address: sig.address,
44
+ sigHash: getSigHashType.getSigHashType(psbtFromBase64.data.inputs[inputIndex]),
45
+ signingIndexes: [inputIndex],
46
+ }));
47
+ })) !== null && _c !== void 0 ? _c : []).flat();
48
+ return inputsToSign;
49
+ };
35
50
 
36
51
  exports.createPsbtOptions = createPsbtOptions;
52
+ exports.createSignPsbtOptionsForSatsConnect = createSignPsbtOptionsForSatsConnect;
@@ -1,3 +1,5 @@
1
1
  import { Psbt } from 'bitcoinjs-lib';
2
+ import { InputToSign } from 'sats-connect';
2
3
  import { BitcoinSignPsbtRequest, SignPsbtOptions } from '../../types';
3
4
  export declare const createPsbtOptions: (psbt: Psbt, request: BitcoinSignPsbtRequest) => SignPsbtOptions;
5
+ export declare const createSignPsbtOptionsForSatsConnect: (psbtFromBase64: Psbt, request: BitcoinSignPsbtRequest) => InputToSign[];
@@ -1,7 +1,7 @@
1
1
  'use client'
2
2
  import { validatePsbt } from './validator/validatePsbt.js';
3
+ import { getSigHashType } from './getSigHashType.js';
3
4
  import 'bitcoinjs-lib';
4
- import '@dynamic-labs/wallet-connector-core';
5
5
  import 'sats-connect';
6
6
 
7
7
  const createPsbtOptions = (psbt, request) => {
@@ -28,5 +28,20 @@ const createPsbtOptions = (psbt, request) => {
28
28
  }
29
29
  return psbtSignOptions;
30
30
  };
31
+ const createSignPsbtOptionsForSatsConnect = (psbtFromBase64, request) => {
32
+ var _a, _b, _c;
33
+ if ((_a = request.signature) === null || _a === void 0 ? void 0 : _a.length) {
34
+ validatePsbt(psbtFromBase64, request.allowedSighash, request.signature);
35
+ }
36
+ const inputsToSign = ((_c = (_b = request.signature) === null || _b === void 0 ? void 0 : _b.map((sig) => {
37
+ var _a;
38
+ return ((_a = sig.signingIndexes) !== null && _a !== void 0 ? _a : []).map((inputIndex) => ({
39
+ address: sig.address,
40
+ sigHash: getSigHashType(psbtFromBase64.data.inputs[inputIndex]),
41
+ signingIndexes: [inputIndex],
42
+ }));
43
+ })) !== null && _c !== void 0 ? _c : []).flat();
44
+ return inputsToSign;
45
+ };
31
46
 
32
- export { createPsbtOptions };
47
+ export { createPsbtOptions, createSignPsbtOptionsForSatsConnect };