@lendasat/lendaswap-sdk-pure 0.2.21-1 → 0.2.21

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 (208) hide show
  1. package/dist/api/client.d.ts.map +1 -1
  2. package/dist/api/client.js +4 -1
  3. package/dist/api/client.js.map +1 -1
  4. package/dist/client.d.ts +1 -1
  5. package/dist/client.d.ts.map +1 -1
  6. package/dist/client.js.map +1 -1
  7. package/dist/version.d.ts +4 -0
  8. package/dist/version.d.ts.map +1 -0
  9. package/dist/version.js +6 -0
  10. package/dist/version.js.map +1 -0
  11. package/package.json +4 -1
  12. package/dist/price-feed.d.ts +0 -124
  13. package/dist/price-feed.d.ts.map +0 -1
  14. package/dist/price-feed.js +0 -178
  15. package/dist/price-feed.js.map +0 -1
  16. package/dist/src/api/client.d.ts +0 -31
  17. package/dist/src/api/client.d.ts.map +0 -1
  18. package/dist/src/api/client.js +0 -12
  19. package/dist/src/api/client.js.map +0 -1
  20. package/dist/src/arkade.d.ts +0 -36
  21. package/dist/src/arkade.d.ts.map +0 -1
  22. package/dist/src/arkade.js +0 -68
  23. package/dist/src/arkade.js.map +0 -1
  24. package/dist/src/client.d.ts +0 -760
  25. package/dist/src/client.d.ts.map +0 -1
  26. package/dist/src/client.js +0 -2169
  27. package/dist/src/client.js.map +0 -1
  28. package/dist/src/create/arkade.d.ts +0 -34
  29. package/dist/src/create/arkade.d.ts.map +0 -1
  30. package/dist/src/create/arkade.js +0 -76
  31. package/dist/src/create/arkade.js.map +0 -1
  32. package/dist/src/create/bitcoin-to-arkade.d.ts +0 -36
  33. package/dist/src/create/bitcoin-to-arkade.d.ts.map +0 -1
  34. package/dist/src/create/bitcoin-to-arkade.js +0 -69
  35. package/dist/src/create/bitcoin-to-arkade.js.map +0 -1
  36. package/dist/src/create/bitcoin.d.ts +0 -31
  37. package/dist/src/create/bitcoin.d.ts.map +0 -1
  38. package/dist/src/create/bitcoin.js +0 -67
  39. package/dist/src/create/bitcoin.js.map +0 -1
  40. package/dist/src/create/evm-to-arkade.d.ts +0 -34
  41. package/dist/src/create/evm-to-arkade.d.ts.map +0 -1
  42. package/dist/src/create/evm-to-arkade.js +0 -69
  43. package/dist/src/create/evm-to-arkade.js.map +0 -1
  44. package/dist/src/create/evm-to-bitcoin.d.ts +0 -35
  45. package/dist/src/create/evm-to-bitcoin.d.ts.map +0 -1
  46. package/dist/src/create/evm-to-bitcoin.js +0 -71
  47. package/dist/src/create/evm-to-bitcoin.js.map +0 -1
  48. package/dist/src/create/evm-to-lightning.d.ts +0 -34
  49. package/dist/src/create/evm-to-lightning.d.ts.map +0 -1
  50. package/dist/src/create/evm-to-lightning.js +0 -66
  51. package/dist/src/create/evm-to-lightning.js.map +0 -1
  52. package/dist/src/create/index.d.ts +0 -19
  53. package/dist/src/create/index.d.ts.map +0 -1
  54. package/dist/src/create/index.js +0 -18
  55. package/dist/src/create/index.js.map +0 -1
  56. package/dist/src/create/lightning.d.ts +0 -31
  57. package/dist/src/create/lightning.d.ts.map +0 -1
  58. package/dist/src/create/lightning.js +0 -72
  59. package/dist/src/create/lightning.js.map +0 -1
  60. package/dist/src/create/types.d.ts +0 -247
  61. package/dist/src/create/types.d.ts.map +0 -1
  62. package/dist/src/create/types.js +0 -5
  63. package/dist/src/create/types.js.map +0 -1
  64. package/dist/src/delegate.d.ts +0 -62
  65. package/dist/src/delegate.d.ts.map +0 -1
  66. package/dist/src/delegate.js +0 -284
  67. package/dist/src/delegate.js.map +0 -1
  68. package/dist/src/esplora.d.ts +0 -41
  69. package/dist/src/esplora.d.ts.map +0 -1
  70. package/dist/src/esplora.js +0 -47
  71. package/dist/src/esplora.js.map +0 -1
  72. package/dist/src/evm/coordinator.d.ts +0 -247
  73. package/dist/src/evm/coordinator.d.ts.map +0 -1
  74. package/dist/src/evm/coordinator.js +0 -414
  75. package/dist/src/evm/coordinator.js.map +0 -1
  76. package/dist/src/evm/htlc.d.ts +0 -238
  77. package/dist/src/evm/htlc.d.ts.map +0 -1
  78. package/dist/src/evm/htlc.js +0 -278
  79. package/dist/src/evm/htlc.js.map +0 -1
  80. package/dist/src/evm/index.d.ts +0 -9
  81. package/dist/src/evm/index.d.ts.map +0 -1
  82. package/dist/src/evm/index.js +0 -9
  83. package/dist/src/evm/index.js.map +0 -1
  84. package/dist/src/evm/signing.d.ts +0 -30
  85. package/dist/src/evm/signing.d.ts.map +0 -1
  86. package/dist/src/evm/signing.js +0 -91
  87. package/dist/src/evm/signing.js.map +0 -1
  88. package/dist/src/generated/api.d.ts +0 -2736
  89. package/dist/src/generated/api.d.ts.map +0 -1
  90. package/dist/src/generated/api.js +0 -6
  91. package/dist/src/generated/api.js.map +0 -1
  92. package/dist/src/index.d.ts +0 -18
  93. package/dist/src/index.d.ts.map +0 -1
  94. package/dist/src/index.js +0 -24
  95. package/dist/src/index.js.map +0 -1
  96. package/dist/src/node.d.ts +0 -19
  97. package/dist/src/node.d.ts.map +0 -1
  98. package/dist/src/node.js +0 -19
  99. package/dist/src/node.js.map +0 -1
  100. package/dist/src/price-calculations.d.ts +0 -109
  101. package/dist/src/price-calculations.d.ts.map +0 -1
  102. package/dist/src/price-calculations.js +0 -135
  103. package/dist/src/price-calculations.js.map +0 -1
  104. package/dist/src/redeem/arkade.d.ts +0 -65
  105. package/dist/src/redeem/arkade.d.ts.map +0 -1
  106. package/dist/src/redeem/arkade.js +0 -217
  107. package/dist/src/redeem/arkade.js.map +0 -1
  108. package/dist/src/redeem/ethereum.d.ts +0 -52
  109. package/dist/src/redeem/ethereum.d.ts.map +0 -1
  110. package/dist/src/redeem/ethereum.js +0 -206
  111. package/dist/src/redeem/ethereum.js.map +0 -1
  112. package/dist/src/redeem/gasless.d.ts +0 -41
  113. package/dist/src/redeem/gasless.d.ts.map +0 -1
  114. package/dist/src/redeem/gasless.js +0 -71
  115. package/dist/src/redeem/gasless.js.map +0 -1
  116. package/dist/src/redeem/index.d.ts +0 -49
  117. package/dist/src/redeem/index.d.ts.map +0 -1
  118. package/dist/src/redeem/index.js +0 -189
  119. package/dist/src/redeem/index.js.map +0 -1
  120. package/dist/src/redeem/types.d.ts +0 -126
  121. package/dist/src/redeem/types.d.ts.map +0 -1
  122. package/dist/src/redeem/types.js +0 -36
  123. package/dist/src/redeem/types.js.map +0 -1
  124. package/dist/src/refund/arkade.d.ts +0 -62
  125. package/dist/src/refund/arkade.d.ts.map +0 -1
  126. package/dist/src/refund/arkade.js +0 -212
  127. package/dist/src/refund/arkade.js.map +0 -1
  128. package/dist/src/refund/index.d.ts +0 -10
  129. package/dist/src/refund/index.d.ts.map +0 -1
  130. package/dist/src/refund/index.js +0 -10
  131. package/dist/src/refund/index.js.map +0 -1
  132. package/dist/src/refund/onchain.d.ts +0 -137
  133. package/dist/src/refund/onchain.d.ts.map +0 -1
  134. package/dist/src/refund/onchain.js +0 -366
  135. package/dist/src/refund/onchain.js.map +0 -1
  136. package/dist/src/signer/index.d.ts +0 -106
  137. package/dist/src/signer/index.d.ts.map +0 -1
  138. package/dist/src/signer/index.js +0 -179
  139. package/dist/src/signer/index.js.map +0 -1
  140. package/dist/src/storage/idb.d.ts +0 -70
  141. package/dist/src/storage/idb.d.ts.map +0 -1
  142. package/dist/src/storage/idb.js +0 -236
  143. package/dist/src/storage/idb.js.map +0 -1
  144. package/dist/src/storage/index.d.ts +0 -152
  145. package/dist/src/storage/index.d.ts.map +0 -1
  146. package/dist/src/storage/index.js +0 -98
  147. package/dist/src/storage/index.js.map +0 -1
  148. package/dist/src/storage/sqlite.d.ts +0 -95
  149. package/dist/src/storage/sqlite.d.ts.map +0 -1
  150. package/dist/src/storage/sqlite.js +0 -206
  151. package/dist/src/storage/sqlite.js.map +0 -1
  152. package/dist/src/storage/types.d.ts +0 -57
  153. package/dist/src/storage/types.d.ts.map +0 -1
  154. package/dist/src/storage/types.js +0 -9
  155. package/dist/src/storage/types.js.map +0 -1
  156. package/dist/src/tokens.d.ts +0 -29
  157. package/dist/src/tokens.d.ts.map +0 -1
  158. package/dist/src/tokens.js +0 -89
  159. package/dist/src/tokens.js.map +0 -1
  160. package/dist/src/usd-price.d.ts +0 -34
  161. package/dist/src/usd-price.d.ts.map +0 -1
  162. package/dist/src/usd-price.js +0 -83
  163. package/dist/src/usd-price.js.map +0 -1
  164. package/dist/tests/api-client.test.d.ts +0 -2
  165. package/dist/tests/api-client.test.d.ts.map +0 -1
  166. package/dist/tests/api-client.test.js +0 -86
  167. package/dist/tests/api-client.test.js.map +0 -1
  168. package/dist/tests/client.test.d.ts +0 -2
  169. package/dist/tests/client.test.d.ts.map +0 -1
  170. package/dist/tests/client.test.js +0 -150
  171. package/dist/tests/client.test.js.map +0 -1
  172. package/dist/tests/index.test.d.ts +0 -2
  173. package/dist/tests/index.test.d.ts.map +0 -1
  174. package/dist/tests/index.test.js +0 -8
  175. package/dist/tests/index.test.js.map +0 -1
  176. package/dist/tests/onchain-refund.test.d.ts +0 -2
  177. package/dist/tests/onchain-refund.test.d.ts.map +0 -1
  178. package/dist/tests/onchain-refund.test.js +0 -279
  179. package/dist/tests/onchain-refund.test.js.map +0 -1
  180. package/dist/tests/signer.test.d.ts +0 -2
  181. package/dist/tests/signer.test.d.ts.map +0 -1
  182. package/dist/tests/signer.test.js +0 -92
  183. package/dist/tests/signer.test.js.map +0 -1
  184. package/dist/tests/sqlite-storage.test.d.ts +0 -2
  185. package/dist/tests/sqlite-storage.test.d.ts.map +0 -1
  186. package/dist/tests/sqlite-storage.test.js +0 -160
  187. package/dist/tests/sqlite-storage.test.js.map +0 -1
  188. package/dist/tests/storage.test.d.ts +0 -2
  189. package/dist/tests/storage.test.d.ts.map +0 -1
  190. package/dist/tests/storage.test.js +0 -184
  191. package/dist/tests/storage.test.js.map +0 -1
  192. package/dist/tsconfig.tsbuildinfo +0 -1
  193. package/dist/usdt0-bridge/bridge.d.ts +0 -82
  194. package/dist/usdt0-bridge/bridge.d.ts.map +0 -1
  195. package/dist/usdt0-bridge/bridge.js +0 -56
  196. package/dist/usdt0-bridge/bridge.js.map +0 -1
  197. package/dist/usdt0-bridge/chains.d.ts +0 -41
  198. package/dist/usdt0-bridge/chains.d.ts.map +0 -1
  199. package/dist/usdt0-bridge/chains.js +0 -117
  200. package/dist/usdt0-bridge/chains.js.map +0 -1
  201. package/dist/usdt0-bridge/layerzero-tracker.d.ts +0 -34
  202. package/dist/usdt0-bridge/layerzero-tracker.d.ts.map +0 -1
  203. package/dist/usdt0-bridge/layerzero-tracker.js +0 -86
  204. package/dist/usdt0-bridge/layerzero-tracker.js.map +0 -1
  205. package/dist/usdt0-bridge/oft-abi.d.ts +0 -145
  206. package/dist/usdt0-bridge/oft-abi.d.ts.map +0 -1
  207. package/dist/usdt0-bridge/oft-abi.js +0 -117
  208. package/dist/usdt0-bridge/oft-abi.js.map +0 -1
