@atomiqlabs/chain-starknet 4.0.0-dev.12 → 4.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 (146) hide show
  1. package/LICENSE +201 -201
  2. package/dist/index.d.ts +38 -38
  3. package/dist/index.js +54 -54
  4. package/dist/starknet/StarknetChainType.d.ts +13 -13
  5. package/dist/starknet/StarknetChainType.js +2 -2
  6. package/dist/starknet/StarknetInitializer.d.ts +27 -27
  7. package/dist/starknet/StarknetInitializer.js +69 -69
  8. package/dist/starknet/btcrelay/BtcRelayAbi.d.ts +250 -250
  9. package/dist/starknet/btcrelay/BtcRelayAbi.js +341 -341
  10. package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +186 -186
  11. package/dist/starknet/btcrelay/StarknetBtcRelay.js +379 -379
  12. package/dist/starknet/btcrelay/headers/StarknetBtcHeader.d.ts +31 -31
  13. package/dist/starknet/btcrelay/headers/StarknetBtcHeader.js +74 -74
  14. package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.d.ts +51 -51
  15. package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.js +113 -113
  16. package/dist/starknet/chain/StarknetAction.d.ts +19 -19
  17. package/dist/starknet/chain/StarknetAction.js +73 -73
  18. package/dist/starknet/chain/StarknetChainInterface.d.ts +52 -52
  19. package/dist/starknet/chain/StarknetChainInterface.js +91 -91
  20. package/dist/starknet/chain/StarknetModule.d.ts +14 -14
  21. package/dist/starknet/chain/StarknetModule.js +13 -13
  22. package/dist/starknet/chain/modules/ERC20Abi.d.ts +755 -755
  23. package/dist/starknet/chain/modules/ERC20Abi.js +1032 -1032
  24. package/dist/starknet/chain/modules/StarknetAccounts.d.ts +6 -6
  25. package/dist/starknet/chain/modules/StarknetAccounts.js +24 -24
  26. package/dist/starknet/chain/modules/StarknetAddresses.d.ts +9 -9
  27. package/dist/starknet/chain/modules/StarknetAddresses.js +26 -26
  28. package/dist/starknet/chain/modules/StarknetBlocks.d.ts +20 -20
  29. package/dist/starknet/chain/modules/StarknetBlocks.js +64 -64
  30. package/dist/starknet/chain/modules/StarknetEvents.d.ts +44 -44
  31. package/dist/starknet/chain/modules/StarknetEvents.js +88 -88
  32. package/dist/starknet/chain/modules/StarknetFees.d.ts +77 -77
  33. package/dist/starknet/chain/modules/StarknetFees.js +114 -114
  34. package/dist/starknet/chain/modules/StarknetSignatures.d.ts +29 -29
  35. package/dist/starknet/chain/modules/StarknetSignatures.js +72 -72
  36. package/dist/starknet/chain/modules/StarknetTokens.d.ts +69 -69
  37. package/dist/starknet/chain/modules/StarknetTokens.js +102 -98
  38. package/dist/starknet/chain/modules/StarknetTransactions.d.ts +93 -93
  39. package/dist/starknet/chain/modules/StarknetTransactions.js +261 -260
  40. package/dist/starknet/contract/StarknetContractBase.d.ts +13 -13
  41. package/dist/starknet/contract/StarknetContractBase.js +20 -16
  42. package/dist/starknet/contract/StarknetContractModule.d.ts +8 -8
  43. package/dist/starknet/contract/StarknetContractModule.js +11 -11
  44. package/dist/starknet/contract/modules/StarknetContractEvents.d.ts +51 -51
  45. package/dist/starknet/contract/modules/StarknetContractEvents.js +97 -97
  46. package/dist/starknet/events/StarknetChainEvents.d.ts +21 -21
  47. package/dist/starknet/events/StarknetChainEvents.js +52 -52
  48. package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +89 -90
  49. package/dist/starknet/events/StarknetChainEventsBrowser.js +296 -294
  50. package/dist/starknet/provider/RpcProviderWithRetries.d.ts +21 -21
  51. package/dist/starknet/provider/RpcProviderWithRetries.js +32 -32
  52. package/dist/starknet/spv_swap/SpvVaultContractAbi.d.ts +488 -488
  53. package/dist/starknet/spv_swap/SpvVaultContractAbi.js +656 -656
  54. package/dist/starknet/spv_swap/StarknetSpvVaultContract.d.ts +66 -66
  55. package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +382 -382
  56. package/dist/starknet/spv_swap/StarknetSpvVaultData.d.ts +49 -49
  57. package/dist/starknet/spv_swap/StarknetSpvVaultData.js +145 -145
  58. package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +25 -25
  59. package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +72 -72
  60. package/dist/starknet/swaps/EscrowManagerAbi.d.ts +431 -431
  61. package/dist/starknet/swaps/EscrowManagerAbi.js +583 -583
  62. package/dist/starknet/swaps/StarknetSwapContract.d.ts +191 -191
  63. package/dist/starknet/swaps/StarknetSwapContract.js +424 -424
  64. package/dist/starknet/swaps/StarknetSwapData.d.ts +74 -74
  65. package/dist/starknet/swaps/StarknetSwapData.js +325 -325
  66. package/dist/starknet/swaps/StarknetSwapModule.d.ts +10 -10
  67. package/dist/starknet/swaps/StarknetSwapModule.js +11 -11
  68. package/dist/starknet/swaps/handlers/IHandler.d.ts +13 -13
  69. package/dist/starknet/swaps/handlers/IHandler.js +2 -2
  70. package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +13 -13
  71. package/dist/starknet/swaps/handlers/claim/ClaimHandlers.js +13 -13
  72. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +21 -21
  73. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.js +44 -44
  74. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +24 -24
  75. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +48 -48
  76. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +25 -25
  77. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +40 -40
  78. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +20 -20
  79. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +30 -30
  80. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +45 -45
  81. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +52 -52
  82. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +17 -17
  83. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.js +27 -27
  84. package/dist/starknet/swaps/modules/StarknetLpVault.d.ts +69 -69
  85. package/dist/starknet/swaps/modules/StarknetLpVault.js +122 -122
  86. package/dist/starknet/swaps/modules/StarknetSwapClaim.d.ts +53 -53
  87. package/dist/starknet/swaps/modules/StarknetSwapClaim.js +100 -100
  88. package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +94 -87
  89. package/dist/starknet/swaps/modules/StarknetSwapInit.js +235 -225
  90. package/dist/starknet/swaps/modules/StarknetSwapRefund.d.ts +62 -62
  91. package/dist/starknet/swaps/modules/StarknetSwapRefund.js +128 -128
  92. package/dist/starknet/wallet/StarknetKeypairWallet.d.ts +7 -7
  93. package/dist/starknet/wallet/StarknetKeypairWallet.js +35 -30
  94. package/dist/starknet/wallet/StarknetSigner.d.ts +12 -12
  95. package/dist/starknet/wallet/StarknetSigner.js +47 -46
  96. package/dist/utils/Utils.d.ts +37 -37
  97. package/dist/utils/Utils.js +260 -261
  98. package/package.json +43 -37
  99. package/src/index.ts +47 -47
  100. package/src/starknet/StarknetChainType.ts +28 -28
  101. package/src/starknet/StarknetInitializer.ts +108 -108
  102. package/src/starknet/btcrelay/BtcRelayAbi.ts +338 -338
  103. package/src/starknet/btcrelay/StarknetBtcRelay.ts +494 -494
  104. package/src/starknet/btcrelay/headers/StarknetBtcHeader.ts +100 -100
  105. package/src/starknet/btcrelay/headers/StarknetBtcStoredHeader.ts +141 -141
  106. package/src/starknet/chain/StarknetAction.ts +85 -85
  107. package/src/starknet/chain/StarknetChainInterface.ts +149 -149
  108. package/src/starknet/chain/StarknetModule.ts +19 -19
  109. package/src/starknet/chain/modules/ERC20Abi.ts +1029 -1029
  110. package/src/starknet/chain/modules/StarknetAccounts.ts +25 -25
  111. package/src/starknet/chain/modules/StarknetAddresses.ts +22 -22
  112. package/src/starknet/chain/modules/StarknetBlocks.ts +75 -74
  113. package/src/starknet/chain/modules/StarknetEvents.ts +104 -104
  114. package/src/starknet/chain/modules/StarknetFees.ts +154 -154
  115. package/src/starknet/chain/modules/StarknetSignatures.ts +91 -91
  116. package/src/starknet/chain/modules/StarknetTokens.ts +120 -116
  117. package/src/starknet/chain/modules/StarknetTransactions.ts +285 -283
  118. package/src/starknet/contract/StarknetContractBase.ts +30 -26
  119. package/src/starknet/contract/StarknetContractModule.ts +16 -16
  120. package/src/starknet/contract/modules/StarknetContractEvents.ts +134 -134
  121. package/src/starknet/events/StarknetChainEvents.ts +67 -67
  122. package/src/starknet/events/StarknetChainEventsBrowser.ts +411 -411
  123. package/src/starknet/provider/RpcProviderWithRetries.ts +43 -43
  124. package/src/starknet/spv_swap/SpvVaultContractAbi.ts +656 -656
  125. package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +483 -483
  126. package/src/starknet/spv_swap/StarknetSpvVaultData.ts +195 -195
  127. package/src/starknet/spv_swap/StarknetSpvWithdrawalData.ts +79 -79
  128. package/src/starknet/swaps/EscrowManagerAbi.ts +582 -582
  129. package/src/starknet/swaps/StarknetSwapContract.ts +647 -647
  130. package/src/starknet/swaps/StarknetSwapData.ts +455 -455
  131. package/src/starknet/swaps/StarknetSwapModule.ts +17 -17
  132. package/src/starknet/swaps/handlers/IHandler.ts +20 -20
  133. package/src/starknet/swaps/handlers/claim/ClaimHandlers.ts +23 -23
  134. package/src/starknet/swaps/handlers/claim/HashlockClaimHandler.ts +53 -53
  135. package/src/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +73 -73
  136. package/src/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +67 -67
  137. package/src/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +50 -50
  138. package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +102 -102
  139. package/src/starknet/swaps/handlers/refund/TimelockRefundHandler.ts +38 -38
  140. package/src/starknet/swaps/modules/StarknetLpVault.ts +147 -147
  141. package/src/starknet/swaps/modules/StarknetSwapClaim.ts +141 -141
  142. package/src/starknet/swaps/modules/StarknetSwapInit.ts +300 -287
  143. package/src/starknet/swaps/modules/StarknetSwapRefund.ts +196 -196
  144. package/src/starknet/wallet/StarknetKeypairWallet.ts +44 -39
  145. package/src/starknet/wallet/StarknetSigner.ts +55 -55
  146. package/src/utils/Utils.ts +251 -252
