@lifi/sdk-provider-bitcoin 4.0.1-alpha.0 → 4.0.1

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 (152) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +88 -5
  3. package/dist/cjs/BitcoinProvider.d.ts +7 -2
  4. package/dist/cjs/BitcoinProvider.js +30 -34
  5. package/dist/cjs/BitcoinProvider.js.map +1 -1
  6. package/dist/cjs/_virtual/_rolldown/runtime.js +23 -0
  7. package/dist/cjs/actions/getBitcoinBalance.d.ts +7 -2
  8. package/dist/cjs/actions/getBitcoinBalance.js +21 -24
  9. package/dist/cjs/actions/getBitcoinBalance.js.map +1 -1
  10. package/dist/cjs/actions/resolveBitcoinAddress.d.ts +5 -1
  11. package/dist/cjs/actions/resolveBitcoinAddress.js +6 -4
  12. package/dist/cjs/actions/resolveBitcoinAddress.js.map +1 -1
  13. package/dist/cjs/client/publicClient.d.ts +14 -4
  14. package/dist/cjs/client/publicClient.js +38 -42
  15. package/dist/cjs/client/publicClient.js.map +1 -1
  16. package/dist/cjs/core/BitcoinStepExecutor.d.ts +19 -0
  17. package/dist/cjs/core/BitcoinStepExecutor.js +47 -0
  18. package/dist/cjs/core/BitcoinStepExecutor.js.map +1 -0
  19. package/dist/cjs/core/tasks/BitcoinSignAndExecuteTask.d.ts +10 -0
  20. package/dist/cjs/core/tasks/BitcoinSignAndExecuteTask.js +75 -0
  21. package/dist/cjs/core/tasks/BitcoinSignAndExecuteTask.js.map +1 -0
  22. package/dist/cjs/core/tasks/BitcoinWaitForTransactionTask.d.ts +10 -0
  23. package/dist/cjs/core/tasks/BitcoinWaitForTransactionTask.js +38 -0
  24. package/dist/cjs/core/tasks/BitcoinWaitForTransactionTask.js.map +1 -0
  25. package/dist/cjs/errors/parseBitcoinErrors.d.ts +7 -2
  26. package/dist/cjs/errors/parseBitcoinErrors.js +17 -26
  27. package/dist/cjs/errors/parseBitcoinErrors.js.map +1 -1
  28. package/dist/cjs/index.d.ts +3 -3
  29. package/dist/cjs/index.js +5 -8
  30. package/dist/cjs/types.d.ts +18 -7
  31. package/dist/cjs/types.js +7 -5
  32. package/dist/cjs/types.js.map +1 -1
  33. package/dist/cjs/utils/generateRedeemScript.d.ts +10 -1
  34. package/dist/cjs/utils/generateRedeemScript.js +11 -5
  35. package/dist/cjs/utils/generateRedeemScript.js.map +1 -1
  36. package/dist/cjs/utils/isPsbtFinalized.d.ts +7 -2
  37. package/dist/cjs/utils/isPsbtFinalized.js +11 -10
  38. package/dist/cjs/utils/isPsbtFinalized.js.map +1 -1
  39. package/dist/cjs/utils/toBigmiChainId.d.ts +8 -3
  40. package/dist/cjs/utils/toBigmiChainId.js +10 -11
  41. package/dist/cjs/utils/toBigmiChainId.js.map +1 -1
  42. package/dist/cjs/utils/toXOnly.d.ts +5 -1
  43. package/dist/cjs/utils/toXOnly.js +4 -3
  44. package/dist/cjs/utils/toXOnly.js.map +1 -1
  45. package/dist/cjs/version.d.ts +6 -2
  46. package/dist/cjs/version.js +8 -5
  47. package/dist/cjs/version.js.map +1 -1
  48. package/dist/esm/BitcoinProvider.d.ts +7 -2
  49. package/dist/esm/BitcoinProvider.d.ts.map +1 -0
  50. package/dist/esm/BitcoinProvider.js +30 -32
  51. package/dist/esm/BitcoinProvider.js.map +1 -1
  52. package/dist/esm/actions/getBitcoinBalance.d.ts +7 -2
  53. package/dist/esm/actions/getBitcoinBalance.d.ts.map +1 -0
  54. package/dist/esm/actions/getBitcoinBalance.js +22 -22
  55. package/dist/esm/actions/getBitcoinBalance.js.map +1 -1
  56. package/dist/esm/actions/resolveBitcoinAddress.d.ts +5 -1
  57. package/dist/esm/actions/resolveBitcoinAddress.d.ts.map +1 -0
  58. package/dist/esm/actions/resolveBitcoinAddress.js +6 -3
  59. package/dist/esm/actions/resolveBitcoinAddress.js.map +1 -1
  60. package/dist/esm/client/publicClient.d.ts +13 -9
  61. package/dist/esm/client/publicClient.d.ts.map +1 -0
  62. package/dist/esm/client/publicClient.js +38 -46
  63. package/dist/esm/client/publicClient.js.map +1 -1
  64. package/dist/esm/core/BitcoinStepExecutor.d.ts +19 -0
  65. package/dist/esm/core/BitcoinStepExecutor.d.ts.map +1 -0
  66. package/dist/esm/core/BitcoinStepExecutor.js +46 -0
  67. package/dist/esm/core/BitcoinStepExecutor.js.map +1 -0
  68. package/dist/esm/core/tasks/BitcoinSignAndExecuteTask.d.ts +10 -0
  69. package/dist/esm/core/tasks/BitcoinSignAndExecuteTask.d.ts.map +1 -0
  70. package/dist/esm/core/tasks/BitcoinSignAndExecuteTask.js +72 -0
  71. package/dist/esm/core/tasks/BitcoinSignAndExecuteTask.js.map +1 -0
  72. package/dist/esm/core/tasks/BitcoinWaitForTransactionTask.d.ts +10 -0
  73. package/dist/esm/core/tasks/BitcoinWaitForTransactionTask.d.ts.map +1 -0
  74. package/dist/esm/core/tasks/BitcoinWaitForTransactionTask.js +37 -0
  75. package/dist/esm/core/tasks/BitcoinWaitForTransactionTask.js.map +1 -0
  76. package/dist/esm/errors/parseBitcoinErrors.d.ts +7 -2
  77. package/dist/esm/errors/parseBitcoinErrors.d.ts.map +1 -0
  78. package/dist/esm/errors/parseBitcoinErrors.js +17 -24
  79. package/dist/esm/errors/parseBitcoinErrors.js.map +1 -1
  80. package/dist/esm/index.d.ts +3 -3
  81. package/dist/esm/index.js +3 -4
  82. package/dist/esm/package.json +1 -1
  83. package/dist/esm/types.d.ts +18 -7
  84. package/dist/esm/types.d.ts.map +1 -0
  85. package/dist/esm/types.js +7 -3
  86. package/dist/esm/types.js.map +1 -1
  87. package/dist/esm/utils/generateRedeemScript.d.ts +9 -5
  88. package/dist/esm/utils/generateRedeemScript.d.ts.map +1 -0
  89. package/dist/esm/utils/generateRedeemScript.js +10 -8
  90. package/dist/esm/utils/generateRedeemScript.js.map +1 -1
  91. package/dist/esm/utils/isPsbtFinalized.d.ts +7 -2
  92. package/dist/esm/utils/isPsbtFinalized.d.ts.map +1 -0
  93. package/dist/esm/utils/isPsbtFinalized.js +11 -8
  94. package/dist/esm/utils/isPsbtFinalized.js.map +1 -1
  95. package/dist/esm/utils/toBigmiChainId.d.ts +8 -3
  96. package/dist/esm/utils/toBigmiChainId.d.ts.map +1 -0
  97. package/dist/esm/utils/toBigmiChainId.js +11 -9
  98. package/dist/esm/utils/toBigmiChainId.js.map +1 -1
  99. package/dist/esm/utils/toXOnly.d.ts +5 -1
  100. package/dist/esm/utils/toXOnly.d.ts.map +1 -0
  101. package/dist/esm/utils/toXOnly.js +5 -2
  102. package/dist/esm/utils/toXOnly.js.map +1 -1
  103. package/dist/esm/version.d.ts +6 -2
  104. package/dist/esm/version.d.ts.map +1 -0
  105. package/dist/esm/version.js +6 -2
  106. package/dist/esm/version.js.map +1 -1
  107. package/package.json +7 -6
  108. package/src/BitcoinProvider.ts +1 -1
  109. package/src/actions/getBitcoinBalance.ts +15 -3
  110. package/src/client/publicClient.ts +1 -1
  111. package/src/core/BitcoinStepExecutor.ts +100 -0
  112. package/src/core/tasks/BitcoinSignAndExecuteTask.ts +168 -0
  113. package/src/core/tasks/BitcoinWaitForTransactionTask.ts +74 -0
  114. package/src/types.ts +13 -1
  115. package/src/utils/generateRedeemScript.ts +3 -1
  116. package/src/utils/toXOnly.ts +1 -1
  117. package/src/version.ts +1 -1
  118. package/dist/cjs/BitcoinStepExecutor.d.ts +0 -12
  119. package/dist/cjs/BitcoinStepExecutor.js +0 -198
  120. package/dist/cjs/BitcoinStepExecutor.js.map +0 -1
  121. package/dist/cjs/index.js.map +0 -1
  122. package/dist/esm/BitcoinStepExecutor.d.ts +0 -12
  123. package/dist/esm/BitcoinStepExecutor.js +0 -210
  124. package/dist/esm/BitcoinStepExecutor.js.map +0 -1
  125. package/dist/esm/index.js.map +0 -1
  126. package/dist/types/BitcoinProvider.d.ts +0 -3
  127. package/dist/types/BitcoinProvider.d.ts.map +0 -1
  128. package/dist/types/BitcoinStepExecutor.d.ts +0 -13
  129. package/dist/types/BitcoinStepExecutor.d.ts.map +0 -1
  130. package/dist/types/actions/getBitcoinBalance.d.ts +0 -3
  131. package/dist/types/actions/getBitcoinBalance.d.ts.map +0 -1
  132. package/dist/types/actions/resolveBitcoinAddress.d.ts +0 -2
  133. package/dist/types/actions/resolveBitcoinAddress.d.ts.map +0 -1
  134. package/dist/types/client/publicClient.d.ts +0 -12
  135. package/dist/types/client/publicClient.d.ts.map +0 -1
  136. package/dist/types/errors/parseBitcoinErrors.d.ts +0 -3
  137. package/dist/types/errors/parseBitcoinErrors.d.ts.map +0 -1
  138. package/dist/types/index.d.ts +0 -4
  139. package/dist/types/index.d.ts.map +0 -1
  140. package/dist/types/types.d.ts +0 -10
  141. package/dist/types/types.d.ts.map +0 -1
  142. package/dist/types/utils/generateRedeemScript.d.ts +0 -7
  143. package/dist/types/utils/generateRedeemScript.d.ts.map +0 -1
  144. package/dist/types/utils/isPsbtFinalized.d.ts +0 -3
  145. package/dist/types/utils/isPsbtFinalized.d.ts.map +0 -1
  146. package/dist/types/utils/toBigmiChainId.d.ts +0 -4
  147. package/dist/types/utils/toBigmiChainId.d.ts.map +0 -1
  148. package/dist/types/utils/toXOnly.d.ts +0 -2
  149. package/dist/types/utils/toXOnly.d.ts.map +0 -1
  150. package/dist/types/version.d.ts +0 -3
  151. package/dist/types/version.d.ts.map +0 -1
  152. package/src/BitcoinStepExecutor.ts +0 -333
