@atomiqlabs/lp-lib 10.3.11 → 11.0.0

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 (94) hide show
  1. package/dist/index.d.ts +2 -1
  2. package/dist/index.js +2 -4
  3. package/dist/plugins/IPlugin.d.ts +3 -2
  4. package/dist/plugins/PluginManager.d.ts +3 -2
  5. package/dist/plugins/PluginManager.js +2 -2
  6. package/dist/swaps/FromBtcBaseSwap.d.ts +5 -1
  7. package/dist/swaps/FromBtcBaseSwap.js +20 -0
  8. package/dist/swaps/FromBtcBaseSwapHandler.d.ts +1 -0
  9. package/dist/swaps/FromBtcBaseSwapHandler.js +1 -1
  10. package/dist/swaps/FromBtcLnBaseSwapHandler.d.ts +8 -6
  11. package/dist/swaps/FromBtcLnBaseSwapHandler.js +7 -5
  12. package/dist/swaps/SwapHandler.d.ts +1 -4
  13. package/dist/swaps/SwapHandler.js +1 -2
  14. package/dist/swaps/SwapHandlerSwap.d.ts +4 -0
  15. package/dist/swaps/SwapHandlerSwap.js +9 -1
  16. package/dist/swaps/ToBtcBaseSwap.d.ts +3 -1
  17. package/dist/swaps/ToBtcBaseSwap.js +8 -2
  18. package/dist/swaps/ToBtcBaseSwapHandler.d.ts +1 -0
  19. package/dist/swaps/ToBtcBaseSwapHandler.js +1 -1
  20. package/dist/swaps/frombtc_abstract/FromBtcAbs.d.ts +3 -5
  21. package/dist/swaps/frombtc_abstract/FromBtcAbs.js +18 -25
  22. package/dist/swaps/frombtc_abstract/FromBtcSwapAbs.d.ts +1 -4
  23. package/dist/swaps/frombtc_abstract/FromBtcSwapAbs.js +3 -16
  24. package/dist/swaps/frombtc_trusted/FromBtcTrusted.d.ts +6 -9
  25. package/dist/swaps/frombtc_trusted/FromBtcTrusted.js +238 -137
  26. package/dist/swaps/frombtc_trusted/FromBtcTrustedSwap.d.ts +9 -6
  27. package/dist/swaps/frombtc_trusted/FromBtcTrustedSwap.js +15 -10
  28. package/dist/swaps/frombtcln_abstract/FromBtcLnAbs.d.ts +2 -2
  29. package/dist/swaps/frombtcln_abstract/FromBtcLnAbs.js +42 -62
  30. package/dist/swaps/frombtcln_abstract/FromBtcLnSwapAbs.d.ts +1 -6
  31. package/dist/swaps/frombtcln_abstract/FromBtcLnSwapAbs.js +2 -14
  32. package/dist/swaps/frombtcln_trusted/FromBtcLnTrusted.d.ts +3 -5
  33. package/dist/swaps/frombtcln_trusted/FromBtcLnTrusted.js +64 -80
  34. package/dist/swaps/frombtcln_trusted/FromBtcLnTrustedSwap.d.ts +1 -2
  35. package/dist/swaps/frombtcln_trusted/FromBtcLnTrustedSwap.js +5 -8
  36. package/dist/swaps/tobtc_abstract/ToBtcAbs.d.ts +5 -125
  37. package/dist/swaps/tobtc_abstract/ToBtcAbs.js +41 -334
  38. package/dist/swaps/tobtc_abstract/ToBtcSwapAbs.d.ts +1 -4
  39. package/dist/swaps/tobtc_abstract/ToBtcSwapAbs.js +2 -11
  40. package/dist/swaps/tobtcln_abstract/ToBtcLnAbs.d.ts +5 -55
  41. package/dist/swaps/tobtcln_abstract/ToBtcLnAbs.js +152 -398
  42. package/dist/swaps/tobtcln_abstract/ToBtcLnSwapAbs.d.ts +1 -6
  43. package/dist/swaps/tobtcln_abstract/ToBtcLnSwapAbs.js +2 -15
  44. package/dist/utils/Utils.d.ts +0 -10
  45. package/dist/utils/Utils.js +1 -34
  46. package/dist/wallets/IBitcoinWallet.d.ts +62 -0
  47. package/dist/wallets/IBitcoinWallet.js +2 -0
  48. package/dist/wallets/ILightningWallet.d.ts +118 -0
  49. package/dist/wallets/ILightningWallet.js +37 -0
  50. package/package.json +4 -9
  51. package/src/index.ts +3 -5
  52. package/src/plugins/IPlugin.ts +4 -2
  53. package/src/plugins/PluginManager.ts +6 -3
  54. package/src/swaps/FromBtcBaseSwap.ts +24 -1
  55. package/src/swaps/FromBtcBaseSwapHandler.ts +6 -2
  56. package/src/swaps/FromBtcLnBaseSwapHandler.ts +22 -6
  57. package/src/swaps/SwapHandler.ts +1 -8
  58. package/src/swaps/SwapHandlerSwap.ts +14 -1
  59. package/src/swaps/ToBtcBaseSwap.ts +12 -3
  60. package/src/swaps/ToBtcBaseSwapHandler.ts +6 -2
  61. package/src/swaps/frombtc_abstract/FromBtcAbs.ts +24 -28
  62. package/src/swaps/frombtc_abstract/FromBtcSwapAbs.ts +3 -18
  63. package/src/swaps/frombtc_trusted/FromBtcTrusted.ts +260 -159
  64. package/src/swaps/frombtc_trusted/FromBtcTrustedSwap.ts +22 -15
  65. package/src/swaps/frombtcln_abstract/FromBtcLnAbs.ts +69 -79
  66. package/src/swaps/frombtcln_abstract/FromBtcLnSwapAbs.ts +3 -20
  67. package/src/swaps/frombtcln_trusted/FromBtcLnTrusted.ts +80 -97
  68. package/src/swaps/frombtcln_trusted/FromBtcLnTrustedSwap.ts +6 -9
  69. package/src/swaps/tobtc_abstract/ToBtcAbs.ts +52 -410
  70. package/src/swaps/tobtc_abstract/ToBtcSwapAbs.ts +3 -18
  71. package/src/swaps/tobtcln_abstract/ToBtcLnAbs.ts +157 -434
  72. package/src/swaps/tobtcln_abstract/ToBtcLnSwapAbs.ts +3 -20
  73. package/src/utils/Utils.ts +0 -31
  74. package/src/wallets/IBitcoinWallet.ts +66 -0
  75. package/src/wallets/ILightningWallet.ts +179 -0
  76. package/dist/fees/OneDollarFeeEstimator.d.ts +0 -16
  77. package/dist/fees/OneDollarFeeEstimator.js +0 -71
  78. package/dist/utils/coinselect2/accumulative.d.ts +0 -6
  79. package/dist/utils/coinselect2/accumulative.js +0 -44
  80. package/dist/utils/coinselect2/blackjack.d.ts +0 -6
  81. package/dist/utils/coinselect2/blackjack.js +0 -41
  82. package/dist/utils/coinselect2/index.d.ts +0 -16
  83. package/dist/utils/coinselect2/index.js +0 -40
  84. package/dist/utils/coinselect2/utils.d.ts +0 -64
  85. package/dist/utils/coinselect2/utils.js +0 -121
  86. package/src/fees/OneDollarFeeEstimator.ts +0 -95
  87. package/src/utils/coinselect2/accumulative.js +0 -32
  88. package/src/utils/coinselect2/accumulative.ts +0 -58
  89. package/src/utils/coinselect2/blackjack.js +0 -29
  90. package/src/utils/coinselect2/blackjack.ts +0 -54
  91. package/src/utils/coinselect2/index.js +0 -16
  92. package/src/utils/coinselect2/index.ts +0 -50
  93. package/src/utils/coinselect2/utils.js +0 -110
  94. package/src/utils/coinselect2/utils.ts +0 -183
