@atomiqlabs/lp-lib 14.0.0-dev.21 → 14.0.0-dev.24

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 (167) hide show
  1. package/LICENSE +201 -201
  2. package/dist/fees/IBtcFeeEstimator.d.ts +3 -3
  3. package/dist/fees/IBtcFeeEstimator.js +2 -2
  4. package/dist/index.d.ts +42 -42
  5. package/dist/index.js +58 -58
  6. package/dist/info/InfoHandler.d.ts +17 -17
  7. package/dist/info/InfoHandler.js +61 -61
  8. package/dist/plugins/IPlugin.d.ts +143 -143
  9. package/dist/plugins/IPlugin.js +34 -34
  10. package/dist/plugins/PluginManager.d.ts +112 -112
  11. package/dist/plugins/PluginManager.js +259 -259
  12. package/dist/prices/BinanceSwapPrice.d.ts +26 -26
  13. package/dist/prices/BinanceSwapPrice.js +92 -92
  14. package/dist/prices/CoinGeckoSwapPrice.d.ts +30 -30
  15. package/dist/prices/CoinGeckoSwapPrice.js +64 -64
  16. package/dist/prices/ISwapPrice.d.ts +43 -43
  17. package/dist/prices/ISwapPrice.js +55 -55
  18. package/dist/prices/OKXSwapPrice.d.ts +26 -26
  19. package/dist/prices/OKXSwapPrice.js +92 -92
  20. package/dist/storage/IIntermediaryStorage.d.ts +18 -18
  21. package/dist/storage/IIntermediaryStorage.js +2 -2
  22. package/dist/storagemanager/IntermediaryStorageManager.d.ts +19 -19
  23. package/dist/storagemanager/IntermediaryStorageManager.js +111 -111
  24. package/dist/storagemanager/StorageManager.d.ts +13 -13
  25. package/dist/storagemanager/StorageManager.js +64 -64
  26. package/dist/swaps/SwapHandler.d.ts +153 -153
  27. package/dist/swaps/SwapHandler.js +160 -160
  28. package/dist/swaps/SwapHandlerSwap.d.ts +79 -79
  29. package/dist/swaps/SwapHandlerSwap.js +78 -78
  30. package/dist/swaps/assertions/AmountAssertions.d.ts +28 -28
  31. package/dist/swaps/assertions/AmountAssertions.js +72 -72
  32. package/dist/swaps/assertions/FromBtcAmountAssertions.d.ts +76 -76
  33. package/dist/swaps/assertions/FromBtcAmountAssertions.js +180 -180
  34. package/dist/swaps/assertions/LightningAssertions.d.ts +44 -44
  35. package/dist/swaps/assertions/LightningAssertions.js +86 -86
  36. package/dist/swaps/assertions/ToBtcAmountAssertions.d.ts +53 -53
  37. package/dist/swaps/assertions/ToBtcAmountAssertions.js +150 -150
  38. package/dist/swaps/escrow/EscrowHandler.d.ts +51 -51
  39. package/dist/swaps/escrow/EscrowHandler.js +158 -158
  40. package/dist/swaps/escrow/EscrowHandlerSwap.d.ts +35 -35
  41. package/dist/swaps/escrow/EscrowHandlerSwap.js +69 -69
  42. package/dist/swaps/escrow/FromBtcBaseSwap.d.ts +14 -14
  43. package/dist/swaps/escrow/FromBtcBaseSwap.js +32 -32
  44. package/dist/swaps/escrow/FromBtcBaseSwapHandler.d.ts +102 -102
  45. package/dist/swaps/escrow/FromBtcBaseSwapHandler.js +210 -210
  46. package/dist/swaps/escrow/ToBtcBaseSwap.d.ts +36 -36
  47. package/dist/swaps/escrow/ToBtcBaseSwap.js +67 -67
  48. package/dist/swaps/escrow/ToBtcBaseSwapHandler.d.ts +53 -53
  49. package/dist/swaps/escrow/ToBtcBaseSwapHandler.js +81 -81
  50. package/dist/swaps/escrow/frombtc_abstract/FromBtcAbs.d.ts +83 -83
  51. package/dist/swaps/escrow/frombtc_abstract/FromBtcAbs.js +318 -318
  52. package/dist/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.d.ts +21 -21
  53. package/dist/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.js +50 -50
  54. package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.d.ts +107 -107
  55. package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.js +675 -675
  56. package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.d.ts +33 -33
  57. package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.js +91 -91
  58. package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.d.ts +111 -111
  59. package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.js +684 -684
  60. package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.d.ts +55 -55
  61. package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.js +120 -120
  62. package/dist/swaps/escrow/tobtc_abstract/ToBtcAbs.d.ts +171 -171
  63. package/dist/swaps/escrow/tobtc_abstract/ToBtcAbs.js +706 -706
  64. package/dist/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.d.ts +26 -26
  65. package/dist/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.js +62 -62
  66. package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.d.ts +177 -177
  67. package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.js +863 -863
  68. package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.d.ts +24 -24
  69. package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.js +58 -58
  70. package/dist/swaps/spv_vault_swap/SpvVault.d.ts +40 -41
  71. package/dist/swaps/spv_vault_swap/SpvVault.js +111 -111
  72. package/dist/swaps/spv_vault_swap/SpvVaultSwap.d.ts +67 -67
  73. package/dist/swaps/spv_vault_swap/SpvVaultSwap.js +158 -158
  74. package/dist/swaps/spv_vault_swap/SpvVaultSwapHandler.d.ts +68 -68
  75. package/dist/swaps/spv_vault_swap/SpvVaultSwapHandler.js +492 -492
  76. package/dist/swaps/spv_vault_swap/SpvVaults.d.ts +52 -52
  77. package/dist/swaps/spv_vault_swap/SpvVaults.js +394 -364
  78. package/dist/swaps/trusted/frombtc_trusted/FromBtcTrusted.d.ts +51 -51
  79. package/dist/swaps/trusted/frombtc_trusted/FromBtcTrusted.js +650 -650
  80. package/dist/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.d.ts +52 -52
  81. package/dist/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.js +118 -118
  82. package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.d.ts +76 -76
  83. package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.js +494 -494
  84. package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.d.ts +34 -34
  85. package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.js +81 -81
  86. package/dist/utils/BitcoinUtils.d.ts +2 -2
  87. package/dist/utils/BitcoinUtils.js +45 -45
  88. package/dist/utils/Utils.d.ts +29 -29
  89. package/dist/utils/Utils.js +89 -89
  90. package/dist/utils/paramcoders/IParamReader.d.ts +5 -5
  91. package/dist/utils/paramcoders/IParamReader.js +2 -2
  92. package/dist/utils/paramcoders/IParamWriter.d.ts +4 -4
  93. package/dist/utils/paramcoders/IParamWriter.js +2 -2
  94. package/dist/utils/paramcoders/LegacyParamEncoder.d.ts +10 -10
  95. package/dist/utils/paramcoders/LegacyParamEncoder.js +22 -22
  96. package/dist/utils/paramcoders/ParamDecoder.d.ts +25 -25
  97. package/dist/utils/paramcoders/ParamDecoder.js +222 -222
  98. package/dist/utils/paramcoders/ParamEncoder.d.ts +9 -9
  99. package/dist/utils/paramcoders/ParamEncoder.js +22 -22
  100. package/dist/utils/paramcoders/SchemaVerifier.d.ts +21 -21
  101. package/dist/utils/paramcoders/SchemaVerifier.js +84 -84
  102. package/dist/utils/paramcoders/server/ServerParamDecoder.d.ts +8 -8
  103. package/dist/utils/paramcoders/server/ServerParamDecoder.js +107 -107
  104. package/dist/utils/paramcoders/server/ServerParamEncoder.d.ts +11 -11
  105. package/dist/utils/paramcoders/server/ServerParamEncoder.js +65 -65
  106. package/dist/wallets/IBitcoinWallet.d.ts +67 -67
  107. package/dist/wallets/IBitcoinWallet.js +2 -2
  108. package/dist/wallets/ILightningWallet.d.ts +117 -117
  109. package/dist/wallets/ILightningWallet.js +37 -37
  110. package/dist/wallets/ISpvVaultSigner.d.ts +7 -7
  111. package/dist/wallets/ISpvVaultSigner.js +2 -2
  112. package/package.json +36 -36
  113. package/src/fees/IBtcFeeEstimator.ts +6 -6
  114. package/src/index.ts +53 -53
  115. package/src/info/InfoHandler.ts +106 -106
  116. package/src/plugins/IPlugin.ts +168 -168
  117. package/src/plugins/PluginManager.ts +336 -336
  118. package/src/prices/BinanceSwapPrice.ts +113 -113
  119. package/src/prices/CoinGeckoSwapPrice.ts +87 -87
  120. package/src/prices/ISwapPrice.ts +88 -88
  121. package/src/prices/OKXSwapPrice.ts +113 -113
  122. package/src/storage/IIntermediaryStorage.ts +19 -19
  123. package/src/storagemanager/IntermediaryStorageManager.ts +118 -118
  124. package/src/storagemanager/StorageManager.ts +78 -78
  125. package/src/swaps/SwapHandler.ts +277 -277
  126. package/src/swaps/SwapHandlerSwap.ts +141 -141
  127. package/src/swaps/assertions/AmountAssertions.ts +76 -76
  128. package/src/swaps/assertions/FromBtcAmountAssertions.ts +246 -246
  129. package/src/swaps/assertions/LightningAssertions.ts +103 -103
  130. package/src/swaps/assertions/ToBtcAmountAssertions.ts +203 -203
  131. package/src/swaps/escrow/EscrowHandler.ts +179 -179
  132. package/src/swaps/escrow/EscrowHandlerSwap.ts +86 -86
  133. package/src/swaps/escrow/FromBtcBaseSwap.ts +38 -38
  134. package/src/swaps/escrow/FromBtcBaseSwapHandler.ts +286 -286
  135. package/src/swaps/escrow/ToBtcBaseSwap.ts +85 -85
  136. package/src/swaps/escrow/ToBtcBaseSwapHandler.ts +129 -129
  137. package/src/swaps/escrow/frombtc_abstract/FromBtcAbs.ts +452 -452
  138. package/src/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.ts +61 -61
  139. package/src/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.ts +856 -856
  140. package/src/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.ts +141 -141
  141. package/src/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.ts +850 -850
  142. package/src/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.ts +196 -196
  143. package/src/swaps/escrow/tobtc_abstract/ToBtcAbs.ts +879 -879
  144. package/src/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.ts +102 -102
  145. package/src/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.ts +1112 -1112
  146. package/src/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.ts +80 -80
  147. package/src/swaps/spv_vault_swap/SpvVault.ts +143 -143
  148. package/src/swaps/spv_vault_swap/SpvVaultSwap.ts +225 -225
  149. package/src/swaps/spv_vault_swap/SpvVaultSwapHandler.ts +628 -628
  150. package/src/swaps/spv_vault_swap/SpvVaults.ts +469 -435
  151. package/src/swaps/trusted/frombtc_trusted/FromBtcTrusted.ts +747 -747
  152. package/src/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.ts +185 -185
  153. package/src/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.ts +590 -590
  154. package/src/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.ts +121 -121
  155. package/src/utils/BitcoinUtils.ts +42 -42
  156. package/src/utils/Utils.ts +104 -104
  157. package/src/utils/paramcoders/IParamReader.ts +7 -7
  158. package/src/utils/paramcoders/IParamWriter.ts +8 -8
  159. package/src/utils/paramcoders/LegacyParamEncoder.ts +27 -27
  160. package/src/utils/paramcoders/ParamDecoder.ts +218 -218
  161. package/src/utils/paramcoders/ParamEncoder.ts +29 -29
  162. package/src/utils/paramcoders/SchemaVerifier.ts +96 -96
  163. package/src/utils/paramcoders/server/ServerParamDecoder.ts +118 -118
  164. package/src/utils/paramcoders/server/ServerParamEncoder.ts +75 -75
  165. package/src/wallets/IBitcoinWallet.ts +68 -68
  166. package/src/wallets/ILightningWallet.ts +178 -178
  167. package/src/wallets/ISpvVaultSigner.ts +10 -10
