@atomiqlabs/base 10.0.0-dev.2 → 10.0.0-dev.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) 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 +133 -110
  21. package/dist/chains/ChainInterface.js +7 -2
  22. package/dist/chains/ChainType.d.ts +24 -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/errors/TransactionRevertedError.d.ts +3 -0
  31. package/dist/errors/TransactionRevertedError.js +11 -0
  32. package/dist/events/ChainEvents.d.ts +9 -9
  33. package/dist/events/ChainEvents.js +2 -2
  34. package/dist/events/types/ChainEvent.d.ts +7 -7
  35. package/dist/events/types/ChainEvent.js +6 -6
  36. package/dist/events/types/spv_vault/SpvVaultClaimEvent.d.ts +12 -12
  37. package/dist/events/types/spv_vault/SpvVaultClaimEvent.js +18 -18
  38. package/dist/events/types/spv_vault/SpvVaultCloseEvent.d.ts +7 -7
  39. package/dist/events/types/spv_vault/SpvVaultCloseEvent.js +13 -13
  40. package/dist/events/types/spv_vault/SpvVaultDepositEvent.d.ts +7 -7
  41. package/dist/events/types/spv_vault/SpvVaultDepositEvent.js +13 -13
  42. package/dist/events/types/spv_vault/SpvVaultEvent.d.ts +15 -15
  43. package/dist/events/types/spv_vault/SpvVaultEvent.js +20 -20
  44. package/dist/events/types/spv_vault/SpvVaultFrontEvent.d.ts +10 -10
  45. package/dist/events/types/spv_vault/SpvVaultFrontEvent.js +16 -16
  46. package/dist/events/types/spv_vault/SpvVaultOpenEvent.d.ts +7 -7
  47. package/dist/events/types/spv_vault/SpvVaultOpenEvent.js +13 -13
  48. package/dist/events/types/swap/ClaimEvent.d.ts +7 -7
  49. package/dist/events/types/swap/ClaimEvent.js +11 -11
  50. package/dist/events/types/swap/InitializeEvent.d.ts +9 -9
  51. package/dist/events/types/swap/InitializeEvent.js +12 -12
  52. package/dist/events/types/swap/RefundEvent.d.ts +5 -5
  53. package/dist/events/types/swap/RefundEvent.js +7 -7
  54. package/dist/events/types/swap/SwapEvent.d.ts +12 -12
  55. package/dist/events/types/swap/SwapEvent.js +17 -17
  56. package/dist/index.d.ts +42 -38
  57. package/dist/index.js +58 -54
  58. package/dist/lockable/Lockable.d.ts +6 -6
  59. package/dist/lockable/Lockable.js +28 -28
  60. package/dist/messaging/Messenger.d.ts +8 -0
  61. package/dist/messaging/Messenger.js +2 -0
  62. package/dist/messaging/messages/Message.d.ts +11 -0
  63. package/dist/messaging/messages/Message.js +22 -0
  64. package/dist/messaging/messages/SwapClaimWitnessMessage.d.ts +10 -0
  65. package/dist/messaging/messages/SwapClaimWitnessMessage.js +28 -0
  66. package/dist/spv_swap/SpvVaultContract.d.ts +258 -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 +479 -467
  83. package/dist/swaps/SwapContract.js +2 -2
  84. package/dist/swaps/SwapData.d.ts +37 -36
  85. package/dist/swaps/SwapData.js +17 -14
  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 +159 -132
  99. package/src/chains/ChainType.ts +40 -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/errors/TransactionRevertedError.ts +11 -0
  104. package/src/events/ChainEvents.ts +13 -13
  105. package/src/events/types/ChainEvent.ts +10 -10
  106. package/src/events/types/spv_vault/SpvVaultClaimEvent.ts +31 -31
  107. package/src/events/types/spv_vault/SpvVaultCloseEvent.ts +17 -17
  108. package/src/events/types/spv_vault/SpvVaultDepositEvent.ts +17 -17
  109. package/src/events/types/spv_vault/SpvVaultEvent.ts +25 -25
  110. package/src/events/types/spv_vault/SpvVaultFrontEvent.ts +27 -27
  111. package/src/events/types/spv_vault/SpvVaultOpenEvent.ts +16 -16
  112. package/src/events/types/swap/ClaimEvent.ts +15 -15
  113. package/src/events/types/swap/InitializeEvent.ts +18 -18
  114. package/src/events/types/swap/RefundEvent.ts +6 -6
  115. package/src/events/types/swap/SwapEvent.ts +21 -21
  116. package/src/index.ts +51 -46
  117. package/src/lockable/Lockable.ts +30 -30
  118. package/src/messaging/Messenger.ts +11 -0
  119. package/src/messaging/messages/Message.ts +25 -0
  120. package/src/messaging/messages/SwapClaimWitnessMessage.ts +34 -0
  121. package/src/spv_swap/SpvVaultContract.ts +269 -230
  122. package/src/spv_swap/SpvVaultData.ts +70 -70
  123. package/src/spv_swap/SpvWithdrawalState.ts +40 -40
  124. package/src/spv_swap/SpvWithdrawalTransactionData.ts +169 -169
  125. package/src/storage/IStorageManager.ts +16 -16
  126. package/src/storage/StorageObject.ts +6 -6
  127. package/src/swaps/ChainSwapType.ts +6 -6
  128. package/src/swaps/SwapCommitState.ts +40 -39
  129. package/src/swaps/SwapContract.ts +564 -556
  130. package/src/swaps/SwapData.ts +69 -65
  131. package/src/utils/BigIntBufferUtils.ts +31 -31
