@teleportdao/bitcoin 1.6.1 → 1.7.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 (129) hide show
  1. package/.tmp/check.ts +101 -0
  2. package/.tmp/psbt/sign-transaction.ts +121 -0
  3. package/.tmp/rbf.ts +45 -0
  4. package/dist/bitcoin-interface-ordinal.d.ts +109 -0
  5. package/dist/bitcoin-interface-ordinal.d.ts.map +1 -0
  6. package/dist/bitcoin-interface-ordinal.js +141 -0
  7. package/dist/bitcoin-interface-ordinal.js.map +1 -0
  8. package/dist/bitcoin-interface-teleswap.d.ts +148 -0
  9. package/dist/bitcoin-interface-teleswap.d.ts.map +1 -0
  10. package/dist/bitcoin-interface-teleswap.js +179 -0
  11. package/dist/bitcoin-interface-teleswap.js.map +1 -0
  12. package/dist/bitcoin-interface-utils.d.ts.map +1 -1
  13. package/dist/bitcoin-interface-utils.js.map +1 -1
  14. package/dist/bitcoin-interface.d.ts +45 -333
  15. package/dist/bitcoin-interface.d.ts.map +1 -1
  16. package/dist/bitcoin-interface.js +68 -202
  17. package/dist/bitcoin-interface.js.map +1 -1
  18. package/dist/bitcoin-utils.d.ts +12 -59
  19. package/dist/bitcoin-utils.d.ts.map +1 -1
  20. package/dist/bitcoin-utils.js +61 -61
  21. package/dist/bitcoin-utils.js.map +1 -1
  22. package/dist/{bitcoin-base.d.ts → bitcoin-wallet-base.d.ts} +9 -9
  23. package/dist/bitcoin-wallet-base.d.ts.map +1 -0
  24. package/dist/{bitcoin-base.js → bitcoin-wallet-base.js} +15 -14
  25. package/dist/bitcoin-wallet-base.js.map +1 -0
  26. package/dist/helper/brc20-helper.d.ts +43 -0
  27. package/dist/helper/brc20-helper.d.ts.map +1 -0
  28. package/dist/helper/brc20-helper.js +129 -0
  29. package/dist/helper/brc20-helper.js.map +1 -0
  30. package/dist/helper/index.d.ts +4 -0
  31. package/dist/helper/index.d.ts.map +1 -0
  32. package/dist/helper/index.js +30 -0
  33. package/dist/helper/index.js.map +1 -0
  34. package/dist/helper/ordinal-helper.d.ts +13 -0
  35. package/dist/helper/ordinal-helper.d.ts.map +1 -0
  36. package/dist/helper/ordinal-helper.js +127 -0
  37. package/dist/helper/ordinal-helper.js.map +1 -0
  38. package/dist/helper/teleswap-helper.d.ts +84 -0
  39. package/dist/helper/teleswap-helper.d.ts.map +1 -0
  40. package/dist/helper/teleswap-helper.js +181 -0
  41. package/dist/helper/teleswap-helper.js.map +1 -0
  42. package/dist/index.d.ts +8 -3
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +8 -3
  45. package/dist/index.js.map +1 -1
  46. package/dist/ordinal-wallet.d.ts +536 -0
  47. package/dist/ordinal-wallet.d.ts.map +1 -0
  48. package/dist/ordinal-wallet.js +448 -0
  49. package/dist/ordinal-wallet.js.map +1 -0
  50. package/dist/sign/sign-transaction.d.ts +2 -4
  51. package/dist/sign/sign-transaction.d.ts.map +1 -1
  52. package/dist/sign/sign-transaction.js +26 -22
  53. package/dist/sign/sign-transaction.js.map +1 -1
  54. package/dist/teleswap-wallet.d.ts +54 -0
  55. package/dist/teleswap-wallet.d.ts.map +1 -0
  56. package/dist/teleswap-wallet.js +87 -0
  57. package/dist/teleswap-wallet.js.map +1 -0
  58. package/dist/transaction-builder/bitcoin-transaction-builder.d.ts +2 -20
  59. package/dist/transaction-builder/bitcoin-transaction-builder.d.ts.map +1 -1
  60. package/dist/transaction-builder/bitcoin-transaction-builder.js +5 -4
  61. package/dist/transaction-builder/bitcoin-transaction-builder.js.map +1 -1
  62. package/dist/transaction-builder/index.d.ts +2 -1
  63. package/dist/transaction-builder/index.d.ts.map +1 -1
  64. package/dist/transaction-builder/index.js +2 -6
  65. package/dist/transaction-builder/index.js.map +1 -1
  66. package/dist/transaction-builder/ordinal-transaction-builder.d.ts +63 -0
  67. package/dist/transaction-builder/ordinal-transaction-builder.d.ts.map +1 -0
  68. package/dist/transaction-builder/ordinal-transaction-builder.js +131 -0
  69. package/dist/transaction-builder/ordinal-transaction-builder.js.map +1 -0
  70. package/dist/transaction-builder/transaction-builder.d.ts +10 -7
  71. package/dist/transaction-builder/transaction-builder.d.ts.map +1 -1
  72. package/dist/transaction-builder/transaction-builder.js +18 -9
  73. package/dist/transaction-builder/transaction-builder.js.map +1 -1
  74. package/dist/type.d.ts +43 -0
  75. package/dist/type.d.ts.map +1 -0
  76. package/dist/type.js +3 -0
  77. package/dist/type.js.map +1 -0
  78. package/dist/utils/tools.d.ts +4 -4
  79. package/dist/utils/tools.d.ts.map +1 -1
  80. package/dist/utils/tools.js +8 -5
  81. package/dist/utils/tools.js.map +1 -1
  82. package/package.json +6 -9
  83. package/src/bitcoin-interface-ordinal.ts +181 -0
  84. package/src/bitcoin-interface-teleswap.ts +255 -0
  85. package/src/bitcoin-interface-utils.ts +1 -1
  86. package/src/bitcoin-interface.ts +99 -303
  87. package/src/bitcoin-utils.ts +65 -90
  88. package/src/{bitcoin-base.ts → bitcoin-wallet-base.ts} +24 -19
  89. package/src/helper/brc20-helper.ts +181 -0
  90. package/src/helper/index.ts +3 -0
  91. package/src/helper/ordinal-helper.ts +118 -0
  92. package/src/helper/teleswap-helper.ts +300 -0
  93. package/src/index.ts +11 -3
  94. package/src/ordinal-wallet.ts +738 -0
  95. package/src/sign/sign-transaction.ts +42 -33
  96. package/src/teleswap-wallet.ts +155 -0
  97. package/src/transaction-builder/bitcoin-transaction-builder.ts +7 -24
  98. package/src/transaction-builder/index.ts +2 -1
  99. package/src/transaction-builder/ordinal-transaction-builder.ts +147 -0
  100. package/src/transaction-builder/transaction-builder.ts +33 -15
  101. package/src/type.ts +43 -0
  102. package/src/utils/tools.ts +17 -11
  103. package/tsconfig.json +1 -2
  104. package/dist/bitcoin-base.d.ts.map +0 -1
  105. package/dist/bitcoin-base.js.map +0 -1
  106. package/dist/bitcoin-utils-2.d.ts +0 -2
  107. package/dist/bitcoin-utils-2.d.ts.map +0 -1
  108. package/dist/bitcoin-utils-2.js +0 -13
  109. package/dist/bitcoin-utils-2.js.map +0 -1
  110. package/dist/bundle.js +0 -17
  111. package/dist/helper/burn-request-helper.d.ts +0 -7
  112. package/dist/helper/burn-request-helper.d.ts.map +0 -1
  113. package/dist/helper/burn-request-helper.js +0 -26
  114. package/dist/helper/burn-request-helper.js.map +0 -1
  115. package/dist/helper/teleport-request-helper.d.ts +0 -47
  116. package/dist/helper/teleport-request-helper.d.ts.map +0 -1
  117. package/dist/helper/teleport-request-helper.js +0 -146
  118. package/dist/helper/teleport-request-helper.js.map +0 -1
  119. package/dist/mempool-space.d.ts +0 -69
  120. package/dist/mempool-space.d.ts.map +0 -1
  121. package/dist/mempool-space.js +0 -266
  122. package/dist/mempool-space.js.map +0 -1
  123. package/dist/teleport-dao-payments.d.ts +0 -76
  124. package/dist/teleport-dao-payments.d.ts.map +0 -1
  125. package/dist/teleport-dao-payments.js +0 -217
  126. package/dist/teleport-dao-payments.js.map +0 -1
  127. package/src/helper/burn-request-helper.js +0 -27
  128. package/src/helper/teleport-request-helper.js +0 -181
  129. package/src/teleport-dao-payments.ts +0 -347