@@ -1,158 +1,158 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SpvVaultSwap = exports.SpvVaultSwapState = void 0;
4
- const SwapHandlerSwap_1 = require("../SwapHandlerSwap");
5
- const Utils_1 = require("../../utils/Utils");
6
- const SwapHandler_1 = require("../SwapHandler");
7
- var SpvVaultSwapState;
8
- (function (SpvVaultSwapState) {
9
- SpvVaultSwapState[SpvVaultSwapState["FAILED"] = -3] = "FAILED";
10
- SpvVaultSwapState[SpvVaultSwapState["DOUBLE_SPENT"] = -2] = "DOUBLE_SPENT";
11
- SpvVaultSwapState[SpvVaultSwapState["EXPIRED"] = -1] = "EXPIRED";
12
- SpvVaultSwapState[SpvVaultSwapState["CREATED"] = 0] = "CREATED";
13
- SpvVaultSwapState[SpvVaultSwapState["SIGNED"] = 1] = "SIGNED";
14
- SpvVaultSwapState[SpvVaultSwapState["SENT"] = 2] = "SENT";
15
- SpvVaultSwapState[SpvVaultSwapState["BTC_CONFIRMED"] = 3] = "BTC_CONFIRMED";
16
- SpvVaultSwapState[SpvVaultSwapState["CLAIMED"] = 4] = "CLAIMED";
17
- })(SpvVaultSwapState = exports.SpvVaultSwapState || (exports.SpvVaultSwapState = {}));
18
- class SpvVaultSwap extends SwapHandlerSwap_1.SwapHandlerSwap {
19
- constructor(chainIdentifierOrObj, quoteId, expiry, vault, vaultUtxo, btcAddress, btcFeeRate, recipient, amountBtc, amountToken, amountGasToken, swapFee, swapFeeInToken, gasSwapFee, gasSwapFeeInToken, callerFeeShare, frontingFeeShare, executionFeeShare, token, gasToken) {
20
- if (typeof (chainIdentifierOrObj) === "string") {
21
- super(chainIdentifierOrObj, swapFee + gasSwapFee, swapFeeInToken);
22
- this.state = SpvVaultSwapState.CREATED;
23
- this.quoteId = quoteId;
24
- this.expiry = expiry;
25
- this.vaultOwner = vault.data.getOwner();
26
- this.vaultId = vault.data.getVaultId();
27
- this.vaultAddress = vault.btcAddress;
28
- this.vaultUtxo = vaultUtxo;
29
- this.tokenSwapFee = swapFee;
30
- this.tokenSwapFeeInToken = swapFeeInToken;
31
- this.gasSwapFee = gasSwapFee;
32
- this.gasSwapFeeInToken = gasSwapFeeInToken;
33
- this.btcFeeRate = btcFeeRate;
34
- this.btcAddress = btcAddress;
35
- this.recipient = recipient;
36
- this.amountBtc = amountBtc;
37
- this.amountToken = amountToken;
38
- this.amountGasToken = amountGasToken;
39
- const [rawAmountToken, rawAmountGasToken] = vault.toRawAmounts([amountToken, amountGasToken]);
40
- this.rawAmountToken = rawAmountToken;
41
- this.rawAmountGasToken = rawAmountGasToken;
42
- this.callerFeeShare = callerFeeShare;
43
- this.frontingFeeShare = frontingFeeShare;
44
- this.executionFeeShare = executionFeeShare;
45
- this.token = token;
46
- this.tokenMultiplier = vault.data.getTokenData()[0].multiplier;
47
- this.gasToken = gasToken;
48
- this.gasTokenMultiplier = vault.data.getTokenData()[1].multiplier;
49
- }
50
- else {
51
- super(chainIdentifierOrObj);
52
- this.quoteId = chainIdentifierOrObj.quoteId;
53
- this.expiry = chainIdentifierOrObj.expiry;
54
- this.vaultOwner = chainIdentifierOrObj.owner;
55
- this.vaultId = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.vaultId);
56
- this.vaultAddress = chainIdentifierOrObj.vaultAddress;
57
- this.vaultUtxo = chainIdentifierOrObj.vaultUtxo;
58
- this.tokenSwapFee = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.swapFee);
59
- this.tokenSwapFeeInToken = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.swapFeeInToken);
60
- this.gasSwapFee = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.gasSwapFee);
61
- this.gasSwapFeeInToken = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.gasSwapFeeInToken);
62
- this.btcFeeRate = chainIdentifierOrObj.btcFeeRate;
63
- this.btcAddress = chainIdentifierOrObj.btcAddress;
64
- this.recipient = chainIdentifierOrObj.recipient;
65
- this.amountBtc = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.amountBtc);
66
- this.amountToken = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.amountToken);
67
- this.amountGasToken = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.amountGasToken);
68
- this.rawAmountToken = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.rawAmountToken);
69
- this.rawAmountGasToken = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.rawAmountGasToken);
70
- this.callerFeeShare = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.callerFeeShare);
71
- this.frontingFeeShare = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.frontingFeeShare);
72
- this.executionFeeShare = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.executionFeeShare);
73
- this.token = chainIdentifierOrObj.token;
74
- this.gasToken = chainIdentifierOrObj.gasToken;
75
- this.tokenMultiplier = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.tokenMultiplier);
76
- this.gasTokenMultiplier = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.gasTokenMultiplier);
77
- this.btcTxId = chainIdentifierOrObj.btcTxId;
78
- }
79
- this.type = SwapHandler_1.SwapHandlerType.FROM_BTC_SPV;
80
- }
81
- serialize() {
82
- return {
83
- ...super.serialize(),
84
- quoteId: this.quoteId,
85
- expiry: this.expiry,
86
- owner: this.vaultOwner,
87
- vaultId: (0, Utils_1.serializeBN)(this.vaultId),
88
- vaultAddress: this.vaultAddress,
89
- vaultUtxo: this.vaultUtxo,
90
- tokenSwapFee: (0, Utils_1.serializeBN)(this.tokenSwapFee),
91
- tokenSwapFeeInToken: (0, Utils_1.serializeBN)(this.tokenSwapFeeInToken),
92
- gasSwapFee: (0, Utils_1.serializeBN)(this.gasSwapFee),
93
- gasSwapFeeInToken: (0, Utils_1.serializeBN)(this.gasSwapFeeInToken),
94
- btcFeeRate: this.btcFeeRate,
95
- btcAddress: this.btcAddress,
96
- recipient: this.recipient,
97
- amountBtc: (0, Utils_1.serializeBN)(this.amountBtc),
98
- amountToken: (0, Utils_1.serializeBN)(this.amountToken),
99
- amountGasToken: (0, Utils_1.serializeBN)(this.amountGasToken),
100
- rawAmountToken: (0, Utils_1.serializeBN)(this.rawAmountToken),
101
- rawAmountGasToken: (0, Utils_1.serializeBN)(this.rawAmountGasToken),
102
- callerFeeShare: (0, Utils_1.serializeBN)(this.callerFeeShare),
103
- frontingFeeShare: (0, Utils_1.serializeBN)(this.frontingFeeShare),
104
- executionFeeShare: (0, Utils_1.serializeBN)(this.executionFeeShare),
105
- token: this.token,
106
- gasToken: this.gasToken,
107
- tokenMultiplier: (0, Utils_1.serializeBN)(this.tokenMultiplier),
108
- gasTokenMultiplier: (0, Utils_1.serializeBN)(this.gasTokenMultiplier),
109
- btcTxId: this.btcTxId
110
- };
111
- }
112
- getIdentifierHash() {
113
- return this.quoteId;
114
- }
115
- getOutputGasAmount() {
116
- return this.amountGasToken;
117
- }
118
- getOutputAmount() {
119
- return this.amountToken;
120
- }
121
- getTotalOutputAmount() {
122
- return this.rawAmountToken * (100000n + this.callerFeeShare + this.frontingFeeShare + this.executionFeeShare) / 100000n * this.tokenMultiplier;
123
- }
124
- getTotalOutputGasAmount() {
125
- return this.rawAmountGasToken * (100000n + this.callerFeeShare + this.frontingFeeShare) / 100000n * this.gasTokenMultiplier;
126
- }
127
- getSequence() {
128
- return 0n;
129
- }
130
- getSwapFee() {
131
- return { inInputToken: this.swapFee, inOutputToken: this.swapFeeInToken };
132
- }
133
- getTokenSwapFee() {
134
- return { inInputToken: this.tokenSwapFee, inOutputToken: this.tokenSwapFeeInToken };
135
- }
136
- getGasSwapFee() {
137
- return { inInputToken: this.gasSwapFee, inOutputToken: this.gasSwapFeeInToken };
138
- }
139
- getToken() {
140
- return this.token;
141
- }
142
- getGasToken() {
143
- return this.gasToken;
144
- }
145
- getTotalInputAmount() {
146
- return this.amountBtc;
147
- }
148
- isFailed() {
149
- return this.state === SpvVaultSwapState.FAILED || this.state === SpvVaultSwapState.DOUBLE_SPENT;
150
- }
151
- isInitiated() {
152
- return this.state !== SpvVaultSwapState.CREATED;
153
- }
154
- isSuccess() {
155
- return this.state === SpvVaultSwapState.CLAIMED;
156
- }
157
- }
158
- exports.SpvVaultSwap = SpvVaultSwap;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SpvVaultSwap = exports.SpvVaultSwapState = void 0;
4
+ const SwapHandlerSwap_1 = require("../SwapHandlerSwap");
5
+ const Utils_1 = require("../../utils/Utils");
6
+ const SwapHandler_1 = require("../SwapHandler");
7
+ var SpvVaultSwapState;
8
+ (function (SpvVaultSwapState) {
9
+ SpvVaultSwapState[SpvVaultSwapState["FAILED"] = -3] = "FAILED";
10
+ SpvVaultSwapState[SpvVaultSwapState["DOUBLE_SPENT"] = -2] = "DOUBLE_SPENT";
11
+ SpvVaultSwapState[SpvVaultSwapState["EXPIRED"] = -1] = "EXPIRED";
12
+ SpvVaultSwapState[SpvVaultSwapState["CREATED"] = 0] = "CREATED";
13
+ SpvVaultSwapState[SpvVaultSwapState["SIGNED"] = 1] = "SIGNED";
14
+ SpvVaultSwapState[SpvVaultSwapState["SENT"] = 2] = "SENT";
15
+ SpvVaultSwapState[SpvVaultSwapState["BTC_CONFIRMED"] = 3] = "BTC_CONFIRMED";
16
+ SpvVaultSwapState[SpvVaultSwapState["CLAIMED"] = 4] = "CLAIMED";
17
+ })(SpvVaultSwapState = exports.SpvVaultSwapState || (exports.SpvVaultSwapState = {}));
18
+ class SpvVaultSwap extends SwapHandlerSwap_1.SwapHandlerSwap {
19
+ constructor(chainIdentifierOrObj, quoteId, expiry, vault, vaultUtxo, btcAddress, btcFeeRate, recipient, amountBtc, amountToken, amountGasToken, swapFee, swapFeeInToken, gasSwapFee, gasSwapFeeInToken, callerFeeShare, frontingFeeShare, executionFeeShare, token, gasToken) {
20
+ if (typeof (chainIdentifierOrObj) === "string") {
21
+ super(chainIdentifierOrObj, swapFee + gasSwapFee, swapFeeInToken);
22
+ this.state = SpvVaultSwapState.CREATED;
23
+ this.quoteId = quoteId;
24
+ this.expiry = expiry;
25
+ this.vaultOwner = vault.data.getOwner();
26
+ this.vaultId = vault.data.getVaultId();
27
+ this.vaultAddress = vault.btcAddress;
28
+ this.vaultUtxo = vaultUtxo;
29
+ this.tokenSwapFee = swapFee;
30
+ this.tokenSwapFeeInToken = swapFeeInToken;
31
+ this.gasSwapFee = gasSwapFee;
32
+ this.gasSwapFeeInToken = gasSwapFeeInToken;
33
+ this.btcFeeRate = btcFeeRate;
34
+ this.btcAddress = btcAddress;
35
+ this.recipient = recipient;
36
+ this.amountBtc = amountBtc;
37
+ this.amountToken = amountToken;
38
+ this.amountGasToken = amountGasToken;
39
+ const [rawAmountToken, rawAmountGasToken] = vault.toRawAmounts([amountToken, amountGasToken]);
40
+ this.rawAmountToken = rawAmountToken;
41
+ this.rawAmountGasToken = rawAmountGasToken;
42
+ this.callerFeeShare = callerFeeShare;
43
+ this.frontingFeeShare = frontingFeeShare;
44
+ this.executionFeeShare = executionFeeShare;
45
+ this.token = token;
46
+ this.tokenMultiplier = vault.data.getTokenData()[0].multiplier;
47
+ this.gasToken = gasToken;
48
+ this.gasTokenMultiplier = vault.data.getTokenData()[1].multiplier;
49
+ }
50
+ else {
51
+ super(chainIdentifierOrObj);
52
+ this.quoteId = chainIdentifierOrObj.quoteId;
53
+ this.expiry = chainIdentifierOrObj.expiry;
54
+ this.vaultOwner = chainIdentifierOrObj.owner;
55
+ this.vaultId = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.vaultId);
56
+ this.vaultAddress = chainIdentifierOrObj.vaultAddress;
57
+ this.vaultUtxo = chainIdentifierOrObj.vaultUtxo;
58
+ this.tokenSwapFee = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.swapFee);
59
+ this.tokenSwapFeeInToken = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.swapFeeInToken);
60
+ this.gasSwapFee = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.gasSwapFee);
61
+ this.gasSwapFeeInToken = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.gasSwapFeeInToken);
62
+ this.btcFeeRate = chainIdentifierOrObj.btcFeeRate;
63
+ this.btcAddress = chainIdentifierOrObj.btcAddress;
64
+ this.recipient = chainIdentifierOrObj.recipient;
65
+ this.amountBtc = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.amountBtc);
66
+ this.amountToken = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.amountToken);
67
+ this.amountGasToken = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.amountGasToken);
68
+ this.rawAmountToken = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.rawAmountToken);
69
+ this.rawAmountGasToken = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.rawAmountGasToken);
70
+ this.callerFeeShare = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.callerFeeShare);
71
+ this.frontingFeeShare = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.frontingFeeShare);
72
+ this.executionFeeShare = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.executionFeeShare);
73
+ this.token = chainIdentifierOrObj.token;
74
+ this.gasToken = chainIdentifierOrObj.gasToken;
75
+ this.tokenMultiplier = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.tokenMultiplier);
76
+ this.gasTokenMultiplier = (0, Utils_1.deserializeBN)(chainIdentifierOrObj.gasTokenMultiplier);
77
+ this.btcTxId = chainIdentifierOrObj.btcTxId;
78
+ }
79
+ this.type = SwapHandler_1.SwapHandlerType.FROM_BTC_SPV;
80
+ }
81
+ serialize() {
82
+ return {
83
+ ...super.serialize(),
84
+ quoteId: this.quoteId,
85
+ expiry: this.expiry,
86
+ owner: this.vaultOwner,
87
+ vaultId: (0, Utils_1.serializeBN)(this.vaultId),
88
+ vaultAddress: this.vaultAddress,
89
+ vaultUtxo: this.vaultUtxo,
90
+ tokenSwapFee: (0, Utils_1.serializeBN)(this.tokenSwapFee),
91
+ tokenSwapFeeInToken: (0, Utils_1.serializeBN)(this.tokenSwapFeeInToken),
92
+ gasSwapFee: (0, Utils_1.serializeBN)(this.gasSwapFee),
93
+ gasSwapFeeInToken: (0, Utils_1.serializeBN)(this.gasSwapFeeInToken),
94
+ btcFeeRate: this.btcFeeRate,
95
+ btcAddress: this.btcAddress,
96
+ recipient: this.recipient,
97
+ amountBtc: (0, Utils_1.serializeBN)(this.amountBtc),
98
+ amountToken: (0, Utils_1.serializeBN)(this.amountToken),
99
+ amountGasToken: (0, Utils_1.serializeBN)(this.amountGasToken),
100
+ rawAmountToken: (0, Utils_1.serializeBN)(this.rawAmountToken),
101
+ rawAmountGasToken: (0, Utils_1.serializeBN)(this.rawAmountGasToken),
102
+ callerFeeShare: (0, Utils_1.serializeBN)(this.callerFeeShare),
103
+ frontingFeeShare: (0, Utils_1.serializeBN)(this.frontingFeeShare),
104
+ executionFeeShare: (0, Utils_1.serializeBN)(this.executionFeeShare),
105
+ token: this.token,
106
+ gasToken: this.gasToken,
107
+ tokenMultiplier: (0, Utils_1.serializeBN)(this.tokenMultiplier),
108
+ gasTokenMultiplier: (0, Utils_1.serializeBN)(this.gasTokenMultiplier),
109
+ btcTxId: this.btcTxId
110
+ };
111
+ }
112
+ getIdentifierHash() {
113
+ return this.quoteId;
114
+ }
115
+ getOutputGasAmount() {
116
+ return this.amountGasToken;
117
+ }
118
+ getOutputAmount() {
119
+ return this.amountToken;
120
+ }
121
+ getTotalOutputAmount() {
122
+ return this.rawAmountToken * (100000n + this.callerFeeShare + this.frontingFeeShare + this.executionFeeShare) / 100000n * this.tokenMultiplier;
123
+ }
124
+ getTotalOutputGasAmount() {
125
+ return this.rawAmountGasToken * (100000n + this.callerFeeShare + this.frontingFeeShare) / 100000n * this.gasTokenMultiplier;
126
+ }
127
+ getSequence() {
128
+ return 0n;
129
+ }
130
+ getSwapFee() {
131
+ return { inInputToken: this.swapFee, inOutputToken: this.swapFeeInToken };
132
+ }
133
+ getTokenSwapFee() {
134
+ return { inInputToken: this.tokenSwapFee, inOutputToken: this.tokenSwapFeeInToken };
135
+ }
136
+ getGasSwapFee() {
137
+ return { inInputToken: this.gasSwapFee, inOutputToken: this.gasSwapFeeInToken };
138
+ }
139
+ getToken() {
140
+ return this.token;
141
+ }
142
+ getGasToken() {
143
+ return this.gasToken;
144
+ }
145
+ getTotalInputAmount() {
146
+ return this.amountBtc;
147
+ }
148
+ isFailed() {
149
+ return this.state === SpvVaultSwapState.FAILED || this.state === SpvVaultSwapState.DOUBLE_SPENT;
150
+ }
151
+ isInitiated() {
152
+ return this.state !== SpvVaultSwapState.CREATED;
153
+ }
154
+ isSuccess() {
155
+ return this.state === SpvVaultSwapState.CLAIMED;
156
+ }
157
+ }
158
+ exports.SpvVaultSwap = SpvVaultSwap;
@@ -1,68 +1,68 @@
1
- import { MultichainData, SwapBaseConfig, SwapHandler, SwapHandlerType } from "../SwapHandler";
2
- import { Express } from "express";
3
- import { IBitcoinWallet } from "../../wallets/IBitcoinWallet";
4
- import { BitcoinRpc, BtcBlock, ChainEvent, IStorageManager, SpvVaultClaimEvent, SwapData } from "@atomiqlabs/base";
5
- import { IIntermediaryStorage } from "../../storage/IIntermediaryStorage";
6
- import { ISwapPrice } from "../../prices/ISwapPrice";
7
- import { SpvVaultSwap, SpvVaultSwapState } from "./SpvVaultSwap";
8
- import { ISpvVaultSigner } from "../../wallets/ISpvVaultSigner";
9
- import { SpvVault } from "./SpvVault";
10
- import { FromBtcAmountAssertions } from "../assertions/FromBtcAmountAssertions";
11
- import { SpvVaults } from "./SpvVaults";
12
- export type SpvVaultSwapHandlerConfig = SwapBaseConfig & {
13
- vaultsCheckInterval: number;
14
- gasTokenMax: {
15
- [chainId: string]: bigint;
16
- };
17
- maxUnclaimedWithdrawals?: number;
18
- };
19
- export type SpvVaultSwapRequestType = {
20
- address: string;
21
- amount: bigint;
22
- token: string;
23
- gasAmount: bigint;
24
- gasToken: string;
25
- exactOut?: boolean;
26
- callerFeeRate: bigint;
27
- frontingFeeRate: bigint;
28
- };
29
- export type SpvVaultPostQuote = {
30
- quoteId: string;
31
- psbtHex: string;
32
- };
33
- export declare class SpvVaultSwapHandler extends SwapHandler<SpvVaultSwap, SpvVaultSwapState> {
34
- readonly type = SwapHandlerType.FROM_BTC_SPV;
35
- readonly bitcoin: IBitcoinWallet;
36
- readonly bitcoinRpc: BitcoinRpc<BtcBlock>;
37
- readonly vaultSigner: ISpvVaultSigner;
38
- readonly btcTxIdIndex: Map<string, SpvVaultSwap>;
39
- readonly AmountAssertions: FromBtcAmountAssertions;
40
- readonly Vaults: SpvVaults;
41
- config: SpvVaultSwapHandlerConfig;
42
- constructor(storageDirectory: IIntermediaryStorage<SpvVaultSwap>, vaultStorage: IStorageManager<SpvVault>, path: string, chainsData: MultichainData, swapPricing: ISwapPrice, bitcoin: IBitcoinWallet, bitcoinRpc: BitcoinRpc<BtcBlock>, spvVaultSigner: ISpvVaultSigner, config: SpvVaultSwapHandlerConfig);
43
- protected processClaimEvent(swap: SpvVaultSwap | null, event: SpvVaultClaimEvent): Promise<void>;
44
- /**
45
- * Chain event processor
46
- *
47
- * @param chainIdentifier
48
- * @param eventData
49
- */
50
- protected processEvent(chainIdentifier: string, eventData: ChainEvent<SwapData>[]): Promise<boolean>;
51
- /**
52
- * Initializes chain events subscription
53
- */
54
- protected subscribeToEvents(): void;
55
- startWatchdog(): Promise<void>;
56
- init(): Promise<void>;
57
- protected processPastSwap(swap: SpvVaultSwap): Promise<void>;
58
- protected processPastSwaps(): Promise<void>;
59
- protected getPricePrefetches(chainIdentifier: string, token: string, gasToken: string, abortController: AbortController): {
60
- pricePrefetchPromise: Promise<bigint>;
61
- gasTokenPricePrefetchPromise: Promise<bigint>;
62
- };
63
- startRestServer(restServer: Express): void;
64
- getInfoData(): any;
65
- protected saveSwapData(swap: SpvVaultSwap): Promise<void>;
66
- protected removeSwapData(hash: string, sequence: bigint): Promise<void>;
67
- protected removeSwapData(swap: SpvVaultSwap, ultimateState?: SpvVaultSwapState): Promise<void>;
68
- }
1
+ import { MultichainData, SwapBaseConfig, SwapHandler, SwapHandlerType } from "../SwapHandler";
2
+ import { Express } from "express";
3
+ import { IBitcoinWallet } from "../../wallets/IBitcoinWallet";
4
+ import { BitcoinRpc, BtcBlock, ChainEvent, IStorageManager, SpvVaultClaimEvent, SwapData } from "@atomiqlabs/base";
5
+ import { IIntermediaryStorage } from "../../storage/IIntermediaryStorage";
6
+ import { ISwapPrice } from "../../prices/ISwapPrice";
7
+ import { SpvVaultSwap, SpvVaultSwapState } from "./SpvVaultSwap";
8
+ import { ISpvVaultSigner } from "../../wallets/ISpvVaultSigner";
9
+ import { SpvVault } from "./SpvVault";
10
+ import { FromBtcAmountAssertions } from "../assertions/FromBtcAmountAssertions";
11
+ import { SpvVaults } from "./SpvVaults";
12
+ export type SpvVaultSwapHandlerConfig = SwapBaseConfig & {
13
+ vaultsCheckInterval: number;
14
+ gasTokenMax: {
15
+ [chainId: string]: bigint;
16
+ };
17
+ maxUnclaimedWithdrawals?: number;
18
+ };
19
+ export type SpvVaultSwapRequestType = {
20
+ address: string;
21
+ amount: bigint;
22
+ token: string;
23
+ gasAmount: bigint;
24
+ gasToken: string;
25
+ exactOut?: boolean;
26
+ callerFeeRate: bigint;
27
+ frontingFeeRate: bigint;
28
+ };
29
+ export type SpvVaultPostQuote = {
30
+ quoteId: string;
31
+ psbtHex: string;
32
+ };
33
+ export declare class SpvVaultSwapHandler extends SwapHandler<SpvVaultSwap, SpvVaultSwapState> {
34
+ readonly type = SwapHandlerType.FROM_BTC_SPV;
35
+ readonly bitcoin: IBitcoinWallet;
36
+ readonly bitcoinRpc: BitcoinRpc<BtcBlock>;
37
+ readonly vaultSigner: ISpvVaultSigner;
38
+ readonly btcTxIdIndex: Map<string, SpvVaultSwap>;
39
+ readonly AmountAssertions: FromBtcAmountAssertions;
40
+ readonly Vaults: SpvVaults;
41
+ config: SpvVaultSwapHandlerConfig;
42
+ constructor(storageDirectory: IIntermediaryStorage<SpvVaultSwap>, vaultStorage: IStorageManager<SpvVault>, path: string, chainsData: MultichainData, swapPricing: ISwapPrice, bitcoin: IBitcoinWallet, bitcoinRpc: BitcoinRpc<BtcBlock>, spvVaultSigner: ISpvVaultSigner, config: SpvVaultSwapHandlerConfig);
43
+ protected processClaimEvent(swap: SpvVaultSwap | null, event: SpvVaultClaimEvent): Promise<void>;
44
+ /**
45
+ * Chain event processor
46
+ *
47
+ * @param chainIdentifier
48
+ * @param eventData
49
+ */
50
+ protected processEvent(chainIdentifier: string, eventData: ChainEvent<SwapData>[]): Promise<boolean>;
51
+ /**
52
+ * Initializes chain events subscription
53
+ */
54
+ protected subscribeToEvents(): void;
55
+ startWatchdog(): Promise<void>;
56
+ init(): Promise<void>;
57
+ protected processPastSwap(swap: SpvVaultSwap): Promise<void>;
58
+ protected processPastSwaps(): Promise<void>;
59
+ protected getPricePrefetches(chainIdentifier: string, token: string, gasToken: string, abortController: AbortController): {
60
+ pricePrefetchPromise: Promise<bigint>;
61
+ gasTokenPricePrefetchPromise: Promise<bigint>;
62
+ };
63
+ startRestServer(restServer: Express): void;
64
+ getInfoData(): any;
65
+ protected saveSwapData(swap: SpvVaultSwap): Promise<void>;
66
+ protected removeSwapData(hash: string, sequence: bigint): Promise<void>;
67
+ protected removeSwapData(swap: SpvVaultSwap, ultimateState?: SpvVaultSwapState): Promise<void>;
68
+ }