@@ -0,0 +1,11 @@
1
+ export declare enum MessageType {
2
+ SWAP_CLAIM_WITNESS = 0
3
+ }
4
+ export declare abstract class Message {
5
+ abstract type: MessageType;
6
+ static deserializers: {
7
+ [type: number]: (obj: any) => Message;
8
+ };
9
+ serialize(): any;
10
+ static deserialize(message: any): Message;
11
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Message = exports.MessageType = void 0;
4
+ var MessageType;
5
+ (function (MessageType) {
6
+ MessageType[MessageType["SWAP_CLAIM_WITNESS"] = 0] = "SWAP_CLAIM_WITNESS";
7
+ })(MessageType = exports.MessageType || (exports.MessageType = {}));
8
+ class Message {
9
+ serialize() {
10
+ return {
11
+ type: this.type
12
+ };
13
+ }
14
+ static deserialize(message) {
15
+ const deserializer = Message.deserializers[message.type];
16
+ if (deserializer == null)
17
+ throw new Error("Unknown message type " + message.type);
18
+ return deserializer(message);
19
+ }
20
+ }
21
+ exports.Message = Message;
22
+ Message.deserializers = {};
@@ -0,0 +1,10 @@
1
+ import { SwapData } from "../../swaps/SwapData";
2
+ import { Message, MessageType } from "./Message";
3
+ export declare class SwapClaimWitnessMessage<T extends SwapData> extends Message {
4
+ type: MessageType;
5
+ swapData: T;
6
+ witness: string;
7
+ constructor(swapData: T, witness: string);
8
+ serialize(): any;
9
+ static deserialize(obj: any): SwapClaimWitnessMessage<SwapData>;
10
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SwapClaimWitnessMessage = void 0;
4
+ const SwapData_1 = require("../../swaps/SwapData");
5
+ const Message_1 = require("./Message");
6
+ class SwapClaimWitnessMessage extends Message_1.Message {
7
+ constructor(swapData, witness) {
8
+ super();
9
+ this.type = Message_1.MessageType.SWAP_CLAIM_WITNESS;
10
+ this.swapData = swapData;
11
+ this.witness = witness;
12
+ }
13
+ serialize() {
14
+ return {
15
+ ...super.serialize(),
16
+ swapData: this.swapData.serialize(),
17
+ witness: this.witness
18
+ };
19
+ }
20
+ static deserialize(obj) {
21
+ if (obj == null || typeof (obj.witness) !== "string" || typeof (obj.swapData) !== "object") {
22
+ throw new Error("Invalid format!");
23
+ }
24
+ return new SwapClaimWitnessMessage(SwapData_1.SwapData.deserialize(obj.swapData), obj.witness);
25
+ }
26
+ }
27
+ exports.SwapClaimWitnessMessage = SwapClaimWitnessMessage;
28
+ Message_1.Message.deserializers[Message_1.MessageType.SWAP_CLAIM_WITNESS] = SwapClaimWitnessMessage.deserialize;
@@ -1,199 +1,258 @@
1
- /// <reference types="node" />
2
- import { AbstractSigner, TransactionConfirmationOptions } from "../chains/ChainInterface";
3
- import { SpvVaultData, SpvVaultTokenData } from "./SpvVaultData";
4
- import { SpvWithdrawalTransactionData } from "./SpvWithdrawalTransactionData";
5
- import { BtcStoredHeader } from "../btcrelay/types/BtcStoredHeader";
6
- import { RelaySynchronizer } from "../btcrelay/synchronizer/RelaySynchronizer";
7
- import { SpvWithdrawalState } from "./SpvWithdrawalState";
8
- import { Buffer } from "buffer";
9
- import { BtcTx } from "../btc/rpc/BitcoinRpc";
10
- export interface SpvVaultContract<TX = any, Signer extends AbstractSigner = AbstractSigner, ChainId extends string = string, Data extends SpvVaultData = SpvVaultData, WithdrawalTX extends SpvWithdrawalTransactionData = SpvWithdrawalTransactionData> {
11
- readonly chainId: ChainId;
12
- /**
13
- * Signs & sends transactions for opening a specific spv vault
14
- *
15
- * @param signer Signer to use for the transaction (must match owner in vault)
16
- * @param vault Vault to init
17
- * @param txOptions Transaction options
18
- */
19
- open(signer: Signer, vault: Data, txOptions?: TransactionConfirmationOptions): Promise<string>;
20
- /**
21
- * Returns the unsigned transactions for opening a specific spv vault
22
- *
23
- * @param signer Signer to use for the transaction (must match owner in vault)
24
- * @param vault Vault to init
25
- * @param feeRate Fee rate to use for the transaction
26
- */
27
- txsOpen(signer: string, vault: Data, feeRate?: string): Promise<TX[]>;
28
- /**
29
- * Signs & sends transactions for depositing funds to a specific spv vault
30
- *
31
- * @param signer Signer to use for the transaction (can be any)
32
- * @param vault Vault to deposit to
33
- * @param rawAmounts Raw amounts to deposit (these are unscaled)
34
- * @param txOptions Transaction options
35
- */
36
- deposit(signer: Signer, vault: Data, rawAmounts: bigint[], txOptions?: TransactionConfirmationOptions): Promise<string>;
37
- /**
38
- * Returns the unsigned transactions for depositing funds to a specific spv vault
39
- *
40
- * @param signer Signer to use for the transaction (can be any)
41
- * @param vault Vault to deposit to
42
- * @param rawAmounts Raw amounts to deposit (these are unscaled)
43
- * @param feeRate Fee rate to use for the transaction
44
- */
45
- txsDeposit(signer: string, vault: Data, rawAmounts: bigint[], feeRate?: string): Promise<TX[]>;
46
- /**
47
- * Signs & sends transactions for fronting liquidity for a specific withdrawal btc transaction
48
- *
49
- * @param signer Signer to use for the transaction (payer of the fronted liquidity)
50
- * @param vault Vault to deposit to
51
- * @param realWithdrawalTx Real withdrawal transaction data
52
- * @param withdrawSequence Sequence number of the withdrawal that is being fronted, this used as race condition
53
- * prevention, such that fronting will not happen if the withdrawal tx is already used in claim()
54
- * @param txOptions Transaction options
55
- */
56
- frontLiquidity(signer: Signer, vault: Data, realWithdrawalTx: WithdrawalTX, withdrawSequence: number, txOptions?: TransactionConfirmationOptions): Promise<string>;
57
- /**
58
- * Returns the unsigned transactions for fronting liquidity for a specific withdrawal btc transaction
59
- *
60
- * @param signer Signer to use for the transaction (payer of the fronted liquidity)
61
- * @param vault Vault to deposit to
62
- * @param realWithdrawalTx Real withdrawal transaction data
63
- * @param withdrawSequence Sequence number of the withdrawal that is being fronted, this used as race condition
64
- * prevention, such that fronting will not happen if the withdrawal tx is already used in claim()
65
- * @param feeRate Fee rate to use for the transaction
66
- */
67
- txsFrontLiquidity(signer: string, vault: Data, realWithdrawalTx: WithdrawalTX, withdrawSequence: number, feeRate?: string): Promise<TX[]>;
68
- /**
69
- * Signs & sends transactions for claiming the funds from a specific vault
70
- *
71
- * @param signer Signer to use for the transaction
72
- * @param vault Vault to claim from
73
- * @param txs
74
- * @param synchronizer Optiona synchronizer to be used if BTC relay contract is not synced up to the required blockheight
75
- * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
76
- * @param txOptions Transaction options
77
- */
78
- claim(signer: Signer, vault: Data, txs: {
79
- tx: WithdrawalTX;
80
- storedHeader?: BtcStoredHeader<any>;
81
- }[], synchronizer?: RelaySynchronizer<any, TX, any>, initAta?: boolean, txOptions?: TransactionConfirmationOptions): Promise<string>;
82
- /**
83
- * Returns the unsigned transactions for claiming the funds from a specific vault
84
- *
85
- * @param signer Signer to use for the transaction
86
- * @param vault Vault to claim from
87
- * @param txs
88
- * @param synchronizer Optiona synchronizer to be used if BTC relay contract is not synced up to the required blockheight
89
- * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
90
- * @param feeRate Fee rate to use for the transaction
91
- */
92
- txsClaim(signer: string, vault: Data, txs: {
93
- tx: WithdrawalTX;
94
- storedHeader?: BtcStoredHeader<any>;
95
- }[], synchronizer?: RelaySynchronizer<any, TX, any>, initAta?: boolean, feeRate?: string): Promise<TX[]>;
96
- /**
97
- * Creates vault data for a new vault
98
- *
99
- * @param owner Vault owner
100
- * @param vaultId Vault ID
101
- * @param utxo Utxo on which to assign the vault initially
102
- * @param confirmations Required number of bitcoin confirmations to be able to withdraw funds from the vault
103
- * @param tokenData Data about the tokens in the vault
104
- */
105
- createVaultData(owner: string, vaultId: bigint, utxo: string, confirmations: number, tokenData: SpvVaultTokenData[]): Promise<Data>;
106
- /**
107
- * Returns the party which currently fronted the withdrawal transaction
108
- *
109
- * @param owner Owner of the vault
110
- * @param vaultId Vault ID
111
- * @param withdrawal Withdrawal transaction to check the fronting for
112
- */
113
- getFronterAddress(owner: string, vaultId: bigint, withdrawal: WithdrawalTX): Promise<string | null>;
114
- /**
115
- * Returns current vault data
116
- *
117
- * @param owner Owner of the vault
118
- * @param vaultId Vault ID
119
- */
120
- getVaultData(owner: string, vaultId: bigint): Promise<Data>;
121
- /**
122
- * Returns all currently opened vaults
123
- * NOTE: This will take a long time, since the implementation will have to go through all the prior events
124
- */
125
- getAllVaults(owner?: string): Promise<Data[]>;
126
- /**
127
- * Returns current state of the withdrawal as specified by the bitcoin transaction ID
128
- *
129
- * @param btcTxId
130
- */
131
- getWithdrawalState(btcTxId: string): Promise<SpvWithdrawalState>;
132
- /**
133
- * Parses withdrawal data from the parsed bitcoin transaction
134
- *
135
- * @param btcTx
136
- */
137
- getWithdrawalData(btcTx: BtcTx): Promise<WithdrawalTX>;
138
- /**
139
- * Checks if given withdrawal tx is valid and correctly parses on-chain, throws error when there is any issue with
140
- * the validation
141
- *
142
- * @param tx
143
- */
144
- checkWithdrawalTx(tx: WithdrawalTX): Promise<void>;
145
- /**
146
- * Serializes the withdrawal params to the OP_RETURN data
147
- *
148
- * @param recipient Recipient of the withdrawn tokens
149
- * @param rawAmounts Raw amount of tokens to withdraw
150
- * @param executionHash Optional execution hash of the actions to execute
151
- */
152
- toOpReturnData(recipient: string, rawAmounts: bigint[], executionHash?: string): Buffer;
153
- /**
154
- * Parses withdrawal params from OP_RETURN data
155
- *
156
- * @param data data as specified in the OP_RETURN output of the transaction
157
- */
158
- fromOpReturnData(data: Buffer): {
159
- recipient: string;
160
- rawAmounts: bigint[];
161
- executionHash: string;
162
- };
163
- /**
164
- * Returns the fee in native token base units to claim the swap
165
- *
166
- * @param signer Signer claiming the swap
167
- * @param vault
168
- * @param withdrawalData Withdrawal to claim
169
- * @param feeRate Optional fee rate (fetched on-demand if not provided)
170
- */
171
- getClaimFee(signer: string, vault: Data, withdrawalData: WithdrawalTX, feeRate?: string): Promise<bigint>;
172
- /**
173
- * Returns raw fee (not including any refunds we might get that would make the getClaimFee negative) for claiming the swap
174
- *
175
- * @param signer Signer claiming the swap
176
- * @param vault
177
- * @param withdrawalData Withdrawal to claim
178
- * @param feeRate Optional fee rate (fetched on-demand if not provided)
179
- */
180
- getRawClaimFee?(signer: string, vault: Data, withdrawalData: WithdrawalTX, feeRate?: string): Promise<bigint>;
181
- /**
182
- * Returns the fee in native token base units to claim the swap
183
- *
184
- * @param signer Signer claiming the swap
185
- * @param vault
186
- * @param withdrawalData Withdrawal to claim
187
- * @param feeRate Optional fee rate (fetched on-demand if not provided)
188
- */
189
- getFrontFee(signer: string, vault: Data, withdrawalData: WithdrawalTX, feeRate?: string): Promise<bigint>;
190
- /**
191
- * Returns raw fee (not including any refunds we might get that would make the getClaimFee negative) for claiming the swap
192
- *
193
- * @param signer Signer claiming the swap
194
- * @param vault
195
- * @param withdrawalData Withdrawal to claim
196
- * @param feeRate Optional fee rate (fetched on-demand if not provided)
197
- */
198
- getRawFrontFee?(signer: string, vault: Data, withdrawalData: WithdrawalTX, feeRate?: string): Promise<bigint>;
199
- }
1
+ /// <reference types="node" />
2
+ import { AbstractSigner, TransactionConfirmationOptions } from "../chains/ChainInterface";
3
+ import { SpvVaultData, SpvVaultTokenData } from "./SpvVaultData";
4
+ import { SpvWithdrawalTransactionData } from "./SpvWithdrawalTransactionData";
5
+ import { BtcStoredHeader } from "../btcrelay/types/BtcStoredHeader";
6
+ import { RelaySynchronizer } from "../btcrelay/synchronizer/RelaySynchronizer";
7
+ import { SpvWithdrawalState } from "./SpvWithdrawalState";
8
+ import { Buffer } from "buffer";
9
+ import { BtcTx } from "../btc/rpc/BitcoinRpc";
10
+ export interface SpvVaultContract<TX = any, Signer extends AbstractSigner = AbstractSigner, ChainId extends string = string, Data extends SpvVaultData = SpvVaultData, WithdrawalTX extends SpvWithdrawalTransactionData = SpvWithdrawalTransactionData> {
11
+ readonly chainId: ChainId;
12
+ /**
13
+ * Signs & sends transactions for opening a specific spv vault
14
+ *
15
+ * @param signer Signer to use for the transaction (must match owner in vault)
16
+ * @param vault Vault to init
17
+ * @param txOptions Transaction options
18
+ */
19
+ open(signer: Signer, vault: Data, txOptions?: TransactionConfirmationOptions): Promise<string>;
20
+ /**
21
+ * Returns the unsigned transactions for opening a specific spv vault
22
+ *
23
+ * @param signer Signer to use for the transaction (must match owner in vault)
24
+ * @param vault Vault to init
25
+ * @param feeRate Fee rate to use for the transaction
26
+ */
27
+ txsOpen(signer: string, vault: Data, feeRate?: string): Promise<TX[]>;
28
+ /**
29
+ * Signs & sends transactions for depositing funds to a specific spv vault
30
+ *
31
+ * @param signer Signer to use for the transaction (can be any)
32
+ * @param vault Vault to deposit to
33
+ * @param rawAmounts Raw amounts to deposit (these are unscaled)
34
+ * @param txOptions Transaction options
35
+ */
36
+ deposit(signer: Signer, vault: Data, rawAmounts: bigint[], txOptions?: TransactionConfirmationOptions): Promise<string>;
37
+ /**
38
+ * Returns the unsigned transactions for depositing funds to a specific spv vault
39
+ *
40
+ * @param signer Signer to use for the transaction (can be any)
41
+ * @param vault Vault to deposit to
42
+ * @param rawAmounts Raw amounts to deposit (these are unscaled)
43
+ * @param feeRate Fee rate to use for the transaction
44
+ */
45
+ txsDeposit(signer: string, vault: Data, rawAmounts: bigint[], feeRate?: string): Promise<TX[]>;
46
+ /**
47
+ * Signs & sends transactions for fronting liquidity for a specific withdrawal btc transaction
48
+ *
49
+ * @param signer Signer to use for the transaction (payer of the fronted liquidity)
50
+ * @param vault Vault to deposit to
51
+ * @param realWithdrawalTx Real withdrawal transaction data
52
+ * @param withdrawSequence Sequence number of the withdrawal that is being fronted, this used as race condition
53
+ * prevention, such that fronting will not happen if the withdrawal tx is already used in claim()
54
+ * @param txOptions Transaction options
55
+ */
56
+ frontLiquidity(signer: Signer, vault: Data, realWithdrawalTx: WithdrawalTX, withdrawSequence: number, txOptions?: TransactionConfirmationOptions): Promise<string>;
57
+ /**
58
+ * Returns the unsigned transactions for fronting liquidity for a specific withdrawal btc transaction
59
+ *
60
+ * @param signer Signer to use for the transaction (payer of the fronted liquidity)
61
+ * @param vault Vault to deposit to
62
+ * @param realWithdrawalTx Real withdrawal transaction data
63
+ * @param withdrawSequence Sequence number of the withdrawal that is being fronted, this used as race condition
64
+ * prevention, such that fronting will not happen if the withdrawal tx is already used in claim()
65
+ * @param feeRate Fee rate to use for the transaction
66
+ */
67
+ txsFrontLiquidity(signer: string, vault: Data, realWithdrawalTx: WithdrawalTX, withdrawSequence: number, feeRate?: string): Promise<TX[]>;
68
+ /**
69
+ * Signs & sends transactions for claiming the funds from a specific vault
70
+ *
71
+ * @param signer Signer to use for the transaction
72
+ * @param vault Vault to claim from
73
+ * @param txs
74
+ * @param synchronizer Optiona synchronizer to be used if BTC relay contract is not synced up to the required blockheight
75
+ * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
76
+ * @param txOptions Transaction options
77
+ */
78
+ claim(signer: Signer, vault: Data, txs: {
79
+ tx: WithdrawalTX;
80
+ storedHeader?: BtcStoredHeader<any>;
81
+ }[], synchronizer?: RelaySynchronizer<any, TX, any>, initAta?: boolean, txOptions?: TransactionConfirmationOptions): Promise<string>;
82
+ /**
83
+ * Returns the unsigned transactions for claiming the funds from a specific vault
84
+ *
85
+ * @param signer Signer to use for the transaction
86
+ * @param vault Vault to claim from
87
+ * @param txs
88
+ * @param synchronizer Optiona synchronizer to be used if BTC relay contract is not synced up to the required blockheight
89
+ * @param initAta Whether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
90
+ * @param feeRate Fee rate to use for the transaction
91
+ */
92
+ txsClaim(signer: string, vault: Data, txs: {
93
+ tx: WithdrawalTX;
94
+ storedHeader?: BtcStoredHeader<any>;
95
+ }[], synchronizer?: RelaySynchronizer<any, TX, any>, initAta?: boolean, feeRate?: string): Promise<TX[]>;
96
+ /**
97
+ * Creates vault data for a new vault
98
+ *
99
+ * @param owner Vault owner
100
+ * @param vaultId Vault ID
101
+ * @param utxo Utxo on which to assign the vault initially
102
+ * @param confirmations Required number of bitcoin confirmations to be able to withdraw funds from the vault
103
+ * @param tokenData Data about the tokens in the vault
104
+ */
105
+ createVaultData(owner: string, vaultId: bigint, utxo: string, confirmations: number, tokenData: SpvVaultTokenData[]): Promise<Data>;
106
+ /**
107
+ * Returns the party which currently fronted the withdrawal transaction
108
+ *
109
+ * @param owner Owner of the vault
110
+ * @param vaultId Vault ID
111
+ * @param withdrawal Withdrawal transaction to check the fronting for
112
+ */
113
+ getFronterAddress(owner: string, vaultId: bigint, withdrawal: WithdrawalTX): Promise<string | null>;
114
+ /**
115
+ * Returns the parties which currently fronted the withdrawal transactions
116
+ *
117
+ * @param withdrawals withdrawals to query
118
+ */
119
+ getFronterAddresses(withdrawals: {
120
+ owner: string;
121
+ vaultId: bigint;
122
+ withdrawal: WithdrawalTX;
123
+ }[]): Promise<{
124
+ [btcTxId: string]: string | null;
125
+ }>;
126
+ /**
127
+ * Returns current vault data
128
+ *
129
+ * @param owner Owner of the vault
130
+ * @param vaultId Vault ID
131
+ */
132
+ getVaultData(owner: string, vaultId: bigint): Promise<Data>;
133
+ /**
134
+ * Returns current vault data for multiple vaults
135
+ *
136
+ * @param vaults Vault data to query
137
+ */
138
+ getMultipleVaultData(vaults: {
139
+ owner: string;
140
+ vaultId: bigint;
141
+ }[]): Promise<{
142
+ [owner: string]: {
143
+ [vaultId: string]: Data;
144
+ };
145
+ }>;
146
+ /**
147
+ * Returns the latest utxo of a vault (or null if vault closed or not found)
148
+ *
149
+ * @param owner Owner of the vault
150
+ * @param vaultId Vault ID
151
+ */
152
+ getVaultLatestUtxo(owner: string, vaultId: bigint): Promise<string | null>;
153
+ /**
154
+ * Returns the latest utxos of for multiple vaults (or null if vault closed or not found)
155
+ *
156
+ * @param vaults Vault data to query
157
+ */
158
+ getVaultLatestUtxos(vaults: {
159
+ owner: string;
160
+ vaultId: bigint;
161
+ }[]): Promise<{
162
+ [owner: string]: {
163
+ [vaultId: string]: string | null;
164
+ };
165
+ }>;
166
+ /**
167
+ * Returns all currently opened vaults
168
+ * NOTE: This will take a long time, since the implementation will have to go through all the prior events
169
+ */
170
+ getAllVaults(owner?: string): Promise<Data[]>;
171
+ /**
172
+ * Returns current state of the withdrawal, optionally
173
+ * only check withdrawals from the provided block height
174
+ *
175
+ * @param withdrawalTx
176
+ * @param scStartBlockheight
177
+ */
178
+ getWithdrawalState(withdrawalTx: WithdrawalTX, scStartBlockheight?: number): Promise<SpvWithdrawalState>;
179
+ /**
180
+ * Returns current state of the withdrawals, optionally
181
+ * only check withdrawals from the provided block height
182
+ *
183
+ * @param withdrawalTxs Object with the withdrawal tx to check + an optional start blockheight
184
+ */
185
+ getWithdrawalStates(withdrawalTxs: {
186
+ withdrawal: WithdrawalTX;
187
+ scStartBlockheight?: number;
188
+ }[]): Promise<{
189
+ [btcTxId: string]: SpvWithdrawalState;
190
+ }>;
191
+ /**
192
+ * Parses withdrawal data from the parsed bitcoin transaction
193
+ *
194
+ * @param btcTx
195
+ */
196
+ getWithdrawalData(btcTx: BtcTx): Promise<WithdrawalTX>;
197
+ /**
198
+ * Checks if given withdrawal tx is valid and correctly parses on-chain, throws error when there is any issue with
199
+ * the validation
200
+ *
201
+ * @param tx
202
+ */
203
+ checkWithdrawalTx(tx: WithdrawalTX): Promise<void>;
204
+ /**
205
+ * Serializes the withdrawal params to the OP_RETURN data
206
+ *
207
+ * @param recipient Recipient of the withdrawn tokens
208
+ * @param rawAmounts Raw amount of tokens to withdraw
209
+ * @param executionHash Optional execution hash of the actions to execute
210
+ */
211
+ toOpReturnData(recipient: string, rawAmounts: bigint[], executionHash?: string): Buffer;
212
+ /**
213
+ * Parses withdrawal params from OP_RETURN data
214
+ *
215
+ * @param data data as specified in the OP_RETURN output of the transaction
216
+ */
217
+ fromOpReturnData(data: Buffer): {
218
+ recipient: string;
219
+ rawAmounts: bigint[];
220
+ executionHash: string;
221
+ };
222
+ /**
223
+ * Returns the fee in native token base units to claim the swap
224
+ *
225
+ * @param signer Signer claiming the swap
226
+ * @param vault
227
+ * @param withdrawalData Withdrawal to claim
228
+ * @param feeRate Optional fee rate (fetched on-demand if not provided)
229
+ */
230
+ getClaimFee(signer: string, vault: Data, withdrawalData: WithdrawalTX, feeRate?: string): Promise<bigint>;
231
+ /**
232
+ * Returns raw fee (not including any refunds we might get that would make the getClaimFee negative) for claiming the swap
233
+ *
234
+ * @param signer Signer claiming the swap
235
+ * @param vault
236
+ * @param withdrawalData Withdrawal to claim
237
+ * @param feeRate Optional fee rate (fetched on-demand if not provided)
238
+ */
239
+ getRawClaimFee?(signer: string, vault: Data, withdrawalData: WithdrawalTX, feeRate?: string): Promise<bigint>;
240
+ /**
241
+ * Returns the fee in native token base units to claim the swap
242
+ *
243
+ * @param signer Signer claiming the swap
244
+ * @param vault
245
+ * @param withdrawalData Withdrawal to claim
246
+ * @param feeRate Optional fee rate (fetched on-demand if not provided)
247
+ */
248
+ getFrontFee(signer: string, vault: Data, withdrawalData: WithdrawalTX, feeRate?: string): Promise<bigint>;
249
+ /**
250
+ * Returns raw fee (not including any refunds we might get that would make the getClaimFee negative) for claiming the swap
251
+ *
252
+ * @param signer Signer claiming the swap
253
+ * @param vault
254
+ * @param withdrawalData Withdrawal to claim
255
+ * @param feeRate Optional fee rate (fetched on-demand if not provided)
256
+ */
257
+ getRawFrontFee?(signer: string, vault: Data, withdrawalData: WithdrawalTX, feeRate?: string): Promise<bigint>;
258
+ }
@@ -1,2 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,35 +1,35 @@
1
- import { StorageObject } from "../storage/StorageObject";
2
- import { SpvWithdrawalTransactionData } from "./SpvWithdrawalTransactionData";
3
- import { SpvVaultClaimEvent } from "../events/types/spv_vault/SpvVaultClaimEvent";
4
- import { SpvVaultCloseEvent } from "../events/types/spv_vault/SpvVaultCloseEvent";
5
- import { SpvVaultOpenEvent } from "../events/types/spv_vault/SpvVaultOpenEvent";
6
- import { SpvVaultDepositEvent } from "../events/types/spv_vault/SpvVaultDepositEvent";
7
- export type SpvVaultTokenBalance = SpvVaultTokenData & {
8
- rawAmount: bigint;
9
- scaledAmount: bigint;
10
- };
11
- export type SpvVaultTokenData = {
12
- token: string;
13
- multiplier: bigint;
14
- };
15
- export declare abstract class SpvVaultData<T extends SpvWithdrawalTransactionData = SpvWithdrawalTransactionData> implements StorageObject {
16
- static deserializers: {
17
- [type: string]: new (serialized: any) => any;
18
- };
19
- static deserialize<T extends SpvVaultData>(data: any): T;
20
- abstract serialize(): any;
21
- abstract getOwner(): string;
22
- abstract getVaultId(): bigint;
23
- abstract getTokenData(): SpvVaultTokenData[];
24
- abstract getBalances(): SpvVaultTokenBalance[];
25
- abstract getUtxo(): string;
26
- abstract getConfirmations(): number;
27
- abstract getWithdrawalCount(): number;
28
- abstract getDepositCount(): number;
29
- abstract isOpened(): boolean;
30
- abstract updateState(withdrawalTxOrEvent: T | SpvVaultClaimEvent | SpvVaultCloseEvent | SpvVaultOpenEvent | SpvVaultDepositEvent): void;
31
- calculateStateAfter(priorWithdrawalTxs: T[]): {
32
- withdrawalCount: number;
33
- balances: SpvVaultTokenBalance[];
34
- };
35
- }
1
+ import { StorageObject } from "../storage/StorageObject";
2
+ import { SpvWithdrawalTransactionData } from "./SpvWithdrawalTransactionData";
3
+ import { SpvVaultClaimEvent } from "../events/types/spv_vault/SpvVaultClaimEvent";
4
+ import { SpvVaultCloseEvent } from "../events/types/spv_vault/SpvVaultCloseEvent";
5
+ import { SpvVaultOpenEvent } from "../events/types/spv_vault/SpvVaultOpenEvent";
6
+ import { SpvVaultDepositEvent } from "../events/types/spv_vault/SpvVaultDepositEvent";
7
+ export type SpvVaultTokenBalance = SpvVaultTokenData & {
8
+ rawAmount: bigint;
9
+ scaledAmount: bigint;
10
+ };
11
+ export type SpvVaultTokenData = {
12
+ token: string;
13
+ multiplier: bigint;
14
+ };
15
+ export declare abstract class SpvVaultData<T extends SpvWithdrawalTransactionData = SpvWithdrawalTransactionData> implements StorageObject {
16
+ static deserializers: {
17
+ [type: string]: new (serialized: any) => any;
18
+ };
19
+ static deserialize<T extends SpvVaultData>(data: any): T;
20
+ abstract serialize(): any;
21
+ abstract getOwner(): string;
22
+ abstract getVaultId(): bigint;
23
+ abstract getTokenData(): SpvVaultTokenData[];
24
+ abstract getBalances(): SpvVaultTokenBalance[];
25
+ abstract getUtxo(): string;
26
+ abstract getConfirmations(): number;
27
+ abstract getWithdrawalCount(): number;
28
+ abstract getDepositCount(): number;
29
+ abstract isOpened(): boolean;
30
+ abstract updateState(withdrawalTxOrEvent: T | SpvVaultClaimEvent | SpvVaultCloseEvent | SpvVaultOpenEvent | SpvVaultDepositEvent): void;
31
+ calculateStateAfter(priorWithdrawalTxs: T[]): {
32
+ withdrawalCount: number;
33
+ balances: SpvVaultTokenBalance[];
34
+ };
35
+ }