@@ -1,195 +1,195 @@
1
- import {
2
- SpvVaultClaimEvent,
3
- SpvVaultCloseEvent,
4
- SpvVaultData, SpvVaultDepositEvent, SpvVaultOpenEvent,
5
- SpvVaultTokenBalance,
6
- SpvVaultTokenData
7
- } from "@atomiqlabs/base";
8
- import {BigNumberish} from "starknet";
9
- import {toBigInt, toHex} from "../../utils/Utils";
10
- import {Buffer} from "buffer";
11
- import {StarknetSpvWithdrawalData} from "./StarknetSpvWithdrawalData";
12
-
13
-
14
- export type StarknetSpvVaultDataType = {
15
- relay_contract: BigNumberish,
16
- token_0: BigNumberish,
17
- token_1: BigNumberish,
18
- token_0_multiplier: BigNumberish,
19
- token_1_multiplier: BigNumberish,
20
- utxo: Record<number, boolean | object | BigNumberish>,
21
- confirmations: BigNumberish,
22
- withdraw_count: BigNumberish,
23
- deposit_count: BigNumberish,
24
- token_0_amount: BigNumberish,
25
- token_1_amount: BigNumberish
26
- };
27
-
28
- export class StarknetSpvVaultData extends SpvVaultData<StarknetSpvWithdrawalData> {
29
-
30
- readonly owner: string;
31
- readonly vaultId: bigint;
32
-
33
- readonly relayContract: string;
34
- readonly token0: {
35
- token: string,
36
- multiplier: bigint,
37
- rawAmount: bigint
38
- }
39
- readonly token1: {
40
- token: string,
41
- multiplier: bigint,
42
- rawAmount: bigint
43
- };
44
- readonly initialUtxo: string;
45
- utxo: string;
46
- readonly confirmations: number;
47
- withdrawCount: number;
48
- depositCount: number;
49
-
50
- constructor(owner: string, vaultId: bigint, struct: StarknetSpvVaultDataType, initialUtxo?: string);
51
- constructor(serializedObj: any);
52
- constructor(ownerOrObj: string | any, vaultId?: bigint, struct?: StarknetSpvVaultDataType, initialUtxo?: string) {
53
- super();
54
- if(typeof(ownerOrObj) === "string") {
55
- this.owner = ownerOrObj;
56
- this.vaultId = vaultId;
57
- this.relayContract = toHex(struct.relay_contract);
58
- this.token0 = {
59
- token: toHex(struct.token_0),
60
- multiplier: toBigInt(struct.token_0_multiplier),
61
- rawAmount: toBigInt(struct.token_0_amount)
62
- };
63
- this.token1 = {
64
- token: toHex(struct.token_1),
65
- multiplier: toBigInt(struct.token_1_multiplier),
66
- rawAmount: toBigInt(struct.token_1_amount)
67
- };
68
- const txHash = Buffer.from(toBigInt(struct.utxo["0"] as BigNumberish).toString(16).padStart(64, "0"), "hex");
69
- const vout = toBigInt(struct.utxo["1"] as BigNumberish);
70
- this.utxo = txHash.reverse().toString("hex")+":"+vout.toString(10);
71
- this.confirmations = Number(toBigInt(struct.confirmations));
72
- this.withdrawCount = Number(toBigInt(struct.withdraw_count));
73
- this.depositCount = Number(toBigInt(struct.deposit_count));
74
- this.initialUtxo = initialUtxo;
75
- } else {
76
- this.owner = ownerOrObj.owner;
77
- this.vaultId = BigInt(ownerOrObj.vaultId);
78
- this.relayContract = ownerOrObj.relayContract;
79
- this.token0 = {
80
- token: ownerOrObj.token0.token,
81
- multiplier: BigInt(ownerOrObj.token0.multiplier),
82
- rawAmount: BigInt(ownerOrObj.token0.rawAmount)
83
- }
84
- this.token1 = {
85
- token: ownerOrObj.token1.token,
86
- multiplier: BigInt(ownerOrObj.token1.multiplier),
87
- rawAmount: BigInt(ownerOrObj.token1.rawAmount)
88
- };
89
- this.utxo = ownerOrObj.utxo;
90
- this.confirmations = ownerOrObj.confirmations;
91
- this.withdrawCount = ownerOrObj.withdrawCount;
92
- this.depositCount = ownerOrObj.depositCount;
93
- this.initialUtxo = ownerOrObj.initialUtxo;
94
- }
95
- }
96
-
97
- getBalances(): SpvVaultTokenBalance[] {
98
- return [
99
- {...this.token0, scaledAmount: this.token0.rawAmount * this.token0.multiplier},
100
- {...this.token1, scaledAmount: this.token1.rawAmount * this.token1.multiplier}
101
- ];
102
- }
103
-
104
- getConfirmations(): number {
105
- return this.confirmations;
106
- }
107
-
108
- getOwner(): string {
109
- return this.owner;
110
- }
111
-
112
- getTokenData(): SpvVaultTokenData[] {
113
- return [this.token0, this.token1];
114
- }
115
-
116
- getUtxo(): string {
117
- return this.isOpened() ? this.utxo : this.initialUtxo;
118
- }
119
-
120
- getVaultId(): bigint {
121
- return this.vaultId;
122
- }
123
-
124
- getWithdrawalCount(): number {
125
- return this.withdrawCount;
126
- }
127
-
128
- isOpened(): boolean {
129
- return this.utxo!=="0000000000000000000000000000000000000000000000000000000000000000:0";
130
- }
131
-
132
- serialize(): any {
133
- return {
134
- type: "STARKNET",
135
- owner: this.owner,
136
- vaultId: this.vaultId.toString(10),
137
- relayContract: this.relayContract,
138
- token0: {
139
- token: this.token0.token,
140
- multiplier: this.token0.multiplier.toString(10),
141
- rawAmount: this.token0.rawAmount.toString(10)
142
- },
143
- token1: {
144
- token: this.token1.token,
145
- multiplier: this.token1.multiplier.toString(10),
146
- rawAmount: this.token1.rawAmount.toString(10)
147
- },
148
- utxo: this.utxo,
149
- confirmations: this.confirmations,
150
- withdrawCount: this.withdrawCount,
151
- depositCount: this.depositCount,
152
- initialUtxo: this.initialUtxo
153
- }
154
- }
155
-
156
- updateState(withdrawalTxOrEvent: SpvVaultClaimEvent | SpvVaultCloseEvent | SpvVaultOpenEvent | SpvVaultDepositEvent | StarknetSpvWithdrawalData): void {
157
- if(withdrawalTxOrEvent instanceof SpvVaultClaimEvent) {
158
- if(withdrawalTxOrEvent.withdrawCount <= this.withdrawCount) return;
159
- this.token0.rawAmount -= withdrawalTxOrEvent.amounts[0];
160
- this.token1.rawAmount -= withdrawalTxOrEvent.amounts[1];
161
- this.withdrawCount = withdrawalTxOrEvent.withdrawCount;
162
- this.utxo = withdrawalTxOrEvent.btcTxId+":0";
163
- }
164
- if(withdrawalTxOrEvent instanceof SpvVaultCloseEvent) {
165
- this.token0.rawAmount = 0n;
166
- this.token1.rawAmount = 0n;
167
- this.utxo = "0000000000000000000000000000000000000000000000000000000000000000:0";
168
- }
169
- if(withdrawalTxOrEvent instanceof SpvVaultOpenEvent) {
170
- if(this.isOpened()) return;
171
- this.utxo = withdrawalTxOrEvent.btcTxId+":"+withdrawalTxOrEvent.vout;
172
- }
173
- if(withdrawalTxOrEvent instanceof SpvVaultDepositEvent) {
174
- if(withdrawalTxOrEvent.depositCount <= this.depositCount) return;
175
- this.token0.rawAmount += withdrawalTxOrEvent.amounts[0];
176
- this.token1.rawAmount += withdrawalTxOrEvent.amounts[1];
177
- this.depositCount = withdrawalTxOrEvent.depositCount;
178
- }
179
- if(withdrawalTxOrEvent instanceof StarknetSpvWithdrawalData) {
180
- if(withdrawalTxOrEvent.getSpentVaultUtxo()!==this.utxo) return;
181
- const amounts = withdrawalTxOrEvent.getTotalOutput();
182
- this.token0.rawAmount -= amounts[0];
183
- this.token1.rawAmount -= amounts[1];
184
- this.withdrawCount++;
185
- this.utxo = withdrawalTxOrEvent.btcTx.txid+":0";
186
- }
187
- }
188
-
189
- getDepositCount(): number {
190
- return this.depositCount;
191
- }
192
-
193
- }
194
-
195
- SpvVaultData.deserializers["STARKNET"] = StarknetSpvVaultData;
1
+ import {
2
+ SpvVaultClaimEvent,
3
+ SpvVaultCloseEvent,
4
+ SpvVaultData, SpvVaultDepositEvent, SpvVaultOpenEvent,
5
+ SpvVaultTokenBalance,
6
+ SpvVaultTokenData
7
+ } from "@atomiqlabs/base";
8
+ import {BigNumberish} from "starknet";
9
+ import {toBigInt, toHex} from "../../utils/Utils";
10
+ import {Buffer} from "buffer";
11
+ import {StarknetSpvWithdrawalData} from "./StarknetSpvWithdrawalData";
12
+
13
+
14
+ export type StarknetSpvVaultDataType = {
15
+ relay_contract: BigNumberish,
16
+ token_0: BigNumberish,
17
+ token_1: BigNumberish,
18
+ token_0_multiplier: BigNumberish,
19
+ token_1_multiplier: BigNumberish,
20
+ utxo: Record<number, boolean | object | BigNumberish>,
21
+ confirmations: BigNumberish,
22
+ withdraw_count: BigNumberish,
23
+ deposit_count: BigNumberish,
24
+ token_0_amount: BigNumberish,
25
+ token_1_amount: BigNumberish
26
+ };
27
+
28
+ export class StarknetSpvVaultData extends SpvVaultData<StarknetSpvWithdrawalData> {
29
+
30
+ readonly owner: string;
31
+ readonly vaultId: bigint;
32
+
33
+ readonly relayContract: string;
34
+ readonly token0: {
35
+ token: string,
36
+ multiplier: bigint,
37
+ rawAmount: bigint
38
+ }
39
+ readonly token1: {
40
+ token: string,
41
+ multiplier: bigint,
42
+ rawAmount: bigint
43
+ };
44
+ readonly initialUtxo: string;
45
+ utxo: string;
46
+ readonly confirmations: number;
47
+ withdrawCount: number;
48
+ depositCount: number;
49
+
50
+ constructor(owner: string, vaultId: bigint, struct: StarknetSpvVaultDataType, initialUtxo?: string);
51
+ constructor(serializedObj: any);
52
+ constructor(ownerOrObj: string | any, vaultId?: bigint, struct?: StarknetSpvVaultDataType, initialUtxo?: string) {
53
+ super();
54
+ if(typeof(ownerOrObj) === "string") {
55
+ this.owner = ownerOrObj;
56
+ this.vaultId = vaultId;
57
+ this.relayContract = toHex(struct.relay_contract);
58
+ this.token0 = {
59
+ token: toHex(struct.token_0),
60
+ multiplier: toBigInt(struct.token_0_multiplier),
61
+ rawAmount: toBigInt(struct.token_0_amount)
62
+ };
63
+ this.token1 = {
64
+ token: toHex(struct.token_1),
65
+ multiplier: toBigInt(struct.token_1_multiplier),
66
+ rawAmount: toBigInt(struct.token_1_amount)
67
+ };
68
+ const txHash = Buffer.from(toBigInt(struct.utxo["0"] as BigNumberish).toString(16).padStart(64, "0"), "hex");
69
+ const vout = toBigInt(struct.utxo["1"] as BigNumberish);
70
+ this.utxo = txHash.reverse().toString("hex")+":"+vout.toString(10);
71
+ this.confirmations = Number(toBigInt(struct.confirmations));
72
+ this.withdrawCount = Number(toBigInt(struct.withdraw_count));
73
+ this.depositCount = Number(toBigInt(struct.deposit_count));
74
+ this.initialUtxo = initialUtxo;
75
+ } else {
76
+ this.owner = ownerOrObj.owner;
77
+ this.vaultId = BigInt(ownerOrObj.vaultId);
78
+ this.relayContract = ownerOrObj.relayContract;
79
+ this.token0 = {
80
+ token: ownerOrObj.token0.token,
81
+ multiplier: BigInt(ownerOrObj.token0.multiplier),
82
+ rawAmount: BigInt(ownerOrObj.token0.rawAmount)
83
+ }
84
+ this.token1 = {
85
+ token: ownerOrObj.token1.token,
86
+ multiplier: BigInt(ownerOrObj.token1.multiplier),
87
+ rawAmount: BigInt(ownerOrObj.token1.rawAmount)
88
+ };
89
+ this.utxo = ownerOrObj.utxo;
90
+ this.confirmations = ownerOrObj.confirmations;
91
+ this.withdrawCount = ownerOrObj.withdrawCount;
92
+ this.depositCount = ownerOrObj.depositCount;
93
+ this.initialUtxo = ownerOrObj.initialUtxo;
94
+ }
95
+ }
96
+
97
+ getBalances(): SpvVaultTokenBalance[] {
98
+ return [
99
+ {...this.token0, scaledAmount: this.token0.rawAmount * this.token0.multiplier},
100
+ {...this.token1, scaledAmount: this.token1.rawAmount * this.token1.multiplier}
101
+ ];
102
+ }
103
+
104
+ getConfirmations(): number {
105
+ return this.confirmations;
106
+ }
107
+
108
+ getOwner(): string {
109
+ return this.owner;
110
+ }
111
+
112
+ getTokenData(): SpvVaultTokenData[] {
113
+ return [this.token0, this.token1];
114
+ }
115
+
116
+ getUtxo(): string {
117
+ return this.isOpened() ? this.utxo : this.initialUtxo;
118
+ }
119
+
120
+ getVaultId(): bigint {
121
+ return this.vaultId;
122
+ }
123
+
124
+ getWithdrawalCount(): number {
125
+ return this.withdrawCount;
126
+ }
127
+
128
+ isOpened(): boolean {
129
+ return this.utxo!=="0000000000000000000000000000000000000000000000000000000000000000:0";
130
+ }
131
+
132
+ serialize(): any {
133
+ return {
134
+ type: "STARKNET",
135
+ owner: this.owner,
136
+ vaultId: this.vaultId.toString(10),
137
+ relayContract: this.relayContract,
138
+ token0: {
139
+ token: this.token0.token,
140
+ multiplier: this.token0.multiplier.toString(10),
141
+ rawAmount: this.token0.rawAmount.toString(10)
142
+ },
143
+ token1: {
144
+ token: this.token1.token,
145
+ multiplier: this.token1.multiplier.toString(10),
146
+ rawAmount: this.token1.rawAmount.toString(10)
147
+ },
148
+ utxo: this.utxo,
149
+ confirmations: this.confirmations,
150
+ withdrawCount: this.withdrawCount,
151
+ depositCount: this.depositCount,
152
+ initialUtxo: this.initialUtxo
153
+ }
154
+ }
155
+
156
+ updateState(withdrawalTxOrEvent: SpvVaultClaimEvent | SpvVaultCloseEvent | SpvVaultOpenEvent | SpvVaultDepositEvent | StarknetSpvWithdrawalData): void {
157
+ if(withdrawalTxOrEvent instanceof SpvVaultClaimEvent) {
158
+ if(withdrawalTxOrEvent.withdrawCount <= this.withdrawCount) return;
159
+ this.token0.rawAmount -= withdrawalTxOrEvent.amounts[0];
160
+ this.token1.rawAmount -= withdrawalTxOrEvent.amounts[1];
161
+ this.withdrawCount = withdrawalTxOrEvent.withdrawCount;
162
+ this.utxo = withdrawalTxOrEvent.btcTxId+":0";
163
+ }
164
+ if(withdrawalTxOrEvent instanceof SpvVaultCloseEvent) {
165
+ this.token0.rawAmount = 0n;
166
+ this.token1.rawAmount = 0n;
167
+ this.utxo = "0000000000000000000000000000000000000000000000000000000000000000:0";
168
+ }
169
+ if(withdrawalTxOrEvent instanceof SpvVaultOpenEvent) {
170
+ if(this.isOpened()) return;
171
+ this.utxo = withdrawalTxOrEvent.btcTxId+":"+withdrawalTxOrEvent.vout;
172
+ }
173
+ if(withdrawalTxOrEvent instanceof SpvVaultDepositEvent) {
174
+ if(withdrawalTxOrEvent.depositCount <= this.depositCount) return;
175
+ this.token0.rawAmount += withdrawalTxOrEvent.amounts[0];
176
+ this.token1.rawAmount += withdrawalTxOrEvent.amounts[1];
177
+ this.depositCount = withdrawalTxOrEvent.depositCount;
178
+ }
179
+ if(withdrawalTxOrEvent instanceof StarknetSpvWithdrawalData) {
180
+ if(withdrawalTxOrEvent.getSpentVaultUtxo()!==this.utxo) return;
181
+ const amounts = withdrawalTxOrEvent.getTotalOutput();
182
+ this.token0.rawAmount -= amounts[0];
183
+ this.token1.rawAmount -= amounts[1];
184
+ this.withdrawCount++;
185
+ this.utxo = withdrawalTxOrEvent.btcTx.txid+":0";
186
+ }
187
+ }
188
+
189
+ getDepositCount(): number {
190
+ return this.depositCount;
191
+ }
192
+
193
+ }
194
+
195
+ SpvVaultData.deserializers["STARKNET"] = StarknetSpvVaultData;
@@ -1,79 +1,79 @@
1
- import {BigIntBufferUtils, SpvWithdrawalTransactionData} from "@atomiqlabs/base";
2
- import {Buffer} from "buffer";
3
- import {BigNumberish, cairo, hash} from "starknet";
4
- import {toBigInt} from "../../utils/Utils";
5
- import {StarknetSpvVaultContract} from "./StarknetSpvVaultContract";
6
-
7
-
8
- export class StarknetSpvWithdrawalData extends SpvWithdrawalTransactionData {
9
-
10
- protected fromOpReturnData(data: Buffer): { recipient: string; rawAmounts: bigint[]; executionHash: string } {
11
- return StarknetSpvVaultContract.fromOpReturnData(data);
12
- }
13
-
14
- isRecipient(address: string): boolean {
15
- return this.getRecipient().toLowerCase()===address.toLowerCase();
16
- }
17
-
18
- getTxHash(): bigint {
19
- return BigInt("0x"+Buffer.from(this.btcTx.txid, "hex").reverse().toString("hex"));
20
- }
21
-
22
- getFrontingAmount(): bigint[] {
23
- return [this.rawAmounts[0] + this.getExecutionFee()[0], this.rawAmounts[1]];
24
- }
25
-
26
- serialize(): any {
27
- return {
28
- type: "STARKNET",
29
- ...super.serialize()
30
- };
31
- }
32
-
33
- serializeToStruct() {
34
- const callerFee = this.getCallerFee();
35
- const frontingFee = this.getFrontingFee();
36
- const executionFee = this.getExecutionFee();
37
- return {
38
- recipient: this.recipient,
39
- amount: cairo.tuple(this.rawAmounts[0], this.rawAmounts[1]),
40
- caller_fee: cairo.tuple(callerFee[0], callerFee[1]),
41
- fronting_fee: cairo.tuple(frontingFee[0], frontingFee[1]),
42
- execution_handler_fee_amount_0: executionFee[0],
43
- execution_hash: toBigInt(this.executionHash) ?? 0n,
44
- execution_expiry: BigInt(this.executionExpiry)
45
- }
46
- }
47
-
48
- serializeToFelts(): BigNumberish[] {
49
- const callerFee = this.getCallerFee();
50
- const frontingFee = this.getFrontingFee();
51
- const executionFee = this.getExecutionFee();
52
- return [
53
- this.recipient,
54
- this.rawAmounts[0],
55
- this.rawAmounts[1],
56
- callerFee[0],
57
- callerFee[1],
58
- frontingFee[0],
59
- frontingFee[1],
60
- executionFee[0],
61
- toBigInt(this.executionHash) ?? 0n,
62
- BigInt(this.executionExpiry)
63
- ]
64
- }
65
-
66
- getFrontingId(): string {
67
- const txHashU256 = cairo.uint256(BigIntBufferUtils.fromBuffer(Buffer.from(this.btcTx.txid), "le"));
68
- let frontingId = hash.computePoseidonHashOnElements([
69
- txHashU256.low,
70
- txHashU256.high,
71
- ...this.serializeToFelts()
72
- ]);
73
- if(frontingId.startsWith("0x")) frontingId = frontingId.slice(2);
74
- return frontingId.padStart(64, "0");
75
- }
76
-
77
- }
78
-
79
- SpvWithdrawalTransactionData.deserializers["STARKNET"] = StarknetSpvWithdrawalData;
1
+ import {BigIntBufferUtils, SpvWithdrawalTransactionData} from "@atomiqlabs/base";
2
+ import {Buffer} from "buffer";
3
+ import {BigNumberish, cairo, hash} from "starknet";
4
+ import {toBigInt} from "../../utils/Utils";
5
+ import {StarknetSpvVaultContract} from "./StarknetSpvVaultContract";
6
+
7
+
8
+ export class StarknetSpvWithdrawalData extends SpvWithdrawalTransactionData {
9
+
10
+ protected fromOpReturnData(data: Buffer): { recipient: string; rawAmounts: bigint[]; executionHash: string } {
11
+ return StarknetSpvVaultContract.fromOpReturnData(data);
12
+ }
13
+
14
+ isRecipient(address: string): boolean {
15
+ return this.getRecipient().toLowerCase()===address.toLowerCase();
16
+ }
17
+
18
+ getTxHash(): bigint {
19
+ return BigInt("0x"+Buffer.from(this.btcTx.txid, "hex").reverse().toString("hex"));
20
+ }
21
+
22
+ getFrontingAmount(): bigint[] {
23
+ return [this.rawAmounts[0] + this.getExecutionFee()[0], this.rawAmounts[1]];
24
+ }
25
+
26
+ serialize(): any {
27
+ return {
28
+ type: "STARKNET",
29
+ ...super.serialize()
30
+ };
31
+ }
32
+
33
+ serializeToStruct() {
34
+ const callerFee = this.getCallerFee();
35
+ const frontingFee = this.getFrontingFee();
36
+ const executionFee = this.getExecutionFee();
37
+ return {
38
+ recipient: this.recipient,
39
+ amount: cairo.tuple(this.rawAmounts[0], this.rawAmounts[1]),
40
+ caller_fee: cairo.tuple(callerFee[0], callerFee[1]),
41
+ fronting_fee: cairo.tuple(frontingFee[0], frontingFee[1]),
42
+ execution_handler_fee_amount_0: executionFee[0],
43
+ execution_hash: toBigInt(this.executionHash) ?? 0n,
44
+ execution_expiry: BigInt(this.executionExpiry)
45
+ }
46
+ }
47
+
48
+ serializeToFelts(): BigNumberish[] {
49
+ const callerFee = this.getCallerFee();
50
+ const frontingFee = this.getFrontingFee();
51
+ const executionFee = this.getExecutionFee();
52
+ return [
53
+ this.recipient,
54
+ this.rawAmounts[0],
55
+ this.rawAmounts[1],
56
+ callerFee[0],
57
+ callerFee[1],
58
+ frontingFee[0],
59
+ frontingFee[1],
60
+ executionFee[0],
61
+ toBigInt(this.executionHash) ?? 0n,
62
+ BigInt(this.executionExpiry)
63
+ ]
64
+ }
65
+
66
+ getFrontingId(): string {
67
+ const txHashU256 = cairo.uint256(BigIntBufferUtils.fromBuffer(Buffer.from(this.btcTx.txid), "le"));
68
+ let frontingId = hash.computePoseidonHashOnElements([
69
+ txHashU256.low,
70
+ txHashU256.high,
71
+ ...this.serializeToFelts()
72
+ ]);
73
+ if(frontingId.startsWith("0x")) frontingId = frontingId.slice(2);
74
+ return frontingId.padStart(64, "0");
75
+ }
76
+
77
+ }
78
+
79
+ SpvWithdrawalTransactionData.deserializers["STARKNET"] = StarknetSpvWithdrawalData;