@@ -1,183 +0,0 @@
1
- // baseline estimates, used to improve performance
2
- const TX_EMPTY_SIZE = 4 + 1 + 1 + 4;
3
- const TX_INPUT_BASE = 32 + 4 + 1 + 4;
4
-
5
- const WITNESS_OVERHEAD = 2/4;
6
-
7
- const P2WPKH_WITNESS = (1+1+72+1+33)/4;
8
- const P2TR_WITNESS = (1+1+65)/4;
9
-
10
- const TX_INPUT_PUBKEYHASH = 107;
11
- const TX_INPUT_P2SH_P2WPKH = 23 + P2WPKH_WITNESS + 1;
12
- const TX_INPUT_P2WPKH = 0 + P2WPKH_WITNESS;
13
- const TX_INPUT_P2WSH = 0 + (1+1+64)/4;
14
- const TX_INPUT_P2TR = 0 + P2TR_WITNESS;
15
-
16
- const TX_OUTPUT_BASE = 8 + 1;
17
-
18
- const TX_OUTPUT_PUBKEYHASH = 25;
19
- const TX_OUTPUT_P2SH_P2WPKH = 23;
20
- const TX_OUTPUT_P2WPKH = 22;
21
- const TX_OUTPUT_P2WSH = 34;
22
- const TX_OUTPUT_P2TR = 34;
23
-
24
- export type CoinselectAddressTypes = "p2sh-p2wpkh" | "p2wpkh" | "p2wsh" | "p2tr" | "p2pkh";
25
-
26
- export type CoinselectTxInput = {
27
- script?: Buffer,
28
- witness?: Buffer,
29
- txId: string,
30
- vout: number,
31
- type?: CoinselectAddressTypes,
32
- value: number,
33
- outputScript?: Buffer,
34
- address?: string
35
- };
36
-
37
- export type CoinselectTxOutput = {
38
- script?: Buffer,
39
- address?: string,
40
- type?: CoinselectAddressTypes,
41
- value: number
42
- };
43
-
44
-
45
- const INPUT_BYTES = {
46
- "p2sh-p2wpkh": TX_INPUT_P2SH_P2WPKH,
47
- "p2wpkh": TX_INPUT_P2WPKH,
48
- "p2tr": TX_INPUT_P2TR,
49
- "p2pkh": TX_INPUT_PUBKEYHASH,
50
- "p2wsh": TX_INPUT_P2WSH
51
- };
52
-
53
- function inputBytes (input: {
54
- script?: Buffer,
55
- witness?: Buffer,
56
- type?: CoinselectAddressTypes
57
- }) {
58
- if(input.script==null && input.witness==null) {
59
- return {length: TX_INPUT_BASE + INPUT_BYTES[input.type], isWitness: input.type!=="p2pkh"};
60
- }
61
- return {
62
- length: TX_INPUT_BASE + (input.script?.length || 0) + ((input.witness?.length || 0)/4),
63
- isWitness: input.witness!=null
64
- };
65
- }
66
-
67
- const OUTPUT_BYTES = {
68
- "p2sh-p2wpkh": TX_OUTPUT_P2SH_P2WPKH,
69
- "p2wpkh": TX_OUTPUT_P2WPKH,
70
- "p2tr": TX_OUTPUT_P2TR,
71
- "p2pkh": TX_OUTPUT_PUBKEYHASH,
72
- "p2wsh": TX_OUTPUT_P2WSH
73
- };
74
-
75
- function outputBytes (output: {
76
- script?: Buffer,
77
- type?: CoinselectAddressTypes
78
- }): number {
79
- return TX_OUTPUT_BASE + (output.script ? output.script.length : OUTPUT_BYTES[output.type]);
80
- }
81
-
82
- const DUST_THRESHOLDS = {
83
- "p2sh-p2wpkh": 540,
84
- "p2wpkh": 294,
85
- "p2tr": 330,
86
- "p2pkh": 546,
87
- "p2wsh": 330
88
- };
89
-
90
- function dustThreshold (output: {
91
- script?: Buffer,
92
- type: CoinselectAddressTypes
93
- }): number {
94
- return DUST_THRESHOLDS[output.type];
95
- }
96
-
97
- function transactionBytes (
98
- inputs: {
99
- script?: Buffer,
100
- type?: CoinselectAddressTypes
101
- }[],
102
- outputs: {
103
- script?: Buffer,
104
- type?: CoinselectAddressTypes
105
- }[],
106
- changeType: CoinselectAddressTypes
107
- ): number {
108
- let size = TX_EMPTY_SIZE;
109
- let isSegwit = false;
110
- if(changeType!=="p2pkh") {
111
- size += WITNESS_OVERHEAD;
112
- let isSegwit = true;
113
- }
114
- for(let input of inputs) {
115
- const {length, isWitness} = inputBytes(input);
116
- size += length;
117
- if(!isSegwit && isWitness) {
118
- isSegwit = true;
119
- size += WITNESS_OVERHEAD;
120
- }
121
- }
122
- for(let output of outputs) {
123
- size += outputBytes(output);
124
- }
125
- return Math.ceil(size);
126
- }
127
-
128
- function uintOrNaN(v: number): number {
129
- if (typeof v !== 'number') return NaN;
130
- if (!isFinite(v)) return NaN;
131
- if (Math.floor(v) !== v) return NaN;
132
- if (v < 0) return NaN;
133
- return v;
134
- }
135
-
136
- function sumForgiving(range: {value: number}[]): number {
137
- return range.reduce((a, x) => a + (isFinite(x.value) ? x.value : 0), 0);
138
- }
139
-
140
- function sumOrNaN(range: {value: number}[]): number {
141
- return range.reduce((a, x) => a + uintOrNaN(x.value), 0);
142
- }
143
-
144
- function finalize(
145
- inputs: CoinselectTxInput[],
146
- outputs: CoinselectTxOutput[],
147
- feeRate: number,
148
- changeType: CoinselectAddressTypes
149
- ): {
150
- inputs?: CoinselectTxInput[],
151
- outputs?: CoinselectTxOutput[],
152
- fee: number
153
- } {
154
- const bytesAccum = transactionBytes(inputs, outputs, changeType);
155
-
156
- const feeAfterExtraOutput = feeRate * (bytesAccum + outputBytes({type: changeType}))
157
- const remainderAfterExtraOutput = sumOrNaN(inputs) - (sumOrNaN(outputs) + feeAfterExtraOutput)
158
-
159
- // is it worth a change output?
160
- if (remainderAfterExtraOutput >= dustThreshold({type: changeType})) {
161
- outputs = outputs.concat({ value: remainderAfterExtraOutput, type: changeType })
162
- }
163
-
164
- const fee = sumOrNaN(inputs) - sumOrNaN(outputs)
165
- if (!isFinite(fee)) return { fee: feeRate * bytesAccum }
166
-
167
- return {
168
- inputs: inputs,
169
- outputs: outputs,
170
- fee: fee
171
- }
172
- }
173
-
174
- export const utils = {
175
- dustThreshold: dustThreshold,
176
- finalize: finalize,
177
- inputBytes: inputBytes,
178
- outputBytes: outputBytes,
179
- sumOrNaN: sumOrNaN,
180
- sumForgiving: sumForgiving,
181
- transactionBytes: transactionBytes,
182
- uintOrNaN: uintOrNaN
183
- };