@@ -0,0 +1,75 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_runtime = require("../../_virtual/_rolldown/runtime.js");
3
+ const require_utils_generateRedeemScript = require("../../utils/generateRedeemScript.js");
4
+ const require_utils_isPsbtFinalized = require("../../utils/isPsbtFinalized.js");
5
+ const require_utils_toXOnly = require("../../utils/toXOnly.js");
6
+ let _bigmi_core = require("@bigmi/core");
7
+ let _lifi_sdk = require("@lifi/sdk");
8
+ let _bitcoinerlab_secp256k1 = require("@bitcoinerlab/secp256k1");
9
+ _bitcoinerlab_secp256k1 = require_runtime.__toESM(_bitcoinerlab_secp256k1, 1);
10
+ let bitcoinjs_lib = require("bitcoinjs-lib");
11
+ //#region src/core/tasks/BitcoinSignAndExecuteTask.ts
12
+ var BitcoinSignAndExecuteTask = class extends _lifi_sdk.BaseStepExecutionTask {
13
+ async run(context) {
14
+ const { step, walletClient, statusManager, executionOptions, fromChain, publicClient, checkClient, isBridgeExecution } = context;
15
+ const action = statusManager.findAction(step, isBridgeExecution ? "CROSS_CHAIN" : "SWAP");
16
+ if (!action) throw new _lifi_sdk.TransactionError(_lifi_sdk.LiFiErrorCode.TransactionUnprepared, "Unable to prepare transaction. Action not found.");
17
+ const transactionRequestData = await (0, _lifi_sdk.getTransactionRequestData)(step, executionOptions);
18
+ checkClient(step);
19
+ const psbtHex = transactionRequestData;
20
+ (0, bitcoinjs_lib.initEccLib)(_bitcoinerlab_secp256k1);
21
+ const psbt = bitcoinjs_lib.Psbt.fromHex(psbtHex, { network: bitcoinjs_lib.networks.bitcoin });
22
+ psbt.data.inputs.forEach((input, index) => {
23
+ const addressInfo = (0, _bigmi_core.getAddressInfo)(input.witnessUtxo ? bitcoinjs_lib.address.fromOutputScript(input.witnessUtxo.script, bitcoinjs_lib.networks.bitcoin) : walletClient.account?.address);
24
+ if (addressInfo.type === _bigmi_core.AddressType.p2tr) {
25
+ if (!input.tapInternalKey) {
26
+ const pubKey = walletClient.account?.publicKey;
27
+ if (pubKey) {
28
+ const tapInternalKey = require_utils_toXOnly.toXOnly((0, _bigmi_core.hexToUnit8Array)(pubKey));
29
+ psbt.updateInput(index, { tapInternalKey });
30
+ }
31
+ }
32
+ if (!input.sighashType) psbt.updateInput(index, { sighashType: 1 });
33
+ }
34
+ if (addressInfo.type === _bigmi_core.AddressType.p2sh) {
35
+ if (!input.redeemScript) {
36
+ const pubKey = walletClient.account?.publicKey;
37
+ if (pubKey) psbt.updateInput(index, { redeemScript: require_utils_generateRedeemScript.generateRedeemScript((0, _bigmi_core.hexToUnit8Array)(pubKey)) });
38
+ }
39
+ }
40
+ });
41
+ const inputsToSign = Array.from(psbt.data.inputs.reduce((map, input, index) => {
42
+ const accountAddress = input.witnessUtxo ? bitcoinjs_lib.address.fromOutputScript(input.witnessUtxo.script, bitcoinjs_lib.networks.bitcoin) : walletClient.account?.address;
43
+ if (map.has(accountAddress)) map.get(accountAddress).signingIndexes.push(index);
44
+ else map.set(accountAddress, {
45
+ address: accountAddress,
46
+ sigHash: 1,
47
+ signingIndexes: [index]
48
+ });
49
+ return map;
50
+ }, /* @__PURE__ */ new Map()).values());
51
+ const signedPsbtHex = await (0, _bigmi_core.withTimeout)(() => (0, _bigmi_core.signPsbt)(walletClient, {
52
+ psbt: psbt.toHex(),
53
+ inputsToSign,
54
+ finalize: false
55
+ }), {
56
+ timeout: 6e5,
57
+ errorInstance: new _lifi_sdk.TransactionError(_lifi_sdk.LiFiErrorCode.TransactionExpired, "Transaction has expired.")
58
+ });
59
+ const signedPsbt = bitcoinjs_lib.Psbt.fromHex(signedPsbtHex);
60
+ if (!require_utils_isPsbtFinalized.isPsbtFinalized(signedPsbt)) signedPsbt.finalizeAllInputs();
61
+ const txHex = signedPsbt.extractTransaction().toHex();
62
+ const txHash = await publicClient.sendUTXOTransaction({ hex: txHex });
63
+ statusManager.updateAction(step, action.type, "PENDING", {
64
+ txHash,
65
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
66
+ txHex,
67
+ signedAt: Date.now()
68
+ });
69
+ return { status: "COMPLETED" };
70
+ }
71
+ };
72
+ //#endregion
73
+ exports.BitcoinSignAndExecuteTask = BitcoinSignAndExecuteTask;
74
+
75
+ //# sourceMappingURL=BitcoinSignAndExecuteTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitcoinSignAndExecuteTask.js","names":["BaseStepExecutionTask","TransactionError","LiFiErrorCode","ecc","Psbt","networks","address","AddressType","toXOnly","generateRedeemScript","isPsbtFinalized"],"sources":["../../../../src/core/tasks/BitcoinSignAndExecuteTask.ts"],"sourcesContent":["import {\n AddressType,\n getAddressInfo,\n hexToUnit8Array,\n signPsbt,\n withTimeout,\n} from '@bigmi/core'\nimport * as ecc from '@bitcoinerlab/secp256k1'\nimport {\n BaseStepExecutionTask,\n getTransactionRequestData,\n LiFiErrorCode,\n type TaskResult,\n TransactionError,\n} from '@lifi/sdk'\nimport { address, initEccLib, networks, Psbt } from 'bitcoinjs-lib'\nimport type { BitcoinStepExecutorContext } from '../../types.js'\nimport { generateRedeemScript } from '../../utils/generateRedeemScript.js'\nimport { isPsbtFinalized } from '../../utils/isPsbtFinalized.js'\nimport { toXOnly } from '../../utils/toXOnly.js'\n\nexport class BitcoinSignAndExecuteTask extends BaseStepExecutionTask {\n async run(context: BitcoinStepExecutorContext): Promise<TaskResult> {\n const {\n step,\n walletClient,\n statusManager,\n executionOptions,\n fromChain,\n publicClient,\n checkClient,\n isBridgeExecution,\n } = context\n\n const action = statusManager.findAction(\n step,\n isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'\n )\n\n if (!action) {\n throw new TransactionError(\n LiFiErrorCode.TransactionUnprepared,\n 'Unable to prepare transaction. Action not found.'\n )\n }\n\n const transactionRequestData = await getTransactionRequestData(\n step,\n executionOptions\n )\n\n checkClient(step)\n\n const psbtHex = transactionRequestData\n\n // Initialize ECC library required for Taproot operations\n // https://github.com/bitcoinjs/bitcoinjs-lib?tab=readme-ov-file#using-taproot\n initEccLib(ecc)\n\n const psbt = Psbt.fromHex(psbtHex, { network: networks.bitcoin })\n\n psbt.data.inputs.forEach((input, index) => {\n const accountAddress = input.witnessUtxo\n ? address.fromOutputScript(input.witnessUtxo.script, networks.bitcoin)\n : (walletClient.account?.address as string)\n const addressInfo = getAddressInfo(accountAddress)\n if (addressInfo.type === AddressType.p2tr) {\n // Taproot (P2TR) addresses require specific PSBT fields for proper signing\n\n // tapInternalKey: Required for Taproot key-path spending\n // Most wallets / libraries usually handle this already\n if (!input.tapInternalKey) {\n const pubKey = walletClient.account?.publicKey\n if (pubKey) {\n const tapInternalKey = toXOnly(hexToUnit8Array(pubKey))\n psbt.updateInput(index, {\n tapInternalKey,\n })\n }\n }\n // sighashType: Required by bitcoinjs-lib even though the bitcoin protocol allows defaults\n // check if sighashType is default (0) or not set (undefined)\n if (!input.sighashType) {\n psbt.updateInput(index, {\n sighashType: 1, // Default to Transaction.SIGHASH_ALL - 1\n })\n }\n }\n // redeemScript: Required by Pay-to-Script-Hash (P2SH) addresses for proper spending\n if (addressInfo.type === AddressType.p2sh) {\n if (!input.redeemScript) {\n const pubKey = walletClient.account?.publicKey\n if (pubKey) {\n psbt.updateInput(index, {\n redeemScript: generateRedeemScript(hexToUnit8Array(pubKey)),\n })\n }\n }\n }\n })\n\n const inputsToSign = Array.from(\n psbt.data.inputs\n .reduce((map, input, index) => {\n const accountAddress = input.witnessUtxo\n ? address.fromOutputScript(\n input.witnessUtxo.script,\n networks.bitcoin\n )\n : (walletClient.account?.address as string)\n if (map.has(accountAddress)) {\n map.get(accountAddress)!.signingIndexes.push(index)\n } else {\n map.set(accountAddress, {\n address: accountAddress,\n sigHash: 1, // Default to Transaction.SIGHASH_ALL - 1\n signingIndexes: [index],\n })\n }\n return map\n }, new Map<\n string,\n { address: string; sigHash: number; signingIndexes: number[] }\n >())\n .values()\n )\n\n // We give users 10 minutes to sign the transaction or it should be considered expired\n const signedPsbtHex = await withTimeout(\n () =>\n signPsbt(walletClient, {\n psbt: psbt.toHex(),\n inputsToSign: inputsToSign,\n finalize: false,\n }),\n {\n timeout: 600_000,\n errorInstance: new TransactionError(\n LiFiErrorCode.TransactionExpired,\n 'Transaction has expired.'\n ),\n }\n )\n\n const signedPsbt = Psbt.fromHex(signedPsbtHex)\n\n if (!isPsbtFinalized(signedPsbt)) {\n signedPsbt.finalizeAllInputs()\n }\n\n const txHex = signedPsbt.extractTransaction().toHex()\n\n const txHash = await publicClient.sendUTXOTransaction({\n hex: txHex,\n })\n\n statusManager.updateAction(step, action.type, 'PENDING', {\n txHash: txHash,\n txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,\n txHex,\n signedAt: Date.now(),\n })\n\n return {\n status: 'COMPLETED',\n }\n }\n}\n"],"mappings":";;;;;;;;;;;AAqBA,IAAa,4BAAb,cAA+CA,UAAAA,sBAAsB;CACnE,MAAM,IAAI,SAA0D;EAClE,MAAM,EACJ,MACA,cACA,eACA,kBACA,WACA,cACA,aACA,sBACE;EAEJ,MAAM,SAAS,cAAc,WAC3B,MACA,oBAAoB,gBAAgB,MACtC;EAEA,IAAI,CAAC,QACH,MAAM,IAAIC,UAAAA,iBACRC,UAAAA,cAAc,uBACd,kDACF;EAGF,MAAM,yBAAyB,OAAA,GAAA,UAAA,0BAAA,CAC7B,MACA,gBACF;EAEA,YAAY,IAAI;EAEhB,MAAM,UAAU;EAIhB,CAAA,GAAA,cAAA,WAAA,CAAWC,uBAAG;EAEd,MAAM,OAAOC,cAAAA,KAAK,QAAQ,SAAS,EAAE,SAASC,cAAAA,SAAS,QAAQ,CAAC;EAEhE,KAAK,KAAK,OAAO,SAAS,OAAO,UAAU;GAIzC,MAAM,eAAA,GAAA,YAAA,eAAA,CAHiB,MAAM,cACzBC,cAAAA,QAAQ,iBAAiB,MAAM,YAAY,QAAQD,cAAAA,SAAS,OAAO,IAClE,aAAa,SAAS,OACsB;GACjD,IAAI,YAAY,SAASE,YAAAA,YAAY,MAAM;IAKzC,IAAI,CAAC,MAAM,gBAAgB;KACzB,MAAM,SAAS,aAAa,SAAS;KACrC,IAAI,QAAQ;MACV,MAAM,iBAAiBC,sBAAAA,SAAAA,GAAAA,YAAAA,gBAAAA,CAAwB,MAAM,CAAC;MACtD,KAAK,YAAY,OAAO,EACtB,eACF,CAAC;KACH;IACF;IAGA,IAAI,CAAC,MAAM,aACT,KAAK,YAAY,OAAO,EACtB,aAAa,EACf,CAAC;GAEL;GAEA,IAAI,YAAY,SAASD,YAAAA,YAAY;QAC/B,CAAC,MAAM,cAAc;KACvB,MAAM,SAAS,aAAa,SAAS;KACrC,IAAI,QACF,KAAK,YAAY,OAAO,EACtB,cAAcE,mCAAAA,sBAAAA,GAAAA,YAAAA,gBAAAA,CAAqC,MAAM,CAAC,EAC5D,CAAC;IAEL;;EAEJ,CAAC;EAED,MAAM,eAAe,MAAM,KACzB,KAAK,KAAK,OACP,QAAQ,KAAK,OAAO,UAAU;GAC7B,MAAM,iBAAiB,MAAM,cACzBH,cAAAA,QAAQ,iBACN,MAAM,YAAY,QAClBD,cAAAA,SAAS,OACX,IACC,aAAa,SAAS;GAC3B,IAAI,IAAI,IAAI,cAAc,GACxB,IAAI,IAAI,cAAc,CAAC,CAAE,eAAe,KAAK,KAAK;QAElD,IAAI,IAAI,gBAAgB;IACtB,SAAS;IACT,SAAS;IACT,gBAAgB,CAAC,KAAK;GACxB,CAAC;GAEH,OAAO;EACT,mBAAG,IAAI,IAGL,CAAC,CAAC,CACH,OAAO,CACZ;EAGA,MAAM,gBAAgB,OAAA,GAAA,YAAA,YAAA,QAAA,GAAA,YAAA,SAAA,CAET,cAAc;GACrB,MAAM,KAAK,MAAM;GACH;GACd,UAAU;EACZ,CAAC,GACH;GACE,SAAS;GACT,eAAe,IAAIJ,UAAAA,iBACjBC,UAAAA,cAAc,oBACd,0BACF;EACF,CACF;EAEA,MAAM,aAAaE,cAAAA,KAAK,QAAQ,aAAa;EAE7C,IAAI,CAACM,8BAAAA,gBAAgB,UAAU,GAC7B,WAAW,kBAAkB;EAG/B,MAAM,QAAQ,WAAW,mBAAmB,CAAC,CAAC,MAAM;EAEpD,MAAM,SAAS,MAAM,aAAa,oBAAoB,EACpD,KAAK,MACP,CAAC;EAED,cAAc,aAAa,MAAM,OAAO,MAAM,WAAW;GAC/C;GACR,QAAQ,GAAG,UAAU,SAAS,kBAAkB,GAAG,KAAK;GACxD;GACA,UAAU,KAAK,IAAI;EACrB,CAAC;EAED,OAAO,EACL,QAAQ,YACV;CACF;AACF"}
@@ -0,0 +1,10 @@
1
+ import { BitcoinStepExecutorContext } from "../../types.js";
2
+ import { BaseStepExecutionTask, TaskResult } from "@lifi/sdk";
3
+
4
+ //#region src/core/tasks/BitcoinWaitForTransactionTask.d.ts
5
+ declare class BitcoinWaitForTransactionTask extends BaseStepExecutionTask {
6
+ run(context: BitcoinStepExecutorContext): Promise<TaskResult>;
7
+ }
8
+ //#endregion
9
+ export { BitcoinWaitForTransactionTask };
10
+ //# sourceMappingURL=BitcoinWaitForTransactionTask.d.ts.map
@@ -0,0 +1,38 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let _bigmi_core = require("@bigmi/core");
3
+ let _lifi_sdk = require("@lifi/sdk");
4
+ //#region src/core/tasks/BitcoinWaitForTransactionTask.ts
5
+ var BitcoinWaitForTransactionTask = class extends _lifi_sdk.BaseStepExecutionTask {
6
+ async run(context) {
7
+ const { step, statusManager, fromChain, isBridgeExecution, walletClient, publicClient, checkClient } = context;
8
+ const action = statusManager.findAction(step, isBridgeExecution ? "CROSS_CHAIN" : "SWAP");
9
+ const txHex = action?.txHex;
10
+ const txHash = action?.txHash;
11
+ if (!txHash || !txHex) throw new _lifi_sdk.TransactionError(_lifi_sdk.LiFiErrorCode.TransactionUnprepared, "Unable to prepare transaction. Transaction hash or hex is not set.");
12
+ checkClient(step);
13
+ let replacementReason;
14
+ const transaction = await (0, _bigmi_core.waitForTransaction)(publicClient, {
15
+ txId: txHash,
16
+ txHex,
17
+ senderAddress: walletClient.account?.address,
18
+ onReplaced: (response) => {
19
+ replacementReason = response.reason;
20
+ statusManager.updateAction(step, action.type, "PENDING", {
21
+ txHash: response.transaction.txid,
22
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${response.transaction.txid}`
23
+ });
24
+ }
25
+ });
26
+ if (replacementReason === "cancelled") throw new _lifi_sdk.TransactionError(_lifi_sdk.LiFiErrorCode.TransactionCanceled, "User canceled transaction.");
27
+ if (transaction.txid !== txHash) statusManager.updateAction(step, action.type, "PENDING", {
28
+ txHash: transaction.txid,
29
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${transaction.txid}`
30
+ });
31
+ if (isBridgeExecution) statusManager.updateAction(step, action.type, "DONE");
32
+ return { status: "COMPLETED" };
33
+ }
34
+ };
35
+ //#endregion
36
+ exports.BitcoinWaitForTransactionTask = BitcoinWaitForTransactionTask;
37
+
38
+ //# sourceMappingURL=BitcoinWaitForTransactionTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitcoinWaitForTransactionTask.js","names":["BaseStepExecutionTask","TransactionError","LiFiErrorCode"],"sources":["../../../../src/core/tasks/BitcoinWaitForTransactionTask.ts"],"sourcesContent":["import type { ReplacementReason } from '@bigmi/core'\nimport { waitForTransaction } from '@bigmi/core'\nimport {\n BaseStepExecutionTask,\n LiFiErrorCode,\n type TaskResult,\n TransactionError,\n} from '@lifi/sdk'\nimport type { BitcoinStepExecutorContext } from '../../types.js'\n\nexport class BitcoinWaitForTransactionTask extends BaseStepExecutionTask {\n async run(context: BitcoinStepExecutorContext): Promise<TaskResult> {\n const {\n step,\n statusManager,\n fromChain,\n isBridgeExecution,\n walletClient,\n publicClient,\n checkClient,\n } = context\n\n const action = statusManager.findAction(\n step,\n isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'\n )\n\n const txHex = action?.txHex\n const txHash = action?.txHash\n\n if (!txHash || !txHex) {\n throw new TransactionError(\n LiFiErrorCode.TransactionUnprepared,\n 'Unable to prepare transaction. Transaction hash or hex is not set.'\n )\n }\n\n checkClient(step)\n\n let replacementReason: ReplacementReason | undefined\n const transaction = await waitForTransaction(publicClient, {\n txId: txHash,\n txHex,\n senderAddress: walletClient.account?.address,\n onReplaced: (response) => {\n replacementReason = response.reason\n statusManager.updateAction(step, action.type, 'PENDING', {\n txHash: response.transaction.txid,\n txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${response.transaction.txid}`,\n })\n },\n })\n\n if (replacementReason === 'cancelled') {\n throw new TransactionError(\n LiFiErrorCode.TransactionCanceled,\n 'User canceled transaction.'\n )\n }\n\n if (transaction.txid !== txHash) {\n statusManager.updateAction(step, action.type, 'PENDING', {\n txHash: transaction.txid,\n txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${transaction.txid}`,\n })\n }\n\n if (isBridgeExecution) {\n statusManager.updateAction(step, action.type, 'DONE')\n }\n\n return { status: 'COMPLETED' }\n }\n}\n"],"mappings":";;;;AAUA,IAAa,gCAAb,cAAmDA,UAAAA,sBAAsB;CACvE,MAAM,IAAI,SAA0D;EAClE,MAAM,EACJ,MACA,eACA,WACA,mBACA,cACA,cACA,gBACE;EAEJ,MAAM,SAAS,cAAc,WAC3B,MACA,oBAAoB,gBAAgB,MACtC;EAEA,MAAM,QAAQ,QAAQ;EACtB,MAAM,SAAS,QAAQ;EAEvB,IAAI,CAAC,UAAU,CAAC,OACd,MAAM,IAAIC,UAAAA,iBACRC,UAAAA,cAAc,uBACd,oEACF;EAGF,YAAY,IAAI;EAEhB,IAAI;EACJ,MAAM,cAAc,OAAA,GAAA,YAAA,mBAAA,CAAyB,cAAc;GACzD,MAAM;GACN;GACA,eAAe,aAAa,SAAS;GACrC,aAAa,aAAa;IACxB,oBAAoB,SAAS;IAC7B,cAAc,aAAa,MAAM,OAAO,MAAM,WAAW;KACvD,QAAQ,SAAS,YAAY;KAC7B,QAAQ,GAAG,UAAU,SAAS,kBAAkB,GAAG,KAAK,SAAS,YAAY;IAC/E,CAAC;GACH;EACF,CAAC;EAED,IAAI,sBAAsB,aACxB,MAAM,IAAID,UAAAA,iBACRC,UAAAA,cAAc,qBACd,4BACF;EAGF,IAAI,YAAY,SAAS,QACvB,cAAc,aAAa,MAAM,OAAO,MAAM,WAAW;GACvD,QAAQ,YAAY;GACpB,QAAQ,GAAG,UAAU,SAAS,kBAAkB,GAAG,KAAK,YAAY;EACtE,CAAC;EAGH,IAAI,mBACF,cAAc,aAAa,MAAM,OAAO,MAAM,MAAM;EAGtD,OAAO,EAAE,QAAQ,YAAY;CAC/B;AACF"}
@@ -1,2 +1,7 @@
1
- import { type ExecutionAction, type LiFiStep, SDKError } from '@lifi/sdk';
2
- export declare const parseBitcoinErrors: (e: Error, step?: LiFiStep, action?: ExecutionAction) => Promise<SDKError>;
1
+ import { ExecutionAction, LiFiStep, SDKError } from "@lifi/sdk";
2
+
3
+ //#region src/errors/parseBitcoinErrors.d.ts
4
+ declare const parseBitcoinErrors: (e: Error, step?: LiFiStep, action?: ExecutionAction) => Promise<SDKError>;
5
+ //#endregion
6
+ export { parseBitcoinErrors };
7
+ //# sourceMappingURL=parseBitcoinErrors.d.ts.map
@@ -1,31 +1,22 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseBitcoinErrors = void 0;
4
- const sdk_1 = require("@lifi/sdk");
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let _lifi_sdk = require("@lifi/sdk");
3
+ //#region src/errors/parseBitcoinErrors.ts
5
4
  const parseBitcoinErrors = async (e, step, action) => {
6
- if (e instanceof sdk_1.SDKError) {
7
- e.step = e.step ?? step;
8
- e.action = e.action ?? action;
9
- return e;
10
- }
11
- const baseError = handleSpecificErrors(e);
12
- return new sdk_1.SDKError(baseError, step, action);
5
+ if (e instanceof _lifi_sdk.SDKError) {
6
+ e.step = e.step ?? step;
7
+ e.action = e.action ?? action;
8
+ return e;
9
+ }
10
+ return new _lifi_sdk.SDKError(handleSpecificErrors(e), step, action);
13
11
  };
14
- exports.parseBitcoinErrors = parseBitcoinErrors;
15
12
  const handleSpecificErrors = (e) => {
16
- if (e.details?.includes?.('conflict') ||
17
- e.cause?.message?.includes?.('conflict')) {
18
- return new sdk_1.TransactionError(sdk_1.LiFiErrorCode.TransactionConflict, 'Your transaction conflicts with another transaction already in the mempool. One or more inputs have been spent by another transaction.', e);
19
- }
20
- if (e.code === 4001 || e.code === -32000 || e.cause?.includes?.('rejected')) {
21
- return new sdk_1.TransactionError(sdk_1.LiFiErrorCode.SignatureRejected, e.message, e);
22
- }
23
- if (e.code === -5 || e.code === -32700 || e.code === -32064) {
24
- return new sdk_1.TransactionError(sdk_1.LiFiErrorCode.NotFound, e.message, e);
25
- }
26
- if (e instanceof sdk_1.BaseError) {
27
- return e;
28
- }
29
- return new sdk_1.UnknownError(e.message || sdk_1.ErrorMessage.UnknownError, e);
13
+ if (e.details?.includes?.("conflict") || e.cause?.message?.includes?.("conflict")) return new _lifi_sdk.TransactionError(_lifi_sdk.LiFiErrorCode.TransactionConflict, "Your transaction conflicts with another transaction already in the mempool. One or more inputs have been spent by another transaction.", e);
14
+ if (e.code === 4001 || e.code === -32e3 || e.cause?.includes?.("rejected")) return new _lifi_sdk.TransactionError(_lifi_sdk.LiFiErrorCode.SignatureRejected, e.message, e);
15
+ if (e.code === -5 || e.code === -32700 || e.code === -32064) return new _lifi_sdk.TransactionError(_lifi_sdk.LiFiErrorCode.NotFound, e.message, e);
16
+ if (e instanceof _lifi_sdk.BaseError) return e;
17
+ return new _lifi_sdk.UnknownError(e.message || _lifi_sdk.ErrorMessage.UnknownError, e);
30
18
  };
19
+ //#endregion
20
+ exports.parseBitcoinErrors = parseBitcoinErrors;
21
+
31
22
  //# sourceMappingURL=parseBitcoinErrors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseBitcoinErrors.js","sourceRoot":"","sources":["../../../src/errors/parseBitcoinErrors.ts"],"names":[],"mappings":";;;AAAA,mCASkB;AAEX,MAAM,kBAAkB,GAAG,KAAK,EACrC,CAAQ,EACR,IAAe,EACf,MAAwB,EACL,EAAE;IACrB,IAAI,CAAC,YAAY,cAAQ,EAAE,CAAC;QAC1B,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAA;QACvB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,MAAM,CAAA;QAC7B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAA;IAEzC,OAAO,IAAI,cAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AAC9C,CAAC,CAAA;AAdY,QAAA,kBAAkB,sBAc9B;AAED,MAAM,oBAAoB,GAAG,CAAC,CAAM,EAAE,EAAE;IAEtC,IACE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC;QACjC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EACxC,CAAC;QACD,OAAO,IAAI,sBAAgB,CACzB,mBAAa,CAAC,mBAAmB,EACjC,wIAAwI,EACxI,CAAC,CACF,CAAA;IACH,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5E,OAAO,IAAI,sBAAgB,CAAC,mBAAa,CAAC,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IAC5E,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5D,OAAO,IAAI,sBAAgB,CAAC,mBAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IACnE,CAAC;IAED,IAAI,CAAC,YAAY,eAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,OAAO,IAAI,kBAAY,CAAC,CAAC,CAAC,OAAO,IAAI,kBAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAA;AACpE,CAAC,CAAA"}
1
+ {"version":3,"file":"parseBitcoinErrors.js","names":["SDKError","TransactionError","LiFiErrorCode","BaseError","UnknownError","ErrorMessage"],"sources":["../../../src/errors/parseBitcoinErrors.ts"],"sourcesContent":["import {\n BaseError,\n ErrorMessage,\n type ExecutionAction,\n LiFiErrorCode,\n type LiFiStep,\n SDKError,\n TransactionError,\n UnknownError,\n} from '@lifi/sdk'\n\nexport const parseBitcoinErrors = async (\n e: Error,\n step?: LiFiStep,\n action?: ExecutionAction\n): Promise<SDKError> => {\n if (e instanceof SDKError) {\n e.step = e.step ?? step\n e.action = e.action ?? action\n return e\n }\n\n const baseError = handleSpecificErrors(e)\n\n return new SDKError(baseError, step, action)\n}\n\nconst handleSpecificErrors = (e: any) => {\n // txn-mempool-conflict\n if (\n e.details?.includes?.('conflict') ||\n e.cause?.message?.includes?.('conflict')\n ) {\n return new TransactionError(\n LiFiErrorCode.TransactionConflict,\n 'Your transaction conflicts with another transaction already in the mempool. One or more inputs have been spent by another transaction.',\n e\n )\n }\n if (e.code === 4001 || e.code === -32000 || e.cause?.includes?.('rejected')) {\n return new TransactionError(LiFiErrorCode.SignatureRejected, e.message, e)\n }\n if (e.code === -5 || e.code === -32700 || e.code === -32064) {\n return new TransactionError(LiFiErrorCode.NotFound, e.message, e)\n }\n\n if (e instanceof BaseError) {\n return e\n }\n\n return new UnknownError(e.message || ErrorMessage.UnknownError, e)\n}\n"],"mappings":";;;AAWA,MAAa,qBAAqB,OAChC,GACA,MACA,WACsB;CACtB,IAAI,aAAaA,UAAAA,UAAU;EACzB,EAAE,OAAO,EAAE,QAAQ;EACnB,EAAE,SAAS,EAAE,UAAU;EACvB,OAAO;CACT;CAIA,OAAO,IAAIA,UAAAA,SAFO,qBAAqB,CAEX,GAAG,MAAM,MAAM;AAC7C;AAEA,MAAM,wBAAwB,MAAW;CAEvC,IACE,EAAE,SAAS,WAAW,UAAU,KAChC,EAAE,OAAO,SAAS,WAAW,UAAU,GAEvC,OAAO,IAAIC,UAAAA,iBACTC,UAAAA,cAAc,qBACd,0IACA,CACF;CAEF,IAAI,EAAE,SAAS,QAAQ,EAAE,SAAS,SAAU,EAAE,OAAO,WAAW,UAAU,GACxE,OAAO,IAAID,UAAAA,iBAAiBC,UAAAA,cAAc,mBAAmB,EAAE,SAAS,CAAC;CAE3E,IAAI,EAAE,SAAS,MAAM,EAAE,SAAS,UAAU,EAAE,SAAS,QACnD,OAAO,IAAID,UAAAA,iBAAiBC,UAAAA,cAAc,UAAU,EAAE,SAAS,CAAC;CAGlE,IAAI,aAAaC,UAAAA,WACf,OAAO;CAGT,OAAO,IAAIC,UAAAA,aAAa,EAAE,WAAWC,UAAAA,aAAa,cAAc,CAAC;AACnE"}
@@ -1,3 +1,3 @@
1
- export { BitcoinProvider } from './BitcoinProvider.js';
2
- export type { BitcoinProviderOptions, BitcoinSDKProvider } from './types.js';
3
- export { isBitcoinProvider } from './types.js';
1
+ import { BitcoinProviderOptions, BitcoinSDKProvider, isBitcoinProvider } from "./types.js";
2
+ import { BitcoinProvider } from "./BitcoinProvider.js";
3
+ export { BitcoinProvider, type BitcoinProviderOptions, type BitcoinSDKProvider, isBitcoinProvider };
package/dist/cjs/index.js CHANGED
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isBitcoinProvider = exports.BitcoinProvider = void 0;
4
- var BitcoinProvider_js_1 = require("./BitcoinProvider.js");
5
- Object.defineProperty(exports, "BitcoinProvider", { enumerable: true, get: function () { return BitcoinProvider_js_1.BitcoinProvider; } });
6
- var types_js_1 = require("./types.js");
7
- Object.defineProperty(exports, "isBitcoinProvider", { enumerable: true, get: function () { return types_js_1.isBitcoinProvider; } });
8
- //# sourceMappingURL=index.js.map
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_BitcoinProvider = require("./BitcoinProvider.js");
3
+ const require_types = require("./types.js");
4
+ exports.BitcoinProvider = require_BitcoinProvider.BitcoinProvider;
5
+ exports.isBitcoinProvider = require_types.isBitcoinProvider;
@@ -1,9 +1,20 @@
1
- import type { Client } from '@bigmi/core';
2
- import { type SDKProvider } from '@lifi/sdk';
3
- export interface BitcoinProviderOptions {
4
- getWalletClient?: () => Promise<Client>;
1
+ import { PublicClient } from "./client/publicClient.js";
2
+ import { Client } from "@bigmi/core";
3
+ import { LiFiStepExtended, SDKProvider, StepExecutorContext } from "@lifi/sdk";
4
+
5
+ //#region src/types.d.ts
6
+ interface BitcoinProviderOptions {
7
+ getWalletClient?: () => Promise<Client>;
5
8
  }
6
- export interface BitcoinSDKProvider extends SDKProvider {
7
- setOptions(options: BitcoinProviderOptions): void;
9
+ interface BitcoinStepExecutorContext extends StepExecutorContext {
10
+ walletClient: Client;
11
+ publicClient: PublicClient;
12
+ checkClient: (step: LiFiStepExtended) => void;
8
13
  }
9
- export declare function isBitcoinProvider(provider: SDKProvider): provider is BitcoinSDKProvider;
14
+ interface BitcoinSDKProvider extends SDKProvider {
15
+ setOptions(options: BitcoinProviderOptions): void;
16
+ }
17
+ declare function isBitcoinProvider(provider: SDKProvider): provider is BitcoinSDKProvider;
18
+ //#endregion
19
+ export { BitcoinProviderOptions, BitcoinSDKProvider, BitcoinStepExecutorContext, isBitcoinProvider };
20
+ //# sourceMappingURL=types.d.ts.map
package/dist/cjs/types.js CHANGED
@@ -1,8 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isBitcoinProvider = isBitcoinProvider;
4
- const sdk_1 = require("@lifi/sdk");
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let _lifi_sdk = require("@lifi/sdk");
3
+ //#region src/types.ts
5
4
  function isBitcoinProvider(provider) {
6
- return provider.type === sdk_1.ChainType.UTXO;
5
+ return provider.type === _lifi_sdk.ChainType.UTXO;
7
6
  }
7
+ //#endregion
8
+ exports.isBitcoinProvider = isBitcoinProvider;
9
+
8
10
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;AAWA,8CAIC;AAdD,mCAAuD;AAUvD,SAAgB,iBAAiB,CAC/B,QAAqB;IAErB,OAAO,QAAQ,CAAC,IAAI,KAAK,eAAS,CAAC,IAAI,CAAA;AACzC,CAAC"}
1
+ {"version":3,"file":"types.js","names":["ChainType"],"sources":["../../src/types.ts"],"sourcesContent":["import type { Client } from '@bigmi/core'\nimport {\n ChainType,\n type LiFiStepExtended,\n type SDKProvider,\n type StepExecutorContext,\n} from '@lifi/sdk'\nimport type { PublicClient } from './client/publicClient.js'\n\nexport interface BitcoinProviderOptions {\n getWalletClient?: () => Promise<Client>\n}\n\nexport interface BitcoinStepExecutorContext extends StepExecutorContext {\n walletClient: Client\n publicClient: PublicClient\n checkClient: (step: LiFiStepExtended) => void\n}\n\nexport interface BitcoinSDKProvider extends SDKProvider {\n setOptions(options: BitcoinProviderOptions): void\n}\n\nexport function isBitcoinProvider(\n provider: SDKProvider\n): provider is BitcoinSDKProvider {\n return provider.type === ChainType.UTXO\n}\n"],"mappings":";;;AAuBA,SAAgB,kBACd,UACgC;CAChC,OAAO,SAAS,SAASA,UAAAA,UAAU;AACrC"}
@@ -1 +1,10 @@
1
- export declare const generateRedeemScript: (publicKey: Uint8Array) => Uint8Array<ArrayBufferLike> | undefined;
1
+ //#region src/utils/generateRedeemScript.d.ts
2
+ /**
3
+ * Generate redeem script for P2SH addresses
4
+ * @param publicKey
5
+ * @returns redeem script
6
+ */
7
+ declare const generateRedeemScript: (publicKey: Uint8Array) => Uint8Array | undefined;
8
+ //#endregion
9
+ export { generateRedeemScript };
10
+ //# sourceMappingURL=generateRedeemScript.d.ts.map
@@ -1,7 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateRedeemScript = void 0;
4
- const bitcoinjs_lib_1 = require("bitcoinjs-lib");
5
- const generateRedeemScript = (publicKey) => bitcoinjs_lib_1.payments.p2wpkh({ pubkey: publicKey }).output;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let bitcoinjs_lib = require("bitcoinjs-lib");
3
+ //#region src/utils/generateRedeemScript.ts
4
+ /**
5
+ * Generate redeem script for P2SH addresses
6
+ * @param publicKey
7
+ * @returns redeem script
8
+ */
9
+ const generateRedeemScript = (publicKey) => bitcoinjs_lib.payments.p2wpkh({ pubkey: publicKey }).output;
10
+ //#endregion
6
11
  exports.generateRedeemScript = generateRedeemScript;
12
+
7
13
  //# sourceMappingURL=generateRedeemScript.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateRedeemScript.js","sourceRoot":"","sources":["../../../src/utils/generateRedeemScript.ts"],"names":[],"mappings":";;;AAAA,iDAAwC;AAOjC,MAAM,oBAAoB,GAAG,CAAC,SAAqB,EAAE,EAAE,CAE5D,wBAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAA;AAFlC,QAAA,oBAAoB,wBAEc"}
1
+ {"version":3,"file":"generateRedeemScript.js","names":["payments"],"sources":["../../../src/utils/generateRedeemScript.ts"],"sourcesContent":["import { payments } from 'bitcoinjs-lib'\n\n/**\n * Generate redeem script for P2SH addresses\n * @param publicKey\n * @returns redeem script\n */\nexport const generateRedeemScript = (\n publicKey: Uint8Array\n): Uint8Array | undefined =>\n // P2SH addresses are created by hashing the public key and using the result as the script\n payments.p2wpkh({ pubkey: publicKey }).output\n"],"mappings":";;;;;;;;AAOA,MAAa,wBACX,cAGAA,cAAAA,SAAS,OAAO,EAAE,QAAQ,UAAU,CAAC,CAAC,CAAC"}
@@ -1,2 +1,7 @@
1
- import type { Psbt } from 'bitcoinjs-lib';
2
- export declare function isPsbtFinalized(psbt: Psbt): boolean;
1
+ import { Psbt } from "bitcoinjs-lib";
2
+
3
+ //#region src/utils/isPsbtFinalized.d.ts
4
+ declare function isPsbtFinalized(psbt: Psbt): boolean;
5
+ //#endregion
6
+ export { isPsbtFinalized };
7
+ //# sourceMappingURL=isPsbtFinalized.d.ts.map
@@ -1,13 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isPsbtFinalized = isPsbtFinalized;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/utils/isPsbtFinalized.ts
4
3
  function isPsbtFinalized(psbt) {
5
- try {
6
- psbt.extractTransaction();
7
- return true;
8
- }
9
- catch (_) {
10
- return false;
11
- }
4
+ try {
5
+ psbt.extractTransaction();
6
+ return true;
7
+ } catch (_) {
8
+ return false;
9
+ }
12
10
  }
11
+ //#endregion
12
+ exports.isPsbtFinalized = isPsbtFinalized;
13
+
13
14
  //# sourceMappingURL=isPsbtFinalized.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isPsbtFinalized.js","sourceRoot":"","sources":["../../../src/utils/isPsbtFinalized.ts"],"names":[],"mappings":";;AAEA,0CAOC;AAPD,SAAgB,eAAe,CAAC,IAAU;IACxC,IAAI,CAAC;QACH,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"isPsbtFinalized.js","names":[],"sources":["../../../src/utils/isPsbtFinalized.ts"],"sourcesContent":["import type { Psbt } from 'bitcoinjs-lib'\n\nexport function isPsbtFinalized(psbt: Psbt): boolean {\n try {\n psbt.extractTransaction()\n return true\n } catch (_) {\n return false\n }\n}\n"],"mappings":";;AAEA,SAAgB,gBAAgB,MAAqB;CACnD,IAAI;EACF,KAAK,mBAAmB;EACxB,OAAO;CACT,SAAS,GAAG;EACV,OAAO;CACT;AACF"}
@@ -1,3 +1,8 @@
1
- import { ChainId as BigmiChainId } from '@bigmi/core';
2
- import { ChainId } from '@lifi/sdk';
3
- export declare const toBigmiChainId: (chainId: ChainId) => BigmiChainId;
1
+ import { ChainId } from "@bigmi/core";
2
+ import { ChainId as ChainId$1 } from "@lifi/sdk";
3
+
4
+ //#region src/utils/toBigmiChainId.d.ts
5
+ declare const toBigmiChainId: (chainId: ChainId$1) => ChainId;
6
+ //#endregion
7
+ export { toBigmiChainId };
8
+ //# sourceMappingURL=toBigmiChainId.d.ts.map
@@ -1,15 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toBigmiChainId = void 0;
4
- const core_1 = require("@bigmi/core");
5
- const sdk_1 = require("@lifi/sdk");
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let _bigmi_core = require("@bigmi/core");
3
+ let _lifi_sdk = require("@lifi/sdk");
4
+ //#region src/utils/toBigmiChainId.ts
6
5
  const toBigmiChainId = (chainId) => {
7
- switch (chainId) {
8
- case sdk_1.ChainId.BTC:
9
- return core_1.ChainId.BITCOIN_MAINNET;
10
- default:
11
- throw new Error(`Unsupported chainId mapping: ${chainId}`);
12
- }
6
+ switch (chainId) {
7
+ case _lifi_sdk.ChainId.BTC: return _bigmi_core.ChainId.BITCOIN_MAINNET;
8
+ default: throw new Error(`Unsupported chainId mapping: ${chainId}`);
9
+ }
13
10
  };
11
+ //#endregion
14
12
  exports.toBigmiChainId = toBigmiChainId;
13
+
15
14
  //# sourceMappingURL=toBigmiChainId.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toBigmiChainId.js","sourceRoot":"","sources":["../../../src/utils/toBigmiChainId.ts"],"names":[],"mappings":";;;AAAA,sCAAqD;AACrD,mCAAmC;AAE5B,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAgB,EAAE;IAC/D,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,aAAO,CAAC,GAAG;YACd,OAAO,cAAY,CAAC,eAAe,CAAA;QACrC;YACE,MAAM,IAAI,KAAK,CAAC,gCAAgC,OAAO,EAAE,CAAC,CAAA;IAC9D,CAAC;AACH,CAAC,CAAA;AAPY,QAAA,cAAc,kBAO1B"}
1
+ {"version":3,"file":"toBigmiChainId.js","names":["ChainId","BigmiChainId"],"sources":["../../../src/utils/toBigmiChainId.ts"],"sourcesContent":["import { ChainId as BigmiChainId } from '@bigmi/core'\nimport { ChainId } from '@lifi/sdk'\n\nexport const toBigmiChainId = (chainId: ChainId): BigmiChainId => {\n switch (chainId) {\n case ChainId.BTC:\n return BigmiChainId.BITCOIN_MAINNET\n default:\n throw new Error(`Unsupported chainId mapping: ${chainId}`)\n }\n}\n"],"mappings":";;;;AAGA,MAAa,kBAAkB,YAAmC;CAChE,QAAQ,SAAR;EACE,KAAKA,UAAAA,QAAQ,KACX,OAAOC,YAAAA,QAAa;EACtB,SACE,MAAM,IAAI,MAAM,gCAAgC,SAAS;CAC7D;AACF"}
@@ -1 +1,5 @@
1
- export declare const toXOnly: (pubKey: Uint8Array) => Uint8Array<ArrayBufferLike>;
1
+ //#region src/utils/toXOnly.d.ts
2
+ declare const toXOnly: (pubKey: Uint8Array) => Uint8Array;
3
+ //#endregion
4
+ export { toXOnly };
5
+ //# sourceMappingURL=toXOnly.d.ts.map
@@ -1,6 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toXOnly = void 0;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/utils/toXOnly.ts
4
3
  const toXOnly = (pubKey) => pubKey.length === 32 ? pubKey : pubKey.subarray(1, 33);
4
+ //#endregion
5
5
  exports.toXOnly = toXOnly;
6
+
6
7
  //# sourceMappingURL=toXOnly.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toXOnly.js","sourceRoot":"","sources":["../../../src/utils/toXOnly.ts"],"names":[],"mappings":";;;AACO,MAAM,OAAO,GAAG,CAAC,MAAkB,EAAE,EAAE,CAC5C,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAD3C,QAAA,OAAO,WACoC"}
1
+ {"version":3,"file":"toXOnly.js","names":[],"sources":["../../../src/utils/toXOnly.ts"],"sourcesContent":["// helper function to convert full public key (33 bytes) to x-only compressed format (32 bytes) required after taproot update\nexport const toXOnly = (pubKey: Uint8Array): Uint8Array =>\n pubKey.length === 32 ? pubKey : pubKey.subarray(1, 33)\n"],"mappings":";;AACA,MAAa,WAAW,WACtB,OAAO,WAAW,KAAK,SAAS,OAAO,SAAS,GAAG,EAAE"}
@@ -1,2 +1,6 @@
1
- export declare const name = "@lifi/sdk-provider-bitcoin";
2
- export declare const version = "4.0.1-alpha.0";
1
+ //#region src/version.d.ts
2
+ declare const name = "@lifi/sdk-provider-bitcoin";
3
+ declare const version = "4.0.1";
4
+ //#endregion
5
+ export { name, version };
6
+ //# sourceMappingURL=version.d.ts.map
@@ -1,6 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.version = exports.name = void 0;
4
- exports.name = '@lifi/sdk-provider-bitcoin';
5
- exports.version = '4.0.1-alpha.0';
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/version.ts
3
+ const name = "@lifi/sdk-provider-bitcoin";
4
+ const version = "4.0.1";
5
+ //#endregion
6
+ exports.name = name;
7
+ exports.version = version;
8
+
6
9
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,IAAI,GAAG,4BAA4B,CAAA;AACnC,QAAA,OAAO,GAAG,eAAe,CAAA"}
1
+ {"version":3,"file":"version.js","names":[],"sources":["../../src/version.ts"],"sourcesContent":["export const name = '@lifi/sdk-provider-bitcoin'\nexport const version = '4.0.1'\n"],"mappings":";;AAAA,MAAa,OAAO;AACpB,MAAa,UAAU"}
@@ -1,2 +1,7 @@
1
- import type { BitcoinProviderOptions, BitcoinSDKProvider } from './types.js';
2
- export declare function BitcoinProvider(options?: BitcoinProviderOptions): BitcoinSDKProvider;
1
+ import { BitcoinProviderOptions, BitcoinSDKProvider } from "./types.js";
2
+
3
+ //#region src/BitcoinProvider.d.ts
4
+ declare function BitcoinProvider(options?: BitcoinProviderOptions): BitcoinSDKProvider;
5
+ //#endregion
6
+ export { BitcoinProvider };
7
+ //# sourceMappingURL=BitcoinProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitcoinProvider.d.ts","names":[],"sources":["../../src/BitcoinProvider.ts"],"mappings":";;;iBAOgB,eAAA,CACd,OAAA,GAAU,sBAAA,GACT,kBAAA"}
@@ -1,34 +1,32 @@
1
- import { isUTXOAddress } from '@bigmi/core';
2
- import { ChainType } from '@lifi/sdk';
3
- import { getBitcoinBalance } from './actions/getBitcoinBalance.js';
4
- import { resolveBitcoinAddress } from './actions/resolveBitcoinAddress.js';
5
- import { BitcoinStepExecutor } from './BitcoinStepExecutor.js';
6
- export function BitcoinProvider(options) {
7
- const _options = options ?? {};
8
- return {
9
- get type() {
10
- return ChainType.UTXO;
11
- },
12
- isAddress: isUTXOAddress,
13
- resolveAddress: resolveBitcoinAddress,
14
- getBalance: getBitcoinBalance,
15
- async getStepExecutor(options) {
16
- if (!_options.getWalletClient) {
17
- throw new Error('Client is not provided.');
18
- }
19
- const walletClient = await _options.getWalletClient();
20
- const executor = new BitcoinStepExecutor({
21
- client: walletClient,
22
- routeId: options.routeId,
23
- executionOptions: {
24
- ...options.executionOptions,
25
- },
26
- });
27
- return executor;
28
- },
29
- setOptions(options) {
30
- Object.assign(_options, options);
31
- },
32
- };
1
+ import { getBitcoinBalance } from "./actions/getBitcoinBalance.js";
2
+ import { resolveBitcoinAddress } from "./actions/resolveBitcoinAddress.js";
3
+ import { BitcoinStepExecutor } from "./core/BitcoinStepExecutor.js";
4
+ import { isUTXOAddress } from "@bigmi/core";
5
+ import { ChainType } from "@lifi/sdk";
6
+ //#region src/BitcoinProvider.ts
7
+ function BitcoinProvider(options) {
8
+ const _options = options ?? {};
9
+ return {
10
+ get type() {
11
+ return ChainType.UTXO;
12
+ },
13
+ isAddress: isUTXOAddress,
14
+ resolveAddress: resolveBitcoinAddress,
15
+ getBalance: getBitcoinBalance,
16
+ async getStepExecutor(options) {
17
+ if (!_options.getWalletClient) throw new Error("Client is not provided.");
18
+ return new BitcoinStepExecutor({
19
+ client: await _options.getWalletClient(),
20
+ routeId: options.routeId,
21
+ executionOptions: { ...options.executionOptions }
22
+ });
23
+ },
24
+ setOptions(options) {
25
+ Object.assign(_options, options);
26
+ }
27
+ };
33
28
  }
29
+ //#endregion
30
+ export { BitcoinProvider };
31
+
34
32
  //# sourceMappingURL=BitcoinProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BitcoinProvider.js","sourceRoot":"","sources":["../../src/BitcoinProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,SAAS,EAA4B,MAAM,WAAW,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAG9D,MAAM,UAAU,eAAe,CAC7B,OAAgC;IAEhC,MAAM,QAAQ,GAA2B,OAAO,IAAI,EAAE,CAAA;IACtD,OAAO;QACL,IAAI,IAAI;YACN,OAAO,SAAS,CAAC,IAAI,CAAA;QACvB,CAAC;QACD,SAAS,EAAE,aAAa;QACxB,cAAc,EAAE,qBAAqB;QACrC,UAAU,EAAE,iBAAiB;QAC7B,KAAK,CAAC,eAAe,CACnB,OAA4B;YAE5B,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;YAC5C,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAA;YAErD,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC;gBACvC,MAAM,EAAE,YAAY;gBACpB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,gBAAgB,EAAE;oBAChB,GAAG,OAAO,CAAC,gBAAgB;iBAC5B;aACF,CAAC,CAAA;YAEF,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,UAAU,CAAC,OAA+B;YACxC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAClC,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"BitcoinProvider.js","names":[],"sources":["../../src/BitcoinProvider.ts"],"sourcesContent":["import { isUTXOAddress } from '@bigmi/core'\nimport { ChainType, type StepExecutorOptions } from '@lifi/sdk'\nimport { getBitcoinBalance } from './actions/getBitcoinBalance.js'\nimport { resolveBitcoinAddress } from './actions/resolveBitcoinAddress.js'\nimport { BitcoinStepExecutor } from './core/BitcoinStepExecutor.js'\nimport type { BitcoinProviderOptions, BitcoinSDKProvider } from './types.js'\n\nexport function BitcoinProvider(\n options?: BitcoinProviderOptions\n): BitcoinSDKProvider {\n const _options: BitcoinProviderOptions = options ?? {}\n return {\n get type() {\n return ChainType.UTXO\n },\n isAddress: isUTXOAddress,\n resolveAddress: resolveBitcoinAddress,\n getBalance: getBitcoinBalance,\n async getStepExecutor(\n options: StepExecutorOptions\n ): Promise<BitcoinStepExecutor> {\n if (!_options.getWalletClient) {\n throw new Error('Client is not provided.')\n }\n\n const walletClient = await _options.getWalletClient()\n\n const executor = new BitcoinStepExecutor({\n client: walletClient,\n routeId: options.routeId,\n executionOptions: {\n ...options.executionOptions,\n },\n })\n\n return executor\n },\n setOptions(options: BitcoinProviderOptions) {\n Object.assign(_options, options)\n },\n }\n}\n"],"mappings":";;;;;;AAOA,SAAgB,gBACd,SACoB;CACpB,MAAM,WAAmC,WAAW,CAAC;CACrD,OAAO;EACL,IAAI,OAAO;GACT,OAAO,UAAU;EACnB;EACA,WAAW;EACX,gBAAgB;EAChB,YAAY;EACZ,MAAM,gBACJ,SAC8B;GAC9B,IAAI,CAAC,SAAS,iBACZ,MAAM,IAAI,MAAM,yBAAyB;GAa3C,OAAO,IARc,oBAAoB;IACvC,QAAQ,MAHiB,SAAS,gBAAgB;IAIlD,SAAS,QAAQ;IACjB,kBAAkB,EAChB,GAAG,QAAQ,iBACb;GACF,CAEc;EAChB;EACA,WAAW,SAAiC;GAC1C,OAAO,OAAO,UAAU,OAAO;EACjC;CACF;AACF"}
@@ -1,2 +1,7 @@
1
- import { type SDKClient, type Token, type TokenAmount } from '@lifi/sdk';
2
- export declare const getBitcoinBalance: (client: SDKClient, walletAddress: string, tokens: Token[]) => Promise<TokenAmount[]>;
1
+ import { SDKClient, Token, TokenAmount } from "@lifi/sdk";
2
+
3
+ //#region src/actions/getBitcoinBalance.d.ts
4
+ declare const getBitcoinBalance: (client: SDKClient, walletAddress: string, tokens: Token[]) => Promise<TokenAmount[]>;
5
+ //#endregion
6
+ export { getBitcoinBalance };
7
+ //# sourceMappingURL=getBitcoinBalance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBitcoinBalance.d.ts","names":[],"sources":["../../../src/actions/getBitcoinBalance.ts"],"mappings":";;;cAQa,iBAAA,GACX,MAAA,EAAQ,SAAA,EACR,aAAA,UACA,MAAA,EAAQ,KAAA,OACP,OAAA,CAAQ,WAAA"}