@atomiqlabs/base 10.0.0-dev.8 → 10.0.0-dev.9

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 (130) hide show
  1. package/LICENSE +201 -201
  2. package/dist/btc/BitcoinNetwork.d.ts +6 -6
  3. package/dist/btc/BitcoinNetwork.js +10 -10
  4. package/dist/btc/rpc/BitcoinRpc.d.ts +68 -68
  5. package/dist/btc/rpc/BitcoinRpc.js +2 -2
  6. package/dist/btcrelay/BtcRelay.d.ts +61 -61
  7. package/dist/btcrelay/BtcRelay.js +2 -2
  8. package/dist/btcrelay/synchronizer/RelaySynchronizer.d.ts +18 -18
  9. package/dist/btcrelay/synchronizer/RelaySynchronizer.js +2 -2
  10. package/dist/btcrelay/types/BtcBlock.d.ts +13 -13
  11. package/dist/btcrelay/types/BtcBlock.js +2 -2
  12. package/dist/btcrelay/types/BtcHeader.d.ts +10 -10
  13. package/dist/btcrelay/types/BtcHeader.js +2 -2
  14. package/dist/btcrelay/types/BtcStoredHeader.d.ts +11 -11
  15. package/dist/btcrelay/types/BtcStoredHeader.js +2 -2
  16. package/dist/btcrelay/utils/StatePredictorUtils.d.ts +11 -11
  17. package/dist/btcrelay/utils/StatePredictorUtils.js +80 -80
  18. package/dist/chains/ChainData.d.ts +31 -31
  19. package/dist/chains/ChainData.js +2 -2
  20. package/dist/chains/ChainInterface.d.ts +110 -110
  21. package/dist/chains/ChainInterface.js +2 -2
  22. package/dist/chains/ChainType.d.ts +23 -23
  23. package/dist/chains/ChainType.js +2 -2
  24. package/dist/errors/CannotInitializeATAError.d.ts +3 -3
  25. package/dist/errors/CannotInitializeATAError.js +11 -11
  26. package/dist/errors/SignatureVerificationError.d.ts +3 -3
  27. package/dist/errors/SignatureVerificationError.js +11 -11
  28. package/dist/errors/SwapDataVerificationError.d.ts +3 -3
  29. package/dist/errors/SwapDataVerificationError.js +11 -11
  30. package/dist/events/ChainEvents.d.ts +9 -9
  31. package/dist/events/ChainEvents.js +2 -2
  32. package/dist/events/types/ChainEvent.d.ts +7 -7
  33. package/dist/events/types/ChainEvent.js +6 -6
  34. package/dist/events/types/spv_vault/SpvVaultClaimEvent.d.ts +12 -12
  35. package/dist/events/types/spv_vault/SpvVaultClaimEvent.js +18 -18
  36. package/dist/events/types/spv_vault/SpvVaultCloseEvent.d.ts +7 -7
  37. package/dist/events/types/spv_vault/SpvVaultCloseEvent.js +13 -13
  38. package/dist/events/types/spv_vault/SpvVaultDepositEvent.d.ts +7 -7
  39. package/dist/events/types/spv_vault/SpvVaultDepositEvent.js +13 -13
  40. package/dist/events/types/spv_vault/SpvVaultEvent.d.ts +15 -15
  41. package/dist/events/types/spv_vault/SpvVaultEvent.js +20 -20
  42. package/dist/events/types/spv_vault/SpvVaultFrontEvent.d.ts +10 -10
  43. package/dist/events/types/spv_vault/SpvVaultFrontEvent.js +16 -16
  44. package/dist/events/types/spv_vault/SpvVaultOpenEvent.d.ts +7 -7
  45. package/dist/events/types/spv_vault/SpvVaultOpenEvent.js +13 -13
  46. package/dist/events/types/swap/ClaimEvent.d.ts +7 -7
  47. package/dist/events/types/swap/ClaimEvent.js +11 -11
  48. package/dist/events/types/swap/InitializeEvent.d.ts +9 -9
  49. package/dist/events/types/swap/InitializeEvent.js +12 -12
  50. package/dist/events/types/swap/RefundEvent.d.ts +5 -5
  51. package/dist/events/types/swap/RefundEvent.js +7 -7
  52. package/dist/events/types/swap/SwapEvent.d.ts +12 -12
  53. package/dist/events/types/swap/SwapEvent.js +17 -17
  54. package/dist/index.d.ts +41 -41
  55. package/dist/index.js +57 -57
  56. package/dist/lockable/Lockable.d.ts +6 -6
  57. package/dist/lockable/Lockable.js +28 -28
  58. package/dist/messaging/EventMessaging.d.ts +8 -8
  59. package/dist/messaging/EventMessaging.js +2 -2
  60. package/dist/messaging/Messenger.d.ts +8 -8
  61. package/dist/messaging/Messenger.js +2 -2
  62. package/dist/messaging/messages/Message.d.ts +11 -11
  63. package/dist/messaging/messages/Message.js +22 -22
  64. package/dist/messaging/messages/SwapClaimWitnessMessage.d.ts +10 -10
  65. package/dist/messaging/messages/SwapClaimWitnessMessage.js +28 -28
  66. package/dist/spv_swap/SpvVaultContract.d.ts +199 -199
  67. package/dist/spv_swap/SpvVaultContract.js +2 -2
  68. package/dist/spv_swap/SpvVaultData.d.ts +35 -35
  69. package/dist/spv_swap/SpvVaultData.js +37 -37
  70. package/dist/spv_swap/SpvWithdrawalState.d.ts +31 -31
  71. package/dist/spv_swap/SpvWithdrawalState.js +10 -10
  72. package/dist/spv_swap/SpvWithdrawalTransactionData.d.ts +43 -43
  73. package/dist/spv_swap/SpvWithdrawalTransactionData.js +143 -143
  74. package/dist/storage/IStorageManager.d.ts +15 -15
  75. package/dist/storage/IStorageManager.js +2 -2
  76. package/dist/storage/StorageObject.d.ts +3 -3
  77. package/dist/storage/StorageObject.js +2 -2
  78. package/dist/swaps/ChainSwapType.d.ts +6 -6
  79. package/dist/swaps/ChainSwapType.js +10 -10
  80. package/dist/swaps/SwapCommitState.d.ts +39 -38
  81. package/dist/swaps/SwapCommitState.js +11 -11
  82. package/dist/swaps/SwapContract.d.ts +468 -468
  83. package/dist/swaps/SwapContract.js +2 -2
  84. package/dist/swaps/SwapData.d.ts +37 -37
  85. package/dist/swaps/SwapData.js +17 -17
  86. package/dist/utils/BigIntBufferUtils.d.ts +6 -6
  87. package/dist/utils/BigIntBufferUtils.js +31 -31
  88. package/package.json +31 -31
  89. package/src/btc/BitcoinNetwork.ts +6 -6
  90. package/src/btc/rpc/BitcoinRpc.ts +77 -77
  91. package/src/btcrelay/BtcRelay.ts +70 -70
  92. package/src/btcrelay/synchronizer/RelaySynchronizer.ts +17 -17
  93. package/src/btcrelay/types/BtcBlock.ts +15 -15
  94. package/src/btcrelay/types/BtcHeader.ts +11 -11
  95. package/src/btcrelay/types/BtcStoredHeader.ts +12 -12
  96. package/src/btcrelay/utils/StatePredictorUtils.ts +108 -108
  97. package/src/chains/ChainData.ts +40 -40
  98. package/src/chains/ChainInterface.ts +132 -132
  99. package/src/chains/ChainType.ts +38 -38
  100. package/src/errors/CannotInitializeATAError.ts +11 -11
  101. package/src/errors/SignatureVerificationError.ts +11 -11
  102. package/src/errors/SwapDataVerificationError.ts +11 -11
  103. package/src/events/ChainEvents.ts +13 -13
  104. package/src/events/types/ChainEvent.ts +10 -10
  105. package/src/events/types/spv_vault/SpvVaultClaimEvent.ts +31 -31
  106. package/src/events/types/spv_vault/SpvVaultCloseEvent.ts +17 -17
  107. package/src/events/types/spv_vault/SpvVaultDepositEvent.ts +17 -17
  108. package/src/events/types/spv_vault/SpvVaultEvent.ts +25 -25
  109. package/src/events/types/spv_vault/SpvVaultFrontEvent.ts +27 -27
  110. package/src/events/types/spv_vault/SpvVaultOpenEvent.ts +16 -16
  111. package/src/events/types/swap/ClaimEvent.ts +15 -15
  112. package/src/events/types/swap/InitializeEvent.ts +18 -18
  113. package/src/events/types/swap/RefundEvent.ts +6 -6
  114. package/src/events/types/swap/SwapEvent.ts +21 -21
  115. package/src/index.ts +50 -50
  116. package/src/lockable/Lockable.ts +30 -30
  117. package/src/messaging/Messenger.ts +11 -11
  118. package/src/messaging/messages/Message.ts +25 -25
  119. package/src/messaging/messages/SwapClaimWitnessMessage.ts +34 -34
  120. package/src/spv_swap/SpvVaultContract.ts +230 -230
  121. package/src/spv_swap/SpvVaultData.ts +70 -70
  122. package/src/spv_swap/SpvWithdrawalState.ts +40 -40
  123. package/src/spv_swap/SpvWithdrawalTransactionData.ts +169 -169
  124. package/src/storage/IStorageManager.ts +16 -16
  125. package/src/storage/StorageObject.ts +6 -6
  126. package/src/swaps/ChainSwapType.ts +6 -6
  127. package/src/swaps/SwapCommitState.ts +40 -39
  128. package/src/swaps/SwapContract.ts +557 -557
  129. package/src/swaps/SwapData.ts +69 -69
  130. package/src/utils/BigIntBufferUtils.ts +31 -31
