@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.
- package/LICENSE +201 -201
- package/dist/btc/BitcoinNetwork.d.ts +6 -6
- package/dist/btc/BitcoinNetwork.js +10 -10
- package/dist/btc/rpc/BitcoinRpc.d.ts +68 -68
- package/dist/btc/rpc/BitcoinRpc.js +2 -2
- package/dist/btcrelay/BtcRelay.d.ts +61 -61
- package/dist/btcrelay/BtcRelay.js +2 -2
- package/dist/btcrelay/synchronizer/RelaySynchronizer.d.ts +18 -18
- package/dist/btcrelay/synchronizer/RelaySynchronizer.js +2 -2
- package/dist/btcrelay/types/BtcBlock.d.ts +13 -13
- package/dist/btcrelay/types/BtcBlock.js +2 -2
- package/dist/btcrelay/types/BtcHeader.d.ts +10 -10
- package/dist/btcrelay/types/BtcHeader.js +2 -2
- package/dist/btcrelay/types/BtcStoredHeader.d.ts +11 -11
- package/dist/btcrelay/types/BtcStoredHeader.js +2 -2
- package/dist/btcrelay/utils/StatePredictorUtils.d.ts +11 -11
- package/dist/btcrelay/utils/StatePredictorUtils.js +80 -80
- package/dist/chains/ChainData.d.ts +31 -31
- package/dist/chains/ChainData.js +2 -2
- package/dist/chains/ChainInterface.d.ts +133 -110
- package/dist/chains/ChainInterface.js +7 -2
- package/dist/chains/ChainType.d.ts +24 -23
- package/dist/chains/ChainType.js +2 -2
- package/dist/errors/CannotInitializeATAError.d.ts +3 -3
- package/dist/errors/CannotInitializeATAError.js +11 -11
- package/dist/errors/SignatureVerificationError.d.ts +3 -3
- package/dist/errors/SignatureVerificationError.js +11 -11
- package/dist/errors/SwapDataVerificationError.d.ts +3 -3
- package/dist/errors/SwapDataVerificationError.js +11 -11
- package/dist/errors/TransactionRevertedError.d.ts +3 -0
- package/dist/errors/TransactionRevertedError.js +11 -0
- package/dist/events/ChainEvents.d.ts +9 -9
- package/dist/events/ChainEvents.js +2 -2
- package/dist/events/types/ChainEvent.d.ts +7 -7
- package/dist/events/types/ChainEvent.js +6 -6
- package/dist/events/types/spv_vault/SpvVaultClaimEvent.d.ts +12 -12
- package/dist/events/types/spv_vault/SpvVaultClaimEvent.js +18 -18
- package/dist/events/types/spv_vault/SpvVaultCloseEvent.d.ts +7 -7
- package/dist/events/types/spv_vault/SpvVaultCloseEvent.js +13 -13
- package/dist/events/types/spv_vault/SpvVaultDepositEvent.d.ts +7 -7
- package/dist/events/types/spv_vault/SpvVaultDepositEvent.js +13 -13
- package/dist/events/types/spv_vault/SpvVaultEvent.d.ts +15 -15
- package/dist/events/types/spv_vault/SpvVaultEvent.js +20 -20
- package/dist/events/types/spv_vault/SpvVaultFrontEvent.d.ts +10 -10
- package/dist/events/types/spv_vault/SpvVaultFrontEvent.js +16 -16
- package/dist/events/types/spv_vault/SpvVaultOpenEvent.d.ts +7 -7
- package/dist/events/types/spv_vault/SpvVaultOpenEvent.js +13 -13
- package/dist/events/types/swap/ClaimEvent.d.ts +7 -7
- package/dist/events/types/swap/ClaimEvent.js +11 -11
- package/dist/events/types/swap/InitializeEvent.d.ts +9 -9
- package/dist/events/types/swap/InitializeEvent.js +12 -12
- package/dist/events/types/swap/RefundEvent.d.ts +5 -5
- package/dist/events/types/swap/RefundEvent.js +7 -7
- package/dist/events/types/swap/SwapEvent.d.ts +12 -12
- package/dist/events/types/swap/SwapEvent.js +17 -17
- package/dist/index.d.ts +42 -38
- package/dist/index.js +58 -54
- package/dist/lockable/Lockable.d.ts +6 -6
- package/dist/lockable/Lockable.js +28 -28
- package/dist/messaging/Messenger.d.ts +8 -0
- package/dist/messaging/Messenger.js +2 -0
- package/dist/messaging/messages/Message.d.ts +11 -0
- package/dist/messaging/messages/Message.js +22 -0
- package/dist/messaging/messages/SwapClaimWitnessMessage.d.ts +10 -0
- package/dist/messaging/messages/SwapClaimWitnessMessage.js +28 -0
- package/dist/spv_swap/SpvVaultContract.d.ts +258 -199
- package/dist/spv_swap/SpvVaultContract.js +2 -2
- package/dist/spv_swap/SpvVaultData.d.ts +35 -35
- package/dist/spv_swap/SpvVaultData.js +37 -37
- package/dist/spv_swap/SpvWithdrawalState.d.ts +31 -31
- package/dist/spv_swap/SpvWithdrawalState.js +10 -10
- package/dist/spv_swap/SpvWithdrawalTransactionData.d.ts +43 -43
- package/dist/spv_swap/SpvWithdrawalTransactionData.js +143 -143
- package/dist/storage/IStorageManager.d.ts +15 -15
- package/dist/storage/IStorageManager.js +2 -2
- package/dist/storage/StorageObject.d.ts +3 -3
- package/dist/storage/StorageObject.js +2 -2
- package/dist/swaps/ChainSwapType.d.ts +6 -6
- package/dist/swaps/ChainSwapType.js +10 -10
- package/dist/swaps/SwapCommitState.d.ts +39 -38
- package/dist/swaps/SwapCommitState.js +11 -11
- package/dist/swaps/SwapContract.d.ts +479 -467
- package/dist/swaps/SwapContract.js +2 -2
- package/dist/swaps/SwapData.d.ts +37 -36
- package/dist/swaps/SwapData.js +17 -14
- package/dist/utils/BigIntBufferUtils.d.ts +6 -6
- package/dist/utils/BigIntBufferUtils.js +31 -31
- package/package.json +31 -31
- package/src/btc/BitcoinNetwork.ts +6 -6
- package/src/btc/rpc/BitcoinRpc.ts +77 -77
- package/src/btcrelay/BtcRelay.ts +70 -70
- package/src/btcrelay/synchronizer/RelaySynchronizer.ts +17 -17
- package/src/btcrelay/types/BtcBlock.ts +15 -15
- package/src/btcrelay/types/BtcHeader.ts +11 -11
- package/src/btcrelay/types/BtcStoredHeader.ts +12 -12
- package/src/btcrelay/utils/StatePredictorUtils.ts +108 -108
- package/src/chains/ChainData.ts +40 -40
- package/src/chains/ChainInterface.ts +159 -132
- package/src/chains/ChainType.ts +40 -38
- package/src/errors/CannotInitializeATAError.ts +11 -11
- package/src/errors/SignatureVerificationError.ts +11 -11
- package/src/errors/SwapDataVerificationError.ts +11 -11
- package/src/errors/TransactionRevertedError.ts +11 -0
- package/src/events/ChainEvents.ts +13 -13
- package/src/events/types/ChainEvent.ts +10 -10
- package/src/events/types/spv_vault/SpvVaultClaimEvent.ts +31 -31
- package/src/events/types/spv_vault/SpvVaultCloseEvent.ts +17 -17
- package/src/events/types/spv_vault/SpvVaultDepositEvent.ts +17 -17
- package/src/events/types/spv_vault/SpvVaultEvent.ts +25 -25
- package/src/events/types/spv_vault/SpvVaultFrontEvent.ts +27 -27
- package/src/events/types/spv_vault/SpvVaultOpenEvent.ts +16 -16
- package/src/events/types/swap/ClaimEvent.ts +15 -15
- package/src/events/types/swap/InitializeEvent.ts +18 -18
- package/src/events/types/swap/RefundEvent.ts +6 -6
- package/src/events/types/swap/SwapEvent.ts +21 -21
- package/src/index.ts +51 -46
- package/src/lockable/Lockable.ts +30 -30
- package/src/messaging/Messenger.ts +11 -0
- package/src/messaging/messages/Message.ts +25 -0
- package/src/messaging/messages/SwapClaimWitnessMessage.ts +34 -0
- package/src/spv_swap/SpvVaultContract.ts +269 -230
- package/src/spv_swap/SpvVaultData.ts +70 -70
- package/src/spv_swap/SpvWithdrawalState.ts +40 -40
- package/src/spv_swap/SpvWithdrawalTransactionData.ts +169 -169
- package/src/storage/IStorageManager.ts +16 -16
- package/src/storage/StorageObject.ts +6 -6
- package/src/swaps/ChainSwapType.ts +6 -6
- package/src/swaps/SwapCommitState.ts +40 -39
- package/src/swaps/SwapContract.ts +564 -556
- package/src/swaps/SwapData.ts +69 -65
- 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
|
|
116
|
-
*
|
|
117
|
-
* @param
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Returns current
|
|
128
|
-
*
|
|
129
|
-
* @param
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
* @param
|
|
150
|
-
* @param
|
|
151
|
-
*/
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
* @param
|
|
157
|
-
*/
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
* @param
|
|
176
|
-
* @param
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
* @param
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
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
|
+
}
|