@atomiqlabs/base 10.0.0-dev.1 → 10.0.0-dev.13

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 +112 -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 -38
  55. package/dist/index.js +57 -54
  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 -0
  59. package/dist/messaging/EventMessaging.js +2 -0
  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 +252 -195
  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 -463
  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 +134 -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 -46
  116. package/src/lockable/Lockable.ts +30 -30
  117. package/src/messaging/Messenger.ts +11 -0
  118. package/src/messaging/messages/Message.ts +25 -0
  119. package/src/messaging/messages/SwapClaimWitnessMessage.ts +34 -0
  120. package/src/spv_swap/SpvVaultContract.ts +266 -226
  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 +564 -552
  129. package/src/swaps/SwapData.ts +69 -65
  130. package/src/utils/BigIntBufferUtils.ts +31 -31
@@ -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,195 +1,252 @@
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 withdrawalData Withdrawal to claim
168
- * @param feeRate Optional fee rate (fetched on-demand if not provided)
169
- */
170
- getClaimFee(signer: string, withdrawalData: WithdrawalTX, feeRate?: string): Promise<bigint>;
171
- /**
172
- * Returns raw fee (not including any refunds we might get that would make the getClaimFee negative) for claiming the swap
173
- *
174
- * @param signer Signer claiming the swap
175
- * @param withdrawalData Withdrawal to claim
176
- * @param feeRate Optional fee rate (fetched on-demand if not provided)
177
- */
178
- getRawClaimFee?(signer: string, withdrawalData: WithdrawalTX, feeRate?: string): Promise<bigint>;
179
- /**
180
- * Returns the fee in native token base units to claim the swap
181
- *
182
- * @param signer Signer claiming the swap
183
- * @param withdrawalData Withdrawal to claim
184
- * @param feeRate Optional fee rate (fetched on-demand if not provided)
185
- */
186
- getFrontFee(signer: string, withdrawalData: WithdrawalTX, feeRate?: string): Promise<bigint>;
187
- /**
188
- * Returns raw fee (not including any refunds we might get that would make the getClaimFee negative) for claiming the swap
189
- *
190
- * @param signer Signer claiming the swap
191
- * @param withdrawalData Withdrawal to claim
192
- * @param feeRate Optional fee rate (fetched on-demand if not provided)
193
- */
194
- getRawFrontFee?(signer: string, withdrawalData: WithdrawalTX, feeRate?: string): Promise<bigint>;
195
- }
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 as specified by the bitcoin transaction ID
173
+ *
174
+ * @param btcTxId
175
+ */
176
+ getWithdrawalState(btcTxId: string): Promise<SpvWithdrawalState>;
177
+ /**
178
+ * Returns current state of the withdrawals as specified by the bitcoin transaction IDs
179
+ *
180
+ * @param btcTxIds
181
+ */
182
+ getWithdrawalStates(btcTxIds: string[]): Promise<{
183
+ [btcTxId: string]: SpvWithdrawalState;
184
+ }>;
185
+ /**
186
+ * Parses withdrawal data from the parsed bitcoin transaction
187
+ *
188
+ * @param btcTx
189
+ */
190
+ getWithdrawalData(btcTx: BtcTx): Promise<WithdrawalTX>;
191
+ /**
192
+ * Checks if given withdrawal tx is valid and correctly parses on-chain, throws error when there is any issue with
193
+ * the validation
194
+ *
195
+ * @param tx
196
+ */
197
+ checkWithdrawalTx(tx: WithdrawalTX): Promise<void>;
198
+ /**
199
+ * Serializes the withdrawal params to the OP_RETURN data
200
+ *
201
+ * @param recipient Recipient of the withdrawn tokens
202
+ * @param rawAmounts Raw amount of tokens to withdraw
203
+ * @param executionHash Optional execution hash of the actions to execute
204
+ */
205
+ toOpReturnData(recipient: string, rawAmounts: bigint[], executionHash?: string): Buffer;
206
+ /**
207
+ * Parses withdrawal params from OP_RETURN data
208
+ *
209
+ * @param data data as specified in the OP_RETURN output of the transaction
210
+ */
211
+ fromOpReturnData(data: Buffer): {
212
+ recipient: string;
213
+ rawAmounts: bigint[];
214
+ executionHash: string;
215
+ };
216
+ /**
217
+ * Returns the fee in native token base units to claim the swap
218
+ *
219
+ * @param signer Signer claiming the swap
220
+ * @param vault
221
+ * @param withdrawalData Withdrawal to claim
222
+ * @param feeRate Optional fee rate (fetched on-demand if not provided)
223
+ */
224
+ getClaimFee(signer: string, vault: Data, withdrawalData: WithdrawalTX, feeRate?: string): Promise<bigint>;
225
+ /**
226
+ * Returns raw fee (not including any refunds we might get that would make the getClaimFee negative) for claiming the swap
227
+ *
228
+ * @param signer Signer claiming the swap
229
+ * @param vault
230
+ * @param withdrawalData Withdrawal to claim
231
+ * @param feeRate Optional fee rate (fetched on-demand if not provided)
232
+ */
233
+ getRawClaimFee?(signer: string, vault: Data, withdrawalData: WithdrawalTX, feeRate?: string): Promise<bigint>;
234
+ /**
235
+ * Returns the fee in native token base units to claim the swap
236
+ *
237
+ * @param signer Signer claiming the swap
238
+ * @param vault
239
+ * @param withdrawalData Withdrawal to claim
240
+ * @param feeRate Optional fee rate (fetched on-demand if not provided)
241
+ */
242
+ getFrontFee(signer: string, vault: Data, withdrawalData: WithdrawalTX, feeRate?: string): Promise<bigint>;
243
+ /**
244
+ * Returns raw fee (not including any refunds we might get that would make the getClaimFee negative) for claiming the swap
245
+ *
246
+ * @param signer Signer claiming the swap
247
+ * @param vault
248
+ * @param withdrawalData Withdrawal to claim
249
+ * @param feeRate Optional fee rate (fetched on-demand if not provided)
250
+ */
251
+ getRawFrontFee?(signer: string, vault: Data, withdrawalData: WithdrawalTX, feeRate?: string): Promise<bigint>;
252
+ }
@@ -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
+ }