@@ -1,347 +0,0 @@
1
- import type { ExtendedUtxo, Target } from "./transaction-builder/transaction-builder"
2
- import { BitcoinBase } from "./bitcoin-base"
3
-
4
- export type TransferRequest = {
5
- changeAddress?: string
6
- lockerAddress: string
7
- amount: number
8
- fullAmount?: boolean
9
- //-----------
10
- chainId: number
11
- appId: number
12
- recipientAddress: string // 20 bytes
13
- percentageFee: number // 2 bytes in satoshi
14
- speed?: number | boolean // 1 byte
15
- isExchange?: boolean
16
- exchangeTokenAddress?: string // 20 bytes
17
- outputAmount?: number // 28 bytes
18
- deadline?: number // 4 bytes
19
- isFixedToken?: boolean // 1 byte
20
- feeSpeed?: "normal" | "fast" | "slow"
21
- staticFeeRate?: number
22
- }
23
- export class TeleportDaoPayment extends BitcoinBase {
24
- // payment
25
- async payBurnRequest(receivers: Target[], feeSpeed: "normal" | "fast" | "slow" = "normal") {
26
- if (!this.currentAccount || !this.currentAccountType || !this.publicKey || !this.privateKey) {
27
- throw new Error("account not initialized")
28
- }
29
- let extendedUtxo = await this.getExtendedUtxo({
30
- address: this.currentAccount,
31
- addressType: this.currentAccountType,
32
- publicKey: this.publicKey.toString("hex"),
33
- })
34
-
35
- let feeRate = await this.transactionBuilder._getFeeRate(feeSpeed)
36
- let unsignedTx = await this.transactionBuilder.processUnsignedTransaction({
37
- extendedUtxo,
38
- targets: receivers,
39
- changeAddress: this.currentAccount,
40
- feeRate,
41
- fullAmount: false,
42
- })
43
- let signedPsbt = await this.signer.signPsbt(unsignedTx, this.privateKey)
44
- let signedTx = this.signer.finalizePsbts([signedPsbt])
45
- let txId = await this.transactionBuilder.sendTx(signedTx)
46
- return txId
47
- }
48
-
49
- // send
50
- async transferBitcoinToEth({
51
- lockerAddress,
52
- amount,
53
- fullAmount = false,
54
- //-----------
55
- chainId,
56
- appId,
57
- recipientAddress, // 20 bytes
58
- percentageFee, // 2 bytes in satoshi
59
- speed = 0, // 1 byte
60
- isExchange = false,
61
- exchangeTokenAddress = "0x0000000000000000000000000000000000000000", // 20 bytes
62
- outputAmount = 0, // 28 bytes
63
- deadline, // 4 bytes
64
- isFixedToken = false, // 1 byte
65
- feeSpeed = "normal",
66
- staticFeeRate,
67
- }: TransferRequest) {
68
- if (!this.currentAccount || !this.currentAccountType || !this.publicKey || !this.privateKey) {
69
- throw new Error("account not initialized")
70
- }
71
- let extendedUtxo = await this.getExtendedUtxo({
72
- address: this.currentAccount,
73
- addressType: this.currentAccountType,
74
- publicKey: this.publicKey.toString("hex"),
75
- })
76
- let unsignedTx = await this.getBitcoinToEthUnsignedPsbt({
77
- changeAddress: this.currentAccount,
78
- extendedUtxo,
79
- lockerAddress,
80
- amount,
81
- fullAmount,
82
- //-----------
83
- chainId,
84
- appId,
85
- recipientAddress,
86
- percentageFee,
87
- speed,
88
- isExchange,
89
- exchangeTokenAddress,
90
- outputAmount,
91
- deadline,
92
- isFixedToken,
93
- feeSpeed,
94
- staticFeeRate,
95
- })
96
- let signedPsbt = await this.signer.signPsbt(unsignedTx, this.privateKey)
97
- let txId = await this.sendSignedPsbt(signedPsbt)
98
- return txId
99
- }
100
-
101
- // get
102
- async getBitcoinToEthTargetOutputs({
103
- lockerAddress,
104
- amount,
105
- fullAmount = false,
106
- //-----------
107
- chainId,
108
- appId,
109
- recipientAddress, // 20 bytes
110
- percentageFee, // 2 bytes in satoshi
111
- speed = 0, // 1 byte
112
- isExchange = false,
113
- exchangeTokenAddress = "0x0000000000000000000000000000000000000000", // 20 bytes
114
- outputAmount = 0, // 28 bytes
115
- deadline = 0, // 4 bytes
116
- isFixedToken = false, // 1 byte
117
- }: TransferRequest): Promise<Target[]> {
118
- let dataHex = TeleportDaoPayment.getTransferOpReturnData({
119
- chainId,
120
- appId,
121
- recipientAddress,
122
- percentageFee,
123
- speed,
124
- isExchange,
125
- exchangeTokenAddress,
126
- outputAmount,
127
- deadline,
128
- isFixedToken,
129
- })
130
- let opTarget = this.transactionBuilder.getOpReturnTarget(dataHex)
131
- return fullAmount
132
- ? [opTarget]
133
- : [
134
- {
135
- address: lockerAddress,
136
- value: amount,
137
- },
138
- opTarget,
139
- ]
140
- }
141
-
142
- async getBitcoinToEthUnsignedPsbt({
143
- changeAddress,
144
- extendedUtxo,
145
- lockerAddress,
146
- amount,
147
- fullAmount = false,
148
- //-----------
149
- chainId,
150
- appId,
151
- recipientAddress, // 20 bytes
152
- percentageFee, // 2 bytes in satoshi
153
- speed = 0, // 1 byte
154
- isExchange = false,
155
- exchangeTokenAddress = "0x0000000000000000000000000000000000000000", // 20 bytes
156
- outputAmount = 0, // 28 bytes
157
- deadline = 0, // 4 bytes
158
- isFixedToken = false, // 1 byte
159
- feeSpeed = "normal",
160
- staticFeeRate,
161
- }: TransferRequest & {
162
- extendedUtxo: ExtendedUtxo[]
163
- }) {
164
- let feeRate = staticFeeRate || (await this.transactionBuilder._getFeeRate(feeSpeed))
165
- let targets = await this.getBitcoinToEthTargetOutputs({
166
- lockerAddress,
167
- amount,
168
- fullAmount,
169
- chainId,
170
- appId,
171
- recipientAddress,
172
- percentageFee,
173
- speed,
174
- isExchange,
175
- exchangeTokenAddress,
176
- outputAmount,
177
- deadline,
178
- isFixedToken,
179
- })
180
- let unsignedTx = await this.transactionBuilder.processUnsignedTransaction({
181
- extendedUtxo,
182
- targets,
183
- changeAddress: fullAmount ? lockerAddress : changeAddress,
184
- feeRate,
185
- fullAmount,
186
- })
187
- return unsignedTx
188
- }
189
-
190
- // send
191
- async bitcoinToEthLend({
192
- lockerAddress,
193
- amount,
194
- //-----------
195
- chainId,
196
- appId,
197
- recipientAddress, // 20 bytes
198
- percentageFee, // 2 bytes in satoshi
199
- mode = 0, // 1 byte
200
- isBorrow = false,
201
- tokenAddress = "0x0000000000000000000000000000000000000000", // 20 bytes
202
- borrowAmount = 0, // 28 bytes
203
- staticFeeRate,
204
- }: {
205
- lockerAddress: string
206
- amount: number
207
- chainId: number
208
- appId: number
209
- recipientAddress: string // 20 bytes
210
- percentageFee: number // 2 bytes in satoshi
211
- staticFeeRate: number
212
- mode?: 0 | 1 | boolean // 1 byte
213
- isBorrow?: boolean
214
- tokenAddress?: string // 20 bytes
215
- borrowAmount?: number // 28 bytes
216
- }) {
217
- if (!this.currentAccount || !this.currentAccountType || !this.publicKey || !this.privateKey) {
218
- throw new Error("account not initialized")
219
- }
220
-
221
- let dataHex = TeleportDaoPayment.getLendingOpReturnData({
222
- chainId,
223
- appId,
224
- recipientAddress,
225
- percentageFee,
226
- mode,
227
- isBorrow,
228
- tokenAddress,
229
- borrowAmount,
230
- })
231
- let opTarget = this.transactionBuilder.getOpReturnTarget(dataHex)
232
-
233
- let extendedUtxo = await this.transactionBuilder.getExtendedUtxo({
234
- address: this.currentAccount,
235
- addressType: this.currentAccountType,
236
- publicKey: this.publicKey.toString("hex"),
237
- })
238
- let unsignedTx = await this.transactionBuilder.processUnsignedTransaction({
239
- extendedUtxo,
240
- targets: [
241
- {
242
- address: lockerAddress,
243
- value: amount,
244
- },
245
- opTarget,
246
- ],
247
- changeAddress: this.currentAccount,
248
- feeRate: staticFeeRate,
249
- fullAmount: false,
250
- })
251
- let signedPsbt = await this.signer.signPsbt(unsignedTx, this.privateKey)
252
- let signedTx = this.signer.finalizePsbts([signedPsbt])
253
- let txId = await this.transactionBuilder.sendTx(signedTx)
254
- return txId
255
- }
256
-
257
- static getTransferOpReturnData({
258
- chainId,
259
- appId,
260
- recipientAddress, // 20 bytes
261
- percentageFee, // 2 bytes in satoshi
262
- speed = 0, // 1 byte
263
- isExchange = false,
264
- exchangeTokenAddress = "0x0000000000000000000000000000000000000000", // 20 bytes
265
- outputAmount = 0, // 28 bytes
266
- deadline, // 4 bytes
267
- isFixedToken = false, // 1 byte
268
- }: {
269
- chainId: number
270
- appId: number
271
- recipientAddress: string // 20 bytes
272
- percentageFee: number // 2 bytes in satoshi
273
- deadline: number // 4 bytes
274
- speed?: number | boolean // 1 byte
275
- isExchange?: boolean
276
- exchangeTokenAddress?: string // 20 bytes
277
- outputAmount?: number // 28 bytes
278
- isFixedToken?: boolean // 1 byte
279
- }) {
280
- let chainIdHex = Number(chainId).toString(16).padStart(2, "0")
281
- let appIdHex = Number(appId).toString(16).padStart(4, "0")
282
- let recipientAddressHex = recipientAddress.replace("0x", "").toLowerCase().padStart(40, "0")
283
- let percentageFeeHex = Number((percentageFee * 100).toFixed(0))
284
- .toString(16)
285
- .padStart(4, "0")
286
- let speedHex = speed ? "01" : "00"
287
- let dataHex = chainIdHex + appIdHex + recipientAddressHex + percentageFeeHex + speedHex
288
-
289
- if (!isExchange) {
290
- if (dataHex.length !== 26 * 2) throw new Error("invalid data length")
291
- return dataHex
292
- }
293
-
294
- let exchangeTokenAddressHex = exchangeTokenAddress
295
- .replace("0x", "")
296
- .toLowerCase()
297
- .padStart(40, "0")
298
- let outputAmountHex = Number(outputAmount).toString(16).padStart(56, "0")
299
- let deadlineHex = Number(deadline).toString(16).padStart(8, "0")
300
- let isFixedTokenHex = isFixedToken ? "01" : "00"
301
-
302
- dataHex = dataHex + exchangeTokenAddressHex + outputAmountHex + deadlineHex + isFixedTokenHex
303
- if (dataHex.length !== 79 * 2) throw new Error("invalid data length")
304
- return dataHex
305
- }
306
-
307
- static getLendingOpReturnData({
308
- chainId, // 1 byte
309
- appId, // 1 byte
310
- recipientAddress, // 20 byte
311
- percentageFee, // 2 byte
312
- mode, // 1 byte
313
- // ------
314
- isBorrow = false,
315
- tokenAddress = "0x0000000000000000000000000000000000000000", // 20 bytes
316
- borrowAmount = 0, // 28 bytes
317
- }: {
318
- chainId: number
319
- appId: number
320
- recipientAddress: string // 20 bytes
321
- percentageFee: number // 2 bytes in satoshi
322
- mode?: 0 | 1 | boolean // 1 byte
323
- isBorrow?: boolean
324
- tokenAddress?: string // 20 bytes
325
- borrowAmount?: number // 28 bytes
326
- }) {
327
- let chainIdHex = Number(chainId).toString(16).padStart(2, "0")
328
- let appIdHex = Number(appId).toString(16).padStart(4, "0")
329
- let recipientAddressHex = recipientAddress.replace("0x", "").toLowerCase().padStart(40, "0")
330
- let percentageFeeHex = Number((percentageFee * 100).toFixed(0))
331
- .toString(16)
332
- .padStart(4, "0")
333
- let modeHex = Number(mode).toString(16).padStart(2, "0")
334
- let dataHex = chainIdHex + appIdHex + recipientAddressHex + percentageFeeHex + modeHex
335
- if (!isBorrow) {
336
- if (dataHex.length !== 26 * 2) throw new Error("invalid data length")
337
- return dataHex
338
- }
339
-
340
- let tokenAddressHex = tokenAddress.replace("0x", "").toLowerCase().padStart(40, "0")
341
- let borrowAmountHex = Number(borrowAmount).toString(16).padStart(56, "0")
342
- dataHex = dataHex + tokenAddressHex + borrowAmountHex
343
- if (dataHex.length !== 74 * 2) throw new Error("invalid data length")
344
- return dataHex
345
- }
346
- }
347
- export default TeleportDaoPayment