@@ -1,212 +0,0 @@
1
- /**
2
- * Arkade (off-chain) VHTLC refund implementation.
3
- *
4
- * This module provides VHTLC refund functionality for Arkade (btc_arkade) swaps.
5
- * When a swap times out, users can reclaim their funds using this refund logic.
6
- *
7
- * The VHTLC uses a Taproot output with multiple spending paths. For refunds
8
- * after the locktime, we use the `refundWithoutReceiver` script path.
9
- */
10
- import { buildOffchainTx, CSVMultisigTapscript, networks, RestArkProvider, RestIndexerProvider, SingleKey, Transaction, VHTLC, } from "@arkade-os/sdk";
11
- import { ripemd160 } from "@noble/hashes/ripemd160";
12
- import { base64, hex } from "@scure/base";
13
- /** Default Arkade server URL by network */
14
- const DEFAULT_ARKADE_URLS = {
15
- bitcoin: "https://arkade.computer",
16
- mainnet: "https://arkade.computer",
17
- signet: "https://mutinynet.arkade.sh",
18
- mutinynet: "https://mutinynet.arkade.sh",
19
- };
20
- /**
21
- * Maps network strings from the API to Arkade NetworkName.
22
- */
23
- function getNetworkName(network) {
24
- switch (network.toLowerCase()) {
25
- case "mainnet":
26
- case "bitcoin":
27
- return "bitcoin";
28
- case "testnet":
29
- return "testnet";
30
- case "signet":
31
- return "signet";
32
- case "mutinynet":
33
- return "mutinynet";
34
- case "regtest":
35
- return "regtest";
36
- default:
37
- throw new Error(`Unknown network: ${network}`);
38
- }
39
- }
40
- /**
41
- * Get network HRP prefix for Ark addresses.
42
- */
43
- function getNetworkHrp(networkName) {
44
- const network = networks[networkName];
45
- return network.hrp;
46
- }
47
- /**
48
- * Convert seconds to RelativeTimelock format.
49
- */
50
- function secondsToTimelock(seconds) {
51
- // Arkade SDK expects blocks or seconds for timelocks.
52
- // The sequence encoding for seconds requires 512-second granularity.
53
- return {
54
- type: "seconds",
55
- value: BigInt(seconds),
56
- };
57
- }
58
- /**
59
- * Parse public key, handling both compressed (33-byte) and x-only (32-byte) formats.
60
- * Returns x-only (32-byte) format.
61
- */
62
- function parseXOnlyPubKey(pubKeyHex) {
63
- const bytes = hex.decode(pubKeyHex);
64
- if (bytes.length === 33) {
65
- // Compressed pubkey, strip the prefix byte
66
- return bytes.slice(1);
67
- }
68
- if (bytes.length === 32) {
69
- // Already x-only
70
- return bytes;
71
- }
72
- throw new Error(`Invalid public key length: expected 32 or 33, got ${bytes.length}`);
73
- }
74
- /**
75
- * Refund a VHTLC swap after the locktime expires.
76
- *
77
- * This function:
78
- * 1. Constructs the VHTLC with the same parameters as the original swap
79
- * 2. Connects to the Arkade server
80
- * 3. Fetches spendable VTXOs at the VHTLC address
81
- * 4. Builds an offchain transaction using the refundWithoutReceiver script path
82
- * 5. Signs and submits the transaction
83
- * 6. Finalizes the transaction
84
- *
85
- * @param params - The refund parameters
86
- * @returns The refund result with transaction ID and amount
87
- * @throws Error if the refund fails
88
- */
89
- export async function buildArkadeRefund(params) {
90
- const { userSecretKey, userPubKey, lendaswapPubKey, arkadeServerPubKey, hashLock, vhtlcAddress, refundLocktime, unilateralClaimDelay, unilateralRefundDelay, unilateralRefundWithoutReceiverDelay, destinationAddress, network, arkadeServerUrl, } = params;
91
- console.log(`Params ${JSON.stringify(params, null, 2)}`);
92
- // Parse keys
93
- const userPkBytes = parseXOnlyPubKey(userPubKey);
94
- const lendaswapPkBytes = parseXOnlyPubKey(lendaswapPubKey);
95
- const serverPkBytes = parseXOnlyPubKey(arkadeServerPubKey);
96
- // Compute preimage hash for VHTLC
97
- // The API sends us the SHA256 hash (32 bytes) or HASH160 (20 bytes)
98
- const hashLockBytes = hex.decode(hashLock);
99
- let preimageHashBytes;
100
- if (hashLockBytes.length === 32) {
101
- // the preimage is a SHA256 hash, we need to compute RIPEMD160 of it
102
- preimageHashBytes = ripemd160(hashLockBytes);
103
- }
104
- else if (hashLockBytes.length === 20) {
105
- // Already HASH160
106
- preimageHashBytes = hashLockBytes;
107
- }
108
- else {
109
- throw new Error(`Invalid hash lock length: expected 20 or 32, got ${hashLockBytes.length}`);
110
- }
111
- // Determine Arkade server URL
112
- const networkName = getNetworkName(network);
113
- const serverUrl = arkadeServerUrl ?? DEFAULT_ARKADE_URLS[networkName];
114
- if (!serverUrl) {
115
- throw new Error(`No Arkade server URL configured for network: ${networkName}`);
116
- }
117
- // Create Arkade providers
118
- const arkProvider = new RestArkProvider(serverUrl);
119
- const indexerProvider = new RestIndexerProvider(serverUrl);
120
- // Get server info
121
- const serverInfo = await arkProvider.getInfo();
122
- // Construct VHTLC with the same parameters as the original swap
123
- // For refund: user is the SENDER (refunding), lendaswap is the RECEIVER
124
- const vhtlc = new VHTLC.Script({
125
- sender: userPkBytes,
126
- receiver: lendaswapPkBytes,
127
- server: serverPkBytes,
128
- preimageHash: preimageHashBytes,
129
- refundLocktime: BigInt(refundLocktime),
130
- unilateralClaimDelay: secondsToTimelock(unilateralClaimDelay),
131
- unilateralRefundDelay: secondsToTimelock(unilateralRefundDelay),
132
- unilateralRefundWithoutReceiverDelay: secondsToTimelock(unilateralRefundWithoutReceiverDelay),
133
- });
134
- // Get network HRP and verify computed VHTLC address
135
- const hrp = getNetworkHrp(networkName);
136
- const computedAddress = vhtlc.address(hrp, serverPkBytes);
137
- const computedAddressStr = computedAddress.encode();
138
- // Verify address matches expected
139
- if (computedAddressStr !== vhtlcAddress) {
140
- throw new Error(`Computed VHTLC address (${computedAddressStr}) does not match expected (${vhtlcAddress})`);
141
- }
142
- // Fetch VTXOs at the VHTLC address
143
- // We need the pk script to query the indexer
144
- const vhtlcPkScript = hex.encode(vhtlc.pkScript);
145
- const { vtxos } = await indexerProvider.getVtxos({
146
- scripts: [vhtlcPkScript],
147
- spendableOnly: true,
148
- });
149
- if (vtxos.length === 0) {
150
- const { vtxos: updated } = await indexerProvider.getVtxos({
151
- scripts: [vhtlcPkScript],
152
- });
153
- console.log(`Updated ${JSON.stringify(updated, null, 2)}`);
154
- throw new Error("No spendable VTXOs found at the VHTLC address");
155
- }
156
- // Calculate total amount (vtxos have value as number)
157
- const totalAmount = vtxos.reduce((acc, v) => acc + BigInt(v.value), 0n);
158
- if (totalAmount === 0n) {
159
- throw new Error("Total VTXO amount is zero");
160
- }
161
- // Get the refundWithoutReceiver TapLeafScript
162
- const refundLeafScript = vhtlc.refundWithoutReceiver();
163
- // Encode the VHTLC tap tree
164
- const tapTree = vhtlc.encode();
165
- // Decode the server's checkpoint tapscript from the server info
166
- const checkpointTapscript = CSVMultisigTapscript.decode(hex.decode(serverInfo.checkpointTapscript));
167
- // Build inputs for offchain transaction
168
- const inputs = vtxos.map((v) => ({
169
- txid: v.txid,
170
- vout: v.vout,
171
- value: v.value,
172
- tapTree: tapTree,
173
- tapLeafScript: refundLeafScript,
174
- }));
175
- // Parse destination address to get the output script
176
- // The destination should be an Arkade address that we can decode
177
- const { ArkAddress } = await import("@arkade-os/sdk");
178
- const destAddr = ArkAddress.decode(destinationAddress);
179
- const destPkScript = destAddr.pkScript;
180
- // Build outputs
181
- const outputs = [
182
- {
183
- script: destPkScript,
184
- amount: totalAmount,
185
- },
186
- ];
187
- const destinationAddressPPkScript = hex.encode(destPkScript);
188
- console.log(`Refunding ${totalAmount} to ${destinationAddress} with script ${destinationAddressPPkScript}`);
189
- // Build the offchain transaction
190
- const { arkTx, checkpoints } = buildOffchainTx(inputs, outputs, checkpointTapscript);
191
- // Create signer from user's secret key
192
- const signer = SingleKey.fromHex(userSecretKey);
193
- // Sign the ark transaction
194
- const signedArkTx = await signer.sign(arkTx);
195
- // Submit the transaction to the Arkade server
196
- const signedArkTxBase64 = base64.encode(signedArkTx.toPSBT());
197
- const { arkTxid, signedCheckpointTxs } = await arkProvider.submitTx(signedArkTxBase64, checkpoints.map((cp) => base64.encode(cp.toPSBT())));
198
- const finalCheckpoints = await Promise.all(signedCheckpointTxs.map(async (c) => {
199
- const tx = Transaction.fromPSBT(base64.decode(c));
200
- const signedCheckpoint = await signer.sign(tx);
201
- return base64.encode(signedCheckpoint.toPSBT());
202
- }));
203
- console.log(`Finalized tx done`);
204
- // Finalize the transaction
205
- await arkProvider.finalizeTx(arkTxid, finalCheckpoints);
206
- console.log(`Finalized tx submitted`, arkTxid);
207
- return {
208
- txId: arkTxid,
209
- refundAmount: totalAmount,
210
- };
211
- }
212
- //# sourceMappingURL=arkade.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arkade.js","sourceRoot":"","sources":["../../../src/refund/arkade.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Refund module for Lendaswap swaps.
3
- *
4
- * Provides refund transaction building for different swap types:
5
- * - On-chain Bitcoin HTLC refunds (BTC → EVM swaps)
6
- * - Arkade off-chain VHTLC refunds (Arkade → EVM swaps)
7
- */
8
- export { type ArkadeRefundParams, type ArkadeRefundResult, buildArkadeRefund, } from "./arkade.js";
9
- export { type BitcoinNetwork, buildOnchainClaimTransaction, buildOnchainRefundTransaction, computeHash160, type OnchainClaimParams, type OnchainClaimResult, type OnchainRefundParams, type OnchainRefundResult, verifyHtlcAddress, } from "./onchain.js";
10
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/refund/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,cAAc,EACnB,4BAA4B,EAC5B,6BAA6B,EAC7B,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,iBAAiB,GAClB,MAAM,cAAc,CAAC"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Refund module for Lendaswap swaps.
3
- *
4
- * Provides refund transaction building for different swap types:
5
- * - On-chain Bitcoin HTLC refunds (BTC → EVM swaps)
6
- * - Arkade off-chain VHTLC refunds (Arkade → EVM swaps)
7
- */
8
- export { buildArkadeRefund, } from "./arkade.js";
9
- export { buildOnchainClaimTransaction, buildOnchainRefundTransaction, computeHash160, verifyHtlcAddress, } from "./onchain.js";
10
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/refund/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAGL,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,4BAA4B,EAC5B,6BAA6B,EAC7B,cAAc,EAKd,iBAAiB,GAClB,MAAM,cAAc,CAAC"}
@@ -1,137 +0,0 @@
1
- /**
2
- * On-chain Bitcoin HTLC refund implementation.
3
- *
4
- * This module provides Taproot HTLC refund transaction building for BTC → EVM swaps
5
- * where users lock on-chain Bitcoin. If the swap times out, users can reclaim
6
- * their funds using this refund logic.
7
- *
8
- * The HTLC uses a Taproot output with:
9
- * - Unspendable key spend (NUMS internal key)
10
- * - Hashlock script path: server claims with preimage
11
- * - Timelock script path: user refunds after locktime
12
- */
13
- /** Bitcoin network type */
14
- export type BitcoinNetwork = "mainnet" | "testnet" | "signet" | "regtest";
15
- /** Parameters needed to build a claim transaction for an on-chain Taproot HTLC */
16
- export interface OnchainClaimParams {
17
- /** The funding transaction ID (hex, no 0x prefix) */
18
- fundingTxId: string;
19
- /** The output index in the funding transaction */
20
- fundingVout: number;
21
- /** Amount locked in the HTLC in satoshis */
22
- htlcAmount: bigint;
23
- /** Hash lock (20-byte hex, RIPEMD160(SHA256(secret))) */
24
- hashLock: string;
25
- /** User's x-only public key (32-byte hex) — the claimer */
26
- userClaimPubKey: string;
27
- /** Server's x-only public key (32-byte hex) — the refunder */
28
- serverRefundPubKey: string;
29
- /** User's secret key (32-byte hex) for signing */
30
- userSecretKey: string;
31
- /** The preimage (32-byte hex) that hashes to the hash lock */
32
- preimage: string;
33
- /** Refund locktime (unix timestamp) — needed to reconstruct the HTLC */
34
- refundLocktime: number;
35
- /** Destination address to receive claimed funds */
36
- destinationAddress: string;
37
- /** Fee rate in satoshis per virtual byte */
38
- feeRateSatPerVb: number;
39
- /** Bitcoin network */
40
- network: BitcoinNetwork;
41
- }
42
- /** Result of building a claim transaction */
43
- export interface OnchainClaimResult {
44
- /** The signed transaction hex (ready to broadcast) */
45
- txHex: string;
46
- /** Transaction ID (hash) */
47
- txId: string;
48
- /** Amount being claimed (after fees) */
49
- claimAmount: bigint;
50
- /** Fee paid in satoshis */
51
- fee: bigint;
52
- /** The HTLC address that funds are being claimed from */
53
- htlcAddress: string;
54
- }
55
- /** Parameters needed to build a refund transaction */
56
- export interface OnchainRefundParams {
57
- /** The funding transaction ID (hex, no 0x prefix) */
58
- fundingTxId: string;
59
- /** The output index in the funding transaction (usually 0) */
60
- fundingVout: number;
61
- /** Amount locked in the HTLC in satoshis */
62
- htlcAmount: bigint;
63
- /** Hash lock (20-byte hex, RIPEMD160(SHA256(secret))) */
64
- hashLock: string;
65
- /** Server's x-only public key (32-byte hex) */
66
- serverPubKey: string;
67
- /** User's x-only public key (32-byte hex) */
68
- userPubKey: string;
69
- /** User's secret key (32-byte hex) for signing */
70
- userSecretKey: string;
71
- /** Refund locktime (unix timestamp) */
72
- refundLocktime: number;
73
- /** Destination address to receive refunded funds */
74
- destinationAddress: string;
75
- /** Fee rate in satoshis per virtual byte */
76
- feeRateSatPerVb: number;
77
- /** Bitcoin network */
78
- network: BitcoinNetwork;
79
- }
80
- /** Result of building a refund transaction */
81
- export interface OnchainRefundResult {
82
- /** The signed transaction hex (ready to broadcast) */
83
- txHex: string;
84
- /** Transaction ID (hash) */
85
- txId: string;
86
- /** Amount being refunded (after fees) */
87
- refundAmount: bigint;
88
- /** Fee paid in satoshis */
89
- fee: bigint;
90
- /** The HTLC address that funds are being refunded from */
91
- htlcAddress: string;
92
- }
93
- /**
94
- * Compute HASH160 (RIPEMD160(SHA256(data))).
95
- */
96
- export declare function computeHash160(data: Uint8Array): Uint8Array;
97
- /**
98
- * Build and sign a claim transaction for an on-chain Bitcoin Taproot HTLC.
99
- *
100
- * This creates a transaction that spends from the HTLC using the hashlock
101
- * script path by providing the preimage and a valid signature.
102
- *
103
- * Used for EVM-to-Bitcoin swaps where the user claims BTC after the server
104
- * has funded the on-chain HTLC.
105
- *
106
- * @param params - The claim parameters
107
- * @returns The signed transaction and related info
108
- * @throws Error if the transaction cannot be built
109
- */
110
- export declare function buildOnchainClaimTransaction(params: OnchainClaimParams): OnchainClaimResult;
111
- /**
112
- * Build and sign a refund transaction for an on-chain Bitcoin HTLC.
113
- *
114
- * This creates a transaction that spends from the HTLC using the timelock
115
- * script path after the refund locktime has passed.
116
- *
117
- * @param params - The refund parameters
118
- * @returns The signed transaction and related info
119
- * @throws Error if the transaction cannot be built
120
- */
121
- export declare function buildOnchainRefundTransaction(params: OnchainRefundParams): OnchainRefundResult;
122
- /**
123
- * Verify that a Taproot address matches the expected HTLC parameters.
124
- *
125
- * This is useful to confirm the HTLC address returned by the server
126
- * matches what we expect based on the swap parameters.
127
- *
128
- * @param expectedAddress - The address to verify
129
- * @param hashLock - Hash lock (20-byte hex)
130
- * @param serverPubKey - Server's x-only public key (32-byte hex)
131
- * @param userPubKey - User's x-only public key (32-byte hex)
132
- * @param refundLocktime - Refund locktime (unix timestamp)
133
- * @param network - Bitcoin network
134
- * @returns true if the address matches, false otherwise
135
- */
136
- export declare function verifyHtlcAddress(expectedAddress: string, hashLock: string, serverPubKey: string, userPubKey: string, refundLocktime: number, network: BitcoinNetwork): boolean;
137
- //# sourceMappingURL=onchain.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"onchain.d.ts","sourceRoot":"","sources":["../../../src/refund/onchain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,2BAA2B;AAC3B,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1E,kFAAkF;AAClF,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,eAAe,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,4CAA4C;IAC5C,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB;IACtB,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,6CAA6C;AAC7C,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,4CAA4C;IAC5C,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB;IACtB,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;CACrB;AAkFD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAE3D;AA8DD;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,kBAAkB,GACzB,kBAAkB,CAgLpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,mBAAmB,GAC1B,mBAAmB,CAqHrB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,cAAc,GACtB,OAAO,CAmBT"}