@@ -1,468 +1,468 @@
1
- /// <reference types="node" />
2
- import { SwapData } from "./SwapData";
3
- import { BtcStoredHeader } from "../btcrelay/types/BtcStoredHeader";
4
- import { ChainSwapType } from "./ChainSwapType";
5
- import { RelaySynchronizer } from "../btcrelay/synchronizer/RelaySynchronizer";
6
- import { Buffer } from "buffer";
7
- import { AbstractSigner, TransactionConfirmationOptions } from "../chains/ChainInterface";
8
- import { SwapCommitState } from "./SwapCommitState";
9
- export type IntermediaryReputationType = {
10
- [key in ChainSwapType]: {
11
- successVolume: bigint;
12
- successCount: bigint;
13
- failVolume: bigint;
14
- failCount: bigint;
15
- coopCloseVolume: bigint;
16
- coopCloseCount: bigint;
17
- };
18
- };
19
- export type SignatureData = {
20
- prefix: string;
21
- timeout: string;
22
- signature: string;
23
- };
24
- export type BitcoinTransactionData = {
25
- blockhash: string;
26
- confirmations: number;
27
- txid: string;
28
- hex: string;
29
- height: number;
30
- };
31
- export interface SwapContract<T extends SwapData = SwapData, TX = any, PreFetchData = any, PreFetchVerification = any, Signer extends AbstractSigner = AbstractSigner, ChainId extends string = string> {
32
- readonly chainId: ChainId;
33
- readonly claimWithSecretTimeout: number;
34
- readonly claimWithTxDataTimeout: number;
35
- readonly refundTimeout: number;
36
- readonly supportsInitWithoutClaimer?: boolean;
37
- /**
38
- * Initializes the swap contract
39
- */
40
- start(): Promise<void>;
41
- /**
42
- * Signs & sends transactions for initializing a non-payIn swap (BTC -> SC)
43
- *
44
- * @param signer Signer to use for the transaction (must match claimer in swap data)
45
- * @param swapData Swap to init
46
- * @param signature Signature data from the offerer
47
- * @param skipChecks Whether to skip verification of the signature & checking if the swap is already committed
48
- * @param txOptions Transaction options
49
- */
50
- init(signer: Signer, swapData: T, signature: SignatureData, skipChecks?: boolean, txOptions?: TransactionConfirmationOptions): Promise<string>;
51
- /**
52
- * Returns the unsigned transactions required for initializing a non-payIn swap (BTC -> SC)
53
- *
54
- * @param sender Transaction sender address, must be either offerer or claimer
55
- * @param swapData Swap to init
56
- * @param signature Signature data from the offerer
57
- * @param skipChecks Whether to skip verification of the signature & checking if the swap is already committed
58
- * @param feeRate Fee rate to use for the transaction
59
- */
60
- txsInit(sender: string, swapData: T, signature: SignatureData, skipChecks?: boolean, feeRate?: string): Promise<TX[]>;
61
- /**
62
- * Signs & sends transactions required for claiming an HTLC swap
63
- *
64
- * @param signer Signer for which the transaction should be created (doesn't need to match the claimer)
65
- * @param swapData Swap to claim
66
- * @param secret Secret pre-image that hashes to the swap hash
67
- * @param checkExpiry Whether to check expiration of the swap before executing transactions
68
- * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
69
- * @param txOptions Transaction options
70
- */
71
- claimWithSecret(signer: Signer, swapData: T, secret: string, checkExpiry?: boolean, initAta?: boolean, txOptions?: TransactionConfirmationOptions): Promise<string>;
72
- /**
73
- * Returns the unsigned transactions required for claiming an HTLC swap
74
- *
75
- * @param signer Signer for which the transaction should be created (doesn't need to match the claimer)
76
- * @param swapData Swap to claim
77
- * @param secret Secret pre-image that hashes to the swap hash
78
- * @param checkExpiry Whether to check expiration of the swap before returning the transactions
79
- * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
80
- * @param feeRate Fee rate to use for the transactions
81
- * @param skipAtaCheck Whether to skip checking if token account exists
82
- */
83
- txsClaimWithSecret(signer: string | Signer, swapData: T, secret: string, checkExpiry?: boolean, initAta?: boolean, feeRate?: string, skipAtaCheck?: boolean): Promise<TX[]>;
84
- /**
85
- * Signs & sends transactions required for claiming an on-chain PTLC (proof-time locked contract) swap
86
- *
87
- * @param signer Signer for which the transaction should be created (doesn't need to match the claimer)
88
- * @param swapData Swap to claim
89
- * @param tx Bitcoin transaction containing the required output
90
- * @param requiredConfirmations Required confirmations for the escrow to be claimed
91
- * @param vout Bitcoin tx's output index of the required output
92
- * @param storedHeader Optional already retrieved stored header to use for proving
93
- * @param synchronizer Optiona synchronizer to be used if BTC relay contract is not synced up to the required blockheight
94
- * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
95
- * @param txOptions Transaction options
96
- */
97
- claimWithTxData(signer: Signer, swapData: T, tx: BitcoinTransactionData, requiredConfirmations: number, vout: number, storedHeader?: BtcStoredHeader<any>, synchronizer?: RelaySynchronizer<any, TX, any>, initAta?: boolean, txOptions?: TransactionConfirmationOptions): Promise<string>;
98
- /**
99
- * Returns the unsigned transactions required for claiming an on-chain PTLC (proof-time locked contract) swap
100
- *
101
- * @param signer Signer for which the transaction should be created (doesn't need to match the claimer)
102
- * @param swapData Swap to claim
103
- * @param tx Bitcoin transaction containing the required output
104
- * @param requiredConfirmations Required confirmations for the escrow to be claimed
105
- * @param vout Bitcoin tx's output index of the required output
106
- * @param storedHeader Optional already retrieved stored header to use for proving
107
- * @param synchronizer Optiona synchronizer to be used if BTC relay contract is not synced up to the required blockheight
108
- * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
109
- * @param feeRate Fee rate to use for the transactions
110
- */
111
- txsClaimWithTxData(signer: string | Signer, swapData: T, tx: BitcoinTransactionData, requiredConfirmations: number, vout: number, storedHeader?: BtcStoredHeader<any>, synchronizer?: RelaySynchronizer<any, TX, any>, initAta?: boolean, feeRate?: string): Promise<TX[]>;
112
- /**
113
- * Signs & sends transactions for refunding a timed out swap
114
- *
115
- * @param signer Signer to use for the transaction (must match offerer in swap data)
116
- * @param swapData Swap to refund
117
- * @param check Whether to check if the swap contract still exists on-chain
118
- * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
119
- * @param txOptions Transaction options
120
- */
121
- refund(signer: Signer, swapData: T, check?: boolean, initAta?: boolean, txOptions?: TransactionConfirmationOptions): Promise<string>;
122
- /**
123
- * Returns the transactions for refunding a timed out swap
124
- *
125
- * @param signer Signer of the refund transaction
126
- * @param swapData Swap to refund
127
- * @param check Whether to check if the swap contract still exists on-chain
128
- * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
129
- * @param feeRate Fee rate to use for the transactions
130
- */
131
- txsRefund(signer: string, swapData: T, check?: boolean, initAta?: boolean, feeRate?: string): Promise<TX[]>;
132
- /**
133
- * Signs & sends transactions for refunding a swap with a valid refund signature from the claimer
134
- *
135
- * @param signer Signer to use for the transaction (must match offerer in swap data)
136
- * @param swapData Swap to refund
137
- * @param signature Refund signature received from the claimer
138
- * @param check Whether to check if the swap contract still exists on-chain
139
- * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
140
- * @param txOptions Transaction options
141
- */
142
- refundWithAuthorization(signer: Signer, swapData: T, signature: SignatureData, check?: boolean, initAta?: boolean, txOptions?: TransactionConfirmationOptions): Promise<string>;
143
- /**
144
- * Returns the transactions for refunding a swap with a valid refund signature from the claimer
145
- *
146
- * @param signer Signer of the refund transaction
147
- * @param swapData Swap to refund
148
- * @param signature Refund signature received from the claimer
149
- * @param check Whether to check if the swap contract still exists on-chain
150
- * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
151
- * @param feeRate Fee rate to use for the transactions
152
- */
153
- txsRefundWithAuthorization(signer: string, swapData: T, signature: SignatureData, check?: boolean, initAta?: boolean, feeRate?: string): Promise<TX[]>;
154
- /**
155
- * Signs & sends transactions for initializing and instantly (upon init confirmation) claiming the HTLC, used for BTC-LN -> SC swaps
156
- *
157
- * @param signer Signer to use for the transaction (must match claimer in swap data)
158
- * @param swapData Swap to process
159
- * @param signature Signature data from the offerer
160
- * @param secret Secret pre-image that hashes to the swap hash
161
- * @param skipChecks Whether to skip verification of the signature & checking if the swap is already committed
162
- * @param txOptions Transaction options
163
- */
164
- initAndClaimWithSecret?(signer: Signer, swapData: T, signature: SignatureData, secret: string, skipChecks?: boolean, txOptions?: TransactionConfirmationOptions): Promise<string[]>;
165
- /**
166
- * Checks whether a swap is already expired, swap expires a bit sooner for the claimer & a bit later for offerer, this
167
- * is used to account for possible on-chain time skew
168
- *
169
- * @param signer Signer to use for checking the expiry
170
- * @param swapData Swap to check
171
- */
172
- isExpired(signer: string, swapData: T): Promise<boolean>;
173
- /**
174
- * Checks whether a swap is claimable for the signer, i.e. it is not expired yet and is committed on-chain
175
- *
176
- * @param signer
177
- * @param swapData
178
- */
179
- isClaimable(signer: string, swapData: T): Promise<boolean>;
180
- /**
181
- * Checks whether a given swap is committed on chain (initialized)
182
- *
183
- * @param swapData
184
- */
185
- isCommited(swapData: T): Promise<boolean>;
186
- /**
187
- * Returns the full status of the swap, expiry is handled by the isExpired function so also requires a signer/sender
188
- *
189
- * @param signer
190
- * @param swapData
191
- */
192
- getCommitStatus(signer: string, swapData: T): Promise<SwapCommitState>;
193
- /**
194
- * Checks whether a given swap is refundable by us, i.e. it is already expired, we are offerer & swap is committed on-chain
195
- *
196
- * @param signer
197
- * @param swapData
198
- */
199
- isRequestRefundable(signer: string, swapData: T): Promise<boolean>;
200
- /**
201
- * Pre-fetches data required for creating init signature
202
- */
203
- preFetchBlockDataForSignatures?(): Promise<PreFetchData>;
204
- /**
205
- * Pre-fetches data required for init signature verification
206
- * @param data
207
- */
208
- preFetchForInitSignatureVerification?(data: PreFetchData): Promise<PreFetchVerification>;
209
- /**
210
- * Generates the initialization signature
211
- *
212
- * @param signer Signer to use for signing the message
213
- * @param swapData Swap to sign
214
- * @param authorizationTimeout Timeout of the authorization
215
- * @param preFetchedBlockData Optional pre-fetched data required for creating the signature
216
- * @param feeRate Optional fee rate to use for the authorization
217
- */
218
- getInitSignature(signer: Signer, swapData: T, authorizationTimeout: number, preFetchedBlockData?: PreFetchData, feeRate?: string): Promise<SignatureData>;
219
- /**
220
- * Checks whether a signature is a valid initialization signature for a given swap
221
- *
222
- * @param sender Address of the sender of the transaction (must be either offerer or claimer)
223
- * @param swapData Swap to initialize
224
- * @param signature Signature data
225
- * @param feeRate Fee rate used for the authorization
226
- * @param preFetchedVerificationData Optional pre-fetched data required for signature validation
227
- * @returns {Buffer | null} The message being signed if valid or null if invalid signature
228
- */
229
- isValidInitAuthorization(sender: string, swapData: T, signature: SignatureData, feeRate?: string, preFetchedVerificationData?: PreFetchVerification): Promise<Buffer | null>;
230
- /**
231
- * Returns the expiry timestamp (UNIX milliseconds) of the authorization
232
- *
233
- * @param swapData Swap
234
- * @param signature Signature data
235
- * @param preFetchedVerificationData Optional pre-fetched data required for signature validation
236
- */
237
- getInitAuthorizationExpiry(swapData: T, signature: SignatureData, preFetchedVerificationData?: PreFetchVerification): Promise<number>;
238
- /**
239
- * Checks whether a given init signature is already expired
240
- *
241
- * @param swapData Swap
242
- * @param signature Signature data
243
- */
244
- isInitAuthorizationExpired(swapData: T, signature: SignatureData): Promise<boolean>;
245
- /**
246
- * Generates the refund signature for a given swap allowing the offerer to refund before expiration
247
- *
248
- * @param signer Signer to use for signing the message (must be the same as offerer in swap data)
249
- * @param swapData Swap to refund
250
- * @param authorizationTimeout Timeout of the provided refund authorization
251
- */
252
- getRefundSignature(signer: Signer, swapData: T, authorizationTimeout: number): Promise<SignatureData>;
253
- /**
254
- * Checks whether a given refund signature is valid
255
- *
256
- * @param swapData Swap to refund
257
- * @param signature Signature received from the claimer
258
- */
259
- isValidRefundAuthorization(swapData: T, signature: SignatureData): Promise<Buffer | null>;
260
- /**
261
- * Signs the given data with the provided signer
262
- *
263
- * @param signer Signer to sign the message
264
- * @param data Data to sign
265
- */
266
- getDataSignature(signer: Signer, data: Buffer): Promise<string>;
267
- /**
268
- * Checks whether a provided data is signature is valid
269
- *
270
- * @param data Data to sign
271
- * @param signature Signature
272
- * @param publicKey Public key of the signer
273
- */
274
- isValidDataSignature(data: Buffer, signature: string, publicKey: string): Promise<boolean>;
275
- /**
276
- * Returns the token balance of a given signer's address
277
- *
278
- * @param signer Address to check the balance of
279
- * @param token Token
280
- * @param inContract Whether we are checking the liquidity deposited into the LP vault or just on-chain balance
281
- */
282
- getBalance(signer: string, token: string, inContract: boolean): Promise<bigint>;
283
- /**
284
- * Create a swap data for this given chain
285
- *
286
- * @param type Type of the swap
287
- * @param offerer Offerer address
288
- * @param claimer Claimer addres
289
- * @param token Token to use for the swap
290
- * @param amount Amount of tokens for the swap
291
- * @param paymentHash Payment hash identifying the swap
292
- * @param sequence Swap sequence uniquelly defining this swap
293
- * @param expiry Expiration of the swap
294
- * @param payIn Whether the swap is payIn (offerer paying to the contract, or not payIn offerer using funds in his LP vault)
295
- * @param payOut Whether the swap is payOut (claimer getting the funds to his on-chain address, or no payOut claimer
296
- * getting his funds into his LP vault)
297
- * @param securityDeposit Security deposit for the swap paid by the claimer (options premium)
298
- * @param claimerBounty Bounty for the claimer of the swap (used for watchtowers)
299
- * @param depositToken Token to be used for security deposit and claimer bounty
300
- */
301
- createSwapData(type: ChainSwapType, offerer: string, claimer: string, token: string, amount: bigint, paymentHash: string, sequence: bigint, expiry: bigint, payIn: boolean, payOut: boolean, securityDeposit: bigint, claimerBounty: bigint, depositToken?: string): Promise<T>;
302
- /**
303
- * Returns intermediary's reputation for a given token swaps
304
- *
305
- * @param address
306
- * @param token
307
- */
308
- getIntermediaryReputation(address: string, token: string): Promise<IntermediaryReputationType>;
309
- /**
310
- * Returns the fee in native token base units to commit (initiate) the swap
311
- *
312
- * @param signer
313
- * @param swapData Swap to initiate
314
- * @param feeRate Optional fee rate (fetched on-demand if not provided)
315
- */
316
- getCommitFee(signer: string, swapData: T, feeRate?: string): Promise<bigint>;
317
- /**
318
- * Returns raw fee (not including any account deposits we might need) for initiating the swap
319
- *
320
- * @param signer
321
- * @param swapData Swap to initiate
322
- * @param feeRate Optional fee rate (fetched on-demand if not provided)
323
- */
324
- getRawCommitFee?(signer: string, swapData: T, feeRate?: string): Promise<bigint>;
325
- /**
326
- * Returns the fee in native token base units to claim the swap
327
- *
328
- * @param signer Signer claiming the swap
329
- * @param swapData Swap to claim
330
- * @param feeRate Optional fee rate (fetched on-demand if not provided)
331
- */
332
- getClaimFee(signer: string, swapData: T, feeRate?: string): Promise<bigint>;
333
- /**
334
- * Returns raw fee (not including any refunds we might get that would make the getClaimFee negative) for claiming the swap
335
- *
336
- * @param signer Signer claiming the swap
337
- * @param swapData Swap to claim
338
- * @param feeRate Optional fee rate (fetched on-demand if not provided)
339
- */
340
- getRawClaimFee?(signer: string, swapData: T, feeRate?: string): Promise<bigint>;
341
- /**
342
- * Returns the fee in native token base units to refund the swap
343
- *
344
- * @param signer
345
- * @param swapData Swap to refund
346
- * @param feeRate Optional fee rate (fetched on-demand if not provided)
347
- */
348
- getRefundFee(signer: string, swapData: T, feeRate?: string): Promise<bigint>;
349
- /**
350
- * Returns raw fee (not including any refunds we might get that would make the getRefundFee negative) for claiming the swap
351
- *
352
- * @param signer
353
- * @param swapData Swap to claim
354
- * @param feeRate Optional fee rate (fetched on-demand if not provided)
355
- */
356
- getRawRefundFee?(signer: string, swapData: T, feeRate?: string): Promise<bigint>;
357
- /**
358
- * Returns the fee rate for committing (initializing) a payIn swap
359
- *
360
- * @param offerer Offerer of the swap
361
- * @param claimer Claimer of the swap
362
- * @param token Token to be swapped
363
- * @param paymentHash Optional payment hash
364
- */
365
- getInitPayInFeeRate(offerer: string, claimer: string, token: string, paymentHash?: string): Promise<string>;
366
- /**
367
- * Returns the fee rate for committing (initializing) a non-payIn swap
368
- *
369
- * @param offerer Offerer of the swap
370
- * @param claimer Claimer of the swap
371
- * @param token Token to be swapped
372
- * @param paymentHash Optional payment hash
373
- */
374
- getInitFeeRate(offerer: string, claimer: string, token: string, paymentHash?: string): Promise<string>;
375
- /**
376
- * Returns the fee rate for refunding a swap
377
- *
378
- * @param swapData Swap to refund
379
- */
380
- getRefundFeeRate(swapData: T): Promise<string>;
381
- /**
382
- * Returns the fee rate for claiming a swap as a specific signer
383
- *
384
- * @param signer Signer claiming the swap
385
- * @param swapData Swap to claim
386
- */
387
- getClaimFeeRate(signer: string, swapData: T): Promise<string>;
388
- getExtraData(outputScript: Buffer, amount: bigint, confirmations: number, nonce?: bigint): Buffer;
389
- /**
390
- * Compute the claim hash for a given transaction output, either nonced or just output locked
391
- *
392
- * @param outputScript Bitcoin output locking script
393
- * @param amount Amount of sats in the output
394
- * @param confirmations Required number of confirmations for the swap to be claimable
395
- * @param nonce Nonce to be used as replay protection
396
- */
397
- getHashForOnchain(outputScript: Buffer, amount: bigint, confirmations: number, nonce?: bigint): Buffer;
398
- /**
399
- * Compute the claim hash for a given transaction id
400
- *
401
- * @param txId Bitcoin transaction ID
402
- * @param confirmations Required number of confirmations for the swap to be claimable
403
- */
404
- getHashForTxId(txId: string, confirmations: number): Buffer;
405
- /**
406
- * Compute the claim hash for an HTLC swap with a given swap hash
407
- *
408
- * @param swapHash
409
- */
410
- getHashForHtlc(swapHash: Buffer): Buffer;
411
- /**
412
- * Withdraws funds from the trading LP vault
413
- *
414
- * @param signer Signer to sign the withdrawal with
415
- * @param token Token to withdraw
416
- * @param amount Amount of the token to withdraw
417
- * @param txOptions Transaction options
418
- */
419
- withdraw(signer: Signer, token: string, amount: bigint, txOptions?: TransactionConfirmationOptions): Promise<string>;
420
- /**
421
- * Returns transactions required for signer to withdraw funds from the trading LP vault
422
- *
423
- * @param signer Owner of the funds
424
- * @param token Token to withdraw
425
- * @param amount Amount of the token to withdraw
426
- * @param feeRate Optional fee rate to use for the transaction (fetched on-demand if not provided)
427
- */
428
- txsWithdraw(signer: string, token: string, amount: bigint, feeRate?: string): Promise<TX[]>;
429
- /**
430
- * Deposits funds to the trading LP vault
431
- *
432
- * @param signer Signer to sign the deposit with
433
- * @param token Token to deposit
434
- * @param amount Amount of the token to deposit
435
- * @param txOptions Transaction options
436
- */
437
- deposit(signer: Signer, token: string, amount: bigint, txOptions?: TransactionConfirmationOptions): Promise<string>;
438
- /**
439
- * Returns transactions required for signer to deposit funds to the trading LP vault
440
- *
441
- * @param signer Owner of the funds
442
- * @param token Token to deposit
443
- * @param amount Amount of the token to deposit
444
- * @param feeRate Optional fee rate to use for the transaction (fetched on-demand if not provided)
445
- */
446
- txsDeposit(signer: string, token: string, amount: bigint, feeRate?: string): Promise<TX[]>;
447
- /**
448
- * Returns the amount of deposits (in native token) that we can claim back (this is useful for SVM chains with the PDAs
449
- * requiring you to put some deposit in order to store data)
450
- *
451
- * @param signer Signer to check the claimable deposits for
452
- */
453
- getClaimableDeposits?(signer: string): Promise<{
454
- count: number;
455
- totalValue: bigint;
456
- }>;
457
- /**
458
- * Claims the funds from claimable deposits
459
- *
460
- * @param signer Owner of the deposits, transaction signer
461
- * @param txOptions Transaction options
462
- */
463
- claimDeposits?(signer: Signer, txOptions: TransactionConfirmationOptions): Promise<{
464
- txIds: string[];
465
- count: number;
466
- totalValue: bigint;
467
- }>;
468
- }
1
+ /// <reference types="node" />
2
+ import { SwapData } from "./SwapData";
3
+ import { BtcStoredHeader } from "../btcrelay/types/BtcStoredHeader";
4
+ import { ChainSwapType } from "./ChainSwapType";
5
+ import { RelaySynchronizer } from "../btcrelay/synchronizer/RelaySynchronizer";
6
+ import { Buffer } from "buffer";
7
+ import { AbstractSigner, TransactionConfirmationOptions } from "../chains/ChainInterface";
8
+ import { SwapCommitState } from "./SwapCommitState";
9
+ export type IntermediaryReputationType = {
10
+ [key in ChainSwapType]: {
11
+ successVolume: bigint;
12
+ successCount: bigint;
13
+ failVolume: bigint;
14
+ failCount: bigint;
15
+ coopCloseVolume: bigint;
16
+ coopCloseCount: bigint;
17
+ };
18
+ };
19
+ export type SignatureData = {
20
+ prefix: string;
21
+ timeout: string;
22
+ signature: string;
23
+ };
24
+ export type BitcoinTransactionData = {
25
+ blockhash: string;
26
+ confirmations: number;
27
+ txid: string;
28
+ hex: string;
29
+ height: number;
30
+ };
31
+ export interface SwapContract<T extends SwapData = SwapData, TX = any, PreFetchData = any, PreFetchVerification = any, Signer extends AbstractSigner = AbstractSigner, ChainId extends string = string> {
32
+ readonly chainId: ChainId;
33
+ readonly claimWithSecretTimeout: number;
34
+ readonly claimWithTxDataTimeout: number;
35
+ readonly refundTimeout: number;
36
+ readonly supportsInitWithoutClaimer?: boolean;
37
+ /**
38
+ * Initializes the swap contract
39
+ */
40
+ start(): Promise<void>;
41
+ /**
42
+ * Signs & sends transactions for initializing a non-payIn swap (BTC -> SC)
43
+ *
44
+ * @param signer Signer to use for the transaction (must match claimer in swap data)
45
+ * @param swapData Swap to init
46
+ * @param signature Signature data from the offerer
47
+ * @param skipChecks Whether to skip verification of the signature & checking if the swap is already committed
48
+ * @param txOptions Transaction options
49
+ */
50
+ init(signer: Signer, swapData: T, signature: SignatureData, skipChecks?: boolean, txOptions?: TransactionConfirmationOptions): Promise<string>;
51
+ /**
52
+ * Returns the unsigned transactions required for initializing a non-payIn swap (BTC -> SC)
53
+ *
54
+ * @param sender Transaction sender address, must be either offerer or claimer
55
+ * @param swapData Swap to init
56
+ * @param signature Signature data from the offerer
57
+ * @param skipChecks Whether to skip verification of the signature & checking if the swap is already committed
58
+ * @param feeRate Fee rate to use for the transaction
59
+ */
60
+ txsInit(sender: string, swapData: T, signature: SignatureData, skipChecks?: boolean, feeRate?: string): Promise<TX[]>;
61
+ /**
62
+ * Signs & sends transactions required for claiming an HTLC swap
63
+ *
64
+ * @param signer Signer for which the transaction should be created (doesn't need to match the claimer)
65
+ * @param swapData Swap to claim
66
+ * @param secret Secret pre-image that hashes to the swap hash
67
+ * @param checkExpiry Whether to check expiration of the swap before executing transactions
68
+ * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
69
+ * @param txOptions Transaction options
70
+ */
71
+ claimWithSecret(signer: Signer, swapData: T, secret: string, checkExpiry?: boolean, initAta?: boolean, txOptions?: TransactionConfirmationOptions): Promise<string>;
72
+ /**
73
+ * Returns the unsigned transactions required for claiming an HTLC swap
74
+ *
75
+ * @param signer Signer for which the transaction should be created (doesn't need to match the claimer)
76
+ * @param swapData Swap to claim
77
+ * @param secret Secret pre-image that hashes to the swap hash
78
+ * @param checkExpiry Whether to check expiration of the swap before returning the transactions
79
+ * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
80
+ * @param feeRate Fee rate to use for the transactions
81
+ * @param skipAtaCheck Whether to skip checking if token account exists
82
+ */
83
+ txsClaimWithSecret(signer: string | Signer, swapData: T, secret: string, checkExpiry?: boolean, initAta?: boolean, feeRate?: string, skipAtaCheck?: boolean): Promise<TX[]>;
84
+ /**
85
+ * Signs & sends transactions required for claiming an on-chain PTLC (proof-time locked contract) swap
86
+ *
87
+ * @param signer Signer for which the transaction should be created (doesn't need to match the claimer)
88
+ * @param swapData Swap to claim
89
+ * @param tx Bitcoin transaction containing the required output
90
+ * @param requiredConfirmations Required confirmations for the escrow to be claimed
91
+ * @param vout Bitcoin tx's output index of the required output
92
+ * @param storedHeader Optional already retrieved stored header to use for proving
93
+ * @param synchronizer Optiona synchronizer to be used if BTC relay contract is not synced up to the required blockheight
94
+ * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
95
+ * @param txOptions Transaction options
96
+ */
97
+ claimWithTxData(signer: Signer, swapData: T, tx: BitcoinTransactionData, requiredConfirmations: number, vout: number, storedHeader?: BtcStoredHeader<any>, synchronizer?: RelaySynchronizer<any, TX, any>, initAta?: boolean, txOptions?: TransactionConfirmationOptions): Promise<string>;
98
+ /**
99
+ * Returns the unsigned transactions required for claiming an on-chain PTLC (proof-time locked contract) swap
100
+ *
101
+ * @param signer Signer for which the transaction should be created (doesn't need to match the claimer)
102
+ * @param swapData Swap to claim
103
+ * @param tx Bitcoin transaction containing the required output
104
+ * @param requiredConfirmations Required confirmations for the escrow to be claimed
105
+ * @param vout Bitcoin tx's output index of the required output
106
+ * @param storedHeader Optional already retrieved stored header to use for proving
107
+ * @param synchronizer Optiona synchronizer to be used if BTC relay contract is not synced up to the required blockheight
108
+ * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
109
+ * @param feeRate Fee rate to use for the transactions
110
+ */
111
+ txsClaimWithTxData(signer: string | Signer, swapData: T, tx: BitcoinTransactionData, requiredConfirmations: number, vout: number, storedHeader?: BtcStoredHeader<any>, synchronizer?: RelaySynchronizer<any, TX, any>, initAta?: boolean, feeRate?: string): Promise<TX[]>;
112
+ /**
113
+ * Signs & sends transactions for refunding a timed out swap
114
+ *
115
+ * @param signer Signer to use for the transaction (must match offerer in swap data)
116
+ * @param swapData Swap to refund
117
+ * @param check Whether to check if the swap contract still exists on-chain
118
+ * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
119
+ * @param txOptions Transaction options
120
+ */
121
+ refund(signer: Signer, swapData: T, check?: boolean, initAta?: boolean, txOptions?: TransactionConfirmationOptions): Promise<string>;
122
+ /**
123
+ * Returns the transactions for refunding a timed out swap
124
+ *
125
+ * @param signer Signer of the refund transaction
126
+ * @param swapData Swap to refund
127
+ * @param check Whether to check if the swap contract still exists on-chain
128
+ * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
129
+ * @param feeRate Fee rate to use for the transactions
130
+ */
131
+ txsRefund(signer: string, swapData: T, check?: boolean, initAta?: boolean, feeRate?: string): Promise<TX[]>;
132
+ /**
133
+ * Signs & sends transactions for refunding a swap with a valid refund signature from the claimer
134
+ *
135
+ * @param signer Signer to use for the transaction (must match offerer in swap data)
136
+ * @param swapData Swap to refund
137
+ * @param signature Refund signature received from the claimer
138
+ * @param check Whether to check if the swap contract still exists on-chain
139
+ * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
140
+ * @param txOptions Transaction options
141
+ */
142
+ refundWithAuthorization(signer: Signer, swapData: T, signature: SignatureData, check?: boolean, initAta?: boolean, txOptions?: TransactionConfirmationOptions): Promise<string>;
143
+ /**
144
+ * Returns the transactions for refunding a swap with a valid refund signature from the claimer
145
+ *
146
+ * @param signer Signer of the refund transaction
147
+ * @param swapData Swap to refund
148
+ * @param signature Refund signature received from the claimer
149
+ * @param check Whether to check if the swap contract still exists on-chain
150
+ * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
151
+ * @param feeRate Fee rate to use for the transactions
152
+ */
153
+ txsRefundWithAuthorization(signer: string, swapData: T, signature: SignatureData, check?: boolean, initAta?: boolean, feeRate?: string): Promise<TX[]>;
154
+ /**
155
+ * Signs & sends transactions for initializing and instantly (upon init confirmation) claiming the HTLC, used for BTC-LN -> SC swaps
156
+ *
157
+ * @param signer Signer to use for the transaction (must match claimer in swap data)
158
+ * @param swapData Swap to process
159
+ * @param signature Signature data from the offerer
160
+ * @param secret Secret pre-image that hashes to the swap hash
161
+ * @param skipChecks Whether to skip verification of the signature & checking if the swap is already committed
162
+ * @param txOptions Transaction options
163
+ */
164
+ initAndClaimWithSecret?(signer: Signer, swapData: T, signature: SignatureData, secret: string, skipChecks?: boolean, txOptions?: TransactionConfirmationOptions): Promise<string[]>;
165
+ /**
166
+ * Checks whether a swap is already expired, swap expires a bit sooner for the claimer & a bit later for offerer, this
167
+ * is used to account for possible on-chain time skew
168
+ *
169
+ * @param signer Signer to use for checking the expiry
170
+ * @param swapData Swap to check
171
+ */
172
+ isExpired(signer: string, swapData: T): Promise<boolean>;
173
+ /**
174
+ * Checks whether a swap is claimable for the signer, i.e. it is not expired yet and is committed on-chain
175
+ *
176
+ * @param signer
177
+ * @param swapData
178
+ */
179
+ isClaimable(signer: string, swapData: T): Promise<boolean>;
180
+ /**
181
+ * Checks whether a given swap is committed on chain (initialized)
182
+ *
183
+ * @param swapData
184
+ */
185
+ isCommited(swapData: T): Promise<boolean>;
186
+ /**
187
+ * Returns the full status of the swap, expiry is handled by the isExpired function so also requires a signer/sender
188
+ *
189
+ * @param signer
190
+ * @param swapData
191
+ */
192
+ getCommitStatus(signer: string, swapData: T): Promise<SwapCommitState>;
193
+ /**
194
+ * Checks whether a given swap is refundable by us, i.e. it is already expired, we are offerer & swap is committed on-chain
195
+ *
196
+ * @param signer
197
+ * @param swapData
198
+ */
199
+ isRequestRefundable(signer: string, swapData: T): Promise<boolean>;
200
+ /**
201
+ * Pre-fetches data required for creating init signature
202
+ */
203
+ preFetchBlockDataForSignatures?(): Promise<PreFetchData>;
204
+ /**
205
+ * Pre-fetches data required for init signature verification
206
+ * @param data
207
+ */
208
+ preFetchForInitSignatureVerification?(data: PreFetchData): Promise<PreFetchVerification>;
209
+ /**
210
+ * Generates the initialization signature
211
+ *
212
+ * @param signer Signer to use for signing the message
213
+ * @param swapData Swap to sign
214
+ * @param authorizationTimeout Timeout of the authorization
215
+ * @param preFetchedBlockData Optional pre-fetched data required for creating the signature
216
+ * @param feeRate Optional fee rate to use for the authorization
217
+ */
218
+ getInitSignature(signer: Signer, swapData: T, authorizationTimeout: number, preFetchedBlockData?: PreFetchData, feeRate?: string): Promise<SignatureData>;
219
+ /**
220
+ * Checks whether a signature is a valid initialization signature for a given swap
221
+ *
222
+ * @param sender Address of the sender of the transaction (must be either offerer or claimer)
223
+ * @param swapData Swap to initialize
224
+ * @param signature Signature data
225
+ * @param feeRate Fee rate used for the authorization
226
+ * @param preFetchedVerificationData Optional pre-fetched data required for signature validation
227
+ * @returns {Buffer | null} The message being signed if valid or null if invalid signature
228
+ */
229
+ isValidInitAuthorization(sender: string, swapData: T, signature: SignatureData, feeRate?: string, preFetchedVerificationData?: PreFetchVerification): Promise<Buffer | null>;
230
+ /**
231
+ * Returns the expiry timestamp (UNIX milliseconds) of the authorization
232
+ *
233
+ * @param swapData Swap
234
+ * @param signature Signature data
235
+ * @param preFetchedVerificationData Optional pre-fetched data required for signature validation
236
+ */
237
+ getInitAuthorizationExpiry(swapData: T, signature: SignatureData, preFetchedVerificationData?: PreFetchVerification): Promise<number>;
238
+ /**
239
+ * Checks whether a given init signature is already expired
240
+ *
241
+ * @param swapData Swap
242
+ * @param signature Signature data
243
+ */
244
+ isInitAuthorizationExpired(swapData: T, signature: SignatureData): Promise<boolean>;
245
+ /**
246
+ * Generates the refund signature for a given swap allowing the offerer to refund before expiration
247
+ *
248
+ * @param signer Signer to use for signing the message (must be the same as offerer in swap data)
249
+ * @param swapData Swap to refund
250
+ * @param authorizationTimeout Timeout of the provided refund authorization
251
+ */
252
+ getRefundSignature(signer: Signer, swapData: T, authorizationTimeout: number): Promise<SignatureData>;
253
+ /**
254
+ * Checks whether a given refund signature is valid
255
+ *
256
+ * @param swapData Swap to refund
257
+ * @param signature Signature received from the claimer
258
+ */
259
+ isValidRefundAuthorization(swapData: T, signature: SignatureData): Promise<Buffer | null>;
260
+ /**
261
+ * Signs the given data with the provided signer
262
+ *
263
+ * @param signer Signer to sign the message
264
+ * @param data Data to sign
265
+ */
266
+ getDataSignature(signer: Signer, data: Buffer): Promise<string>;
267
+ /**
268
+ * Checks whether a provided data is signature is valid
269
+ *
270
+ * @param data Data to sign
271
+ * @param signature Signature
272
+ * @param publicKey Public key of the signer
273
+ */
274
+ isValidDataSignature(data: Buffer, signature: string, publicKey: string): Promise<boolean>;
275
+ /**
276
+ * Returns the token balance of a given signer's address
277
+ *
278
+ * @param signer Address to check the balance of
279
+ * @param token Token
280
+ * @param inContract Whether we are checking the liquidity deposited into the LP vault or just on-chain balance
281
+ */
282
+ getBalance(signer: string, token: string, inContract: boolean): Promise<bigint>;
283
+ /**
284
+ * Create a swap data for this given chain
285
+ *
286
+ * @param type Type of the swap
287
+ * @param offerer Offerer address
288
+ * @param claimer Claimer addres
289
+ * @param token Token to use for the swap
290
+ * @param amount Amount of tokens for the swap
291
+ * @param paymentHash Payment hash identifying the swap
292
+ * @param sequence Swap sequence uniquelly defining this swap
293
+ * @param expiry Expiration of the swap
294
+ * @param payIn Whether the swap is payIn (offerer paying to the contract, or not payIn offerer using funds in his LP vault)
295
+ * @param payOut Whether the swap is payOut (claimer getting the funds to his on-chain address, or no payOut claimer
296
+ * getting his funds into his LP vault)
297
+ * @param securityDeposit Security deposit for the swap paid by the claimer (options premium)
298
+ * @param claimerBounty Bounty for the claimer of the swap (used for watchtowers)
299
+ * @param depositToken Token to be used for security deposit and claimer bounty
300
+ */
301
+ createSwapData(type: ChainSwapType, offerer: string, claimer: string, token: string, amount: bigint, paymentHash: string, sequence: bigint, expiry: bigint, payIn: boolean, payOut: boolean, securityDeposit: bigint, claimerBounty: bigint, depositToken?: string): Promise<T>;
302
+ /**
303
+ * Returns intermediary's reputation for a given token swaps
304
+ *
305
+ * @param address
306
+ * @param token
307
+ */
308
+ getIntermediaryReputation(address: string, token: string): Promise<IntermediaryReputationType>;
309
+ /**
310
+ * Returns the fee in native token base units to commit (initiate) the swap
311
+ *
312
+ * @param signer
313
+ * @param swapData Swap to initiate
314
+ * @param feeRate Optional fee rate (fetched on-demand if not provided)
315
+ */
316
+ getCommitFee(signer: string, swapData: T, feeRate?: string): Promise<bigint>;
317
+ /**
318
+ * Returns raw fee (not including any account deposits we might need) for initiating the swap
319
+ *
320
+ * @param signer
321
+ * @param swapData Swap to initiate
322
+ * @param feeRate Optional fee rate (fetched on-demand if not provided)
323
+ */
324
+ getRawCommitFee?(signer: string, swapData: T, feeRate?: string): Promise<bigint>;
325
+ /**
326
+ * Returns the fee in native token base units to claim the swap
327
+ *
328
+ * @param signer Signer claiming the swap
329
+ * @param swapData Swap to claim
330
+ * @param feeRate Optional fee rate (fetched on-demand if not provided)
331
+ */
332
+ getClaimFee(signer: string, swapData: T, feeRate?: string): Promise<bigint>;
333
+ /**
334
+ * Returns raw fee (not including any refunds we might get that would make the getClaimFee negative) for claiming the swap
335
+ *
336
+ * @param signer Signer claiming the swap
337
+ * @param swapData Swap to claim
338
+ * @param feeRate Optional fee rate (fetched on-demand if not provided)
339
+ */
340
+ getRawClaimFee?(signer: string, swapData: T, feeRate?: string): Promise<bigint>;
341
+ /**
342
+ * Returns the fee in native token base units to refund the swap
343
+ *
344
+ * @param signer
345
+ * @param swapData Swap to refund
346
+ * @param feeRate Optional fee rate (fetched on-demand if not provided)
347
+ */
348
+ getRefundFee(signer: string, swapData: T, feeRate?: string): Promise<bigint>;
349
+ /**
350
+ * Returns raw fee (not including any refunds we might get that would make the getRefundFee negative) for claiming the swap
351
+ *
352
+ * @param signer
353
+ * @param swapData Swap to claim
354
+ * @param feeRate Optional fee rate (fetched on-demand if not provided)
355
+ */
356
+ getRawRefundFee?(signer: string, swapData: T, feeRate?: string): Promise<bigint>;
357
+ /**
358
+ * Returns the fee rate for committing (initializing) a payIn swap
359
+ *
360
+ * @param offerer Offerer of the swap
361
+ * @param claimer Claimer of the swap
362
+ * @param token Token to be swapped
363
+ * @param paymentHash Optional payment hash
364
+ */
365
+ getInitPayInFeeRate(offerer: string, claimer: string, token: string, paymentHash?: string): Promise<string>;
366
+ /**
367
+ * Returns the fee rate for committing (initializing) a non-payIn swap
368
+ *
369
+ * @param offerer Offerer of the swap
370
+ * @param claimer Claimer of the swap
371
+ * @param token Token to be swapped
372
+ * @param paymentHash Optional payment hash
373
+ */
374
+ getInitFeeRate(offerer: string, claimer: string, token: string, paymentHash?: string): Promise<string>;
375
+ /**
376
+ * Returns the fee rate for refunding a swap
377
+ *
378
+ * @param swapData Swap to refund
379
+ */
380
+ getRefundFeeRate(swapData: T): Promise<string>;
381
+ /**
382
+ * Returns the fee rate for claiming a swap as a specific signer
383
+ *
384
+ * @param signer Signer claiming the swap
385
+ * @param swapData Swap to claim
386
+ */
387
+ getClaimFeeRate(signer: string, swapData: T): Promise<string>;
388
+ getExtraData(outputScript: Buffer, amount: bigint, confirmations: number, nonce?: bigint): Buffer;
389
+ /**
390
+ * Compute the claim hash for a given transaction output, either nonced or just output locked
391
+ *
392
+ * @param outputScript Bitcoin output locking script
393
+ * @param amount Amount of sats in the output
394
+ * @param confirmations Required number of confirmations for the swap to be claimable
395
+ * @param nonce Nonce to be used as replay protection
396
+ */
397
+ getHashForOnchain(outputScript: Buffer, amount: bigint, confirmations: number, nonce?: bigint): Buffer;
398
+ /**
399
+ * Compute the claim hash for a given transaction id
400
+ *
401
+ * @param txId Bitcoin transaction ID
402
+ * @param confirmations Required number of confirmations for the swap to be claimable
403
+ */
404
+ getHashForTxId(txId: string, confirmations: number): Buffer;
405
+ /**
406
+ * Compute the claim hash for an HTLC swap with a given swap hash
407
+ *
408
+ * @param swapHash
409
+ */
410
+ getHashForHtlc(swapHash: Buffer): Buffer;
411
+ /**
412
+ * Withdraws funds from the trading LP vault
413
+ *
414
+ * @param signer Signer to sign the withdrawal with
415
+ * @param token Token to withdraw
416
+ * @param amount Amount of the token to withdraw
417
+ * @param txOptions Transaction options
418
+ */
419
+ withdraw(signer: Signer, token: string, amount: bigint, txOptions?: TransactionConfirmationOptions): Promise<string>;
420
+ /**
421
+ * Returns transactions required for signer to withdraw funds from the trading LP vault
422
+ *
423
+ * @param signer Owner of the funds
424
+ * @param token Token to withdraw
425
+ * @param amount Amount of the token to withdraw
426
+ * @param feeRate Optional fee rate to use for the transaction (fetched on-demand if not provided)
427
+ */
428
+ txsWithdraw(signer: string, token: string, amount: bigint, feeRate?: string): Promise<TX[]>;
429
+ /**
430
+ * Deposits funds to the trading LP vault
431
+ *
432
+ * @param signer Signer to sign the deposit with
433
+ * @param token Token to deposit
434
+ * @param amount Amount of the token to deposit
435
+ * @param txOptions Transaction options
436
+ */
437
+ deposit(signer: Signer, token: string, amount: bigint, txOptions?: TransactionConfirmationOptions): Promise<string>;
438
+ /**
439
+ * Returns transactions required for signer to deposit funds to the trading LP vault
440
+ *
441
+ * @param signer Owner of the funds
442
+ * @param token Token to deposit
443
+ * @param amount Amount of the token to deposit
444
+ * @param feeRate Optional fee rate to use for the transaction (fetched on-demand if not provided)
445
+ */
446
+ txsDeposit(signer: string, token: string, amount: bigint, feeRate?: string): Promise<TX[]>;
447
+ /**
448
+ * Returns the amount of deposits (in native token) that we can claim back (this is useful for SVM chains with the PDAs
449
+ * requiring you to put some deposit in order to store data)
450
+ *
451
+ * @param signer Signer to check the claimable deposits for
452
+ */
453
+ getClaimableDeposits?(signer: string): Promise<{
454
+ count: number;
455
+ totalValue: bigint;
456
+ }>;
457
+ /**
458
+ * Claims the funds from claimable deposits
459
+ *
460
+ * @param signer Owner of the deposits, transaction signer
461
+ * @param txOptions Transaction options
462
+ */
463
+ claimDeposits?(signer: Signer, txOptions: TransactionConfirmationOptions): Promise<{
464
+ txIds: string[];
465
+ count: number;
466
+ totalValue: bigint;
467
+ }>;
468
+ }