@atomiqlabs/chain-starknet 1.0.8 → 2.0.0-beta.0
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/dist/index.d.ts +13 -9
- package/dist/index.js +13 -9
- package/dist/starknet/StarknetChainType.d.ts +6 -2
- package/dist/starknet/StarknetInitializer.d.ts +3 -2
- package/dist/starknet/StarknetInitializer.js +17 -6
- package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +28 -7
- package/dist/starknet/btcrelay/StarknetBtcRelay.js +75 -20
- package/dist/starknet/{base → chain}/StarknetAction.d.ts +2 -2
- package/dist/starknet/chain/StarknetChainInterface.d.ts +52 -0
- package/dist/starknet/chain/StarknetChainInterface.js +91 -0
- package/dist/starknet/{base → chain}/StarknetModule.d.ts +3 -3
- package/dist/starknet/{base → chain}/modules/StarknetAddresses.d.ts +1 -1
- package/dist/starknet/{base → chain}/modules/StarknetAddresses.js +1 -1
- package/dist/starknet/{base → chain}/modules/StarknetSignatures.d.ts +2 -2
- package/dist/starknet/{base → chain}/modules/StarknetTokens.js +2 -1
- package/dist/starknet/{base → chain}/modules/StarknetTransactions.d.ts +7 -1
- package/dist/starknet/{base → chain}/modules/StarknetTransactions.js +45 -16
- package/dist/starknet/contract/StarknetContractBase.d.ts +5 -5
- package/dist/starknet/contract/StarknetContractBase.js +5 -7
- package/dist/starknet/contract/StarknetContractModule.d.ts +8 -0
- package/dist/starknet/contract/StarknetContractModule.js +11 -0
- package/dist/starknet/contract/modules/StarknetContractEvents.d.ts +15 -4
- package/dist/starknet/contract/modules/StarknetContractEvents.js +26 -6
- package/dist/starknet/events/StarknetChainEvents.d.ts +3 -1
- package/dist/starknet/events/StarknetChainEvents.js +9 -9
- package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +24 -6
- package/dist/starknet/events/StarknetChainEventsBrowser.js +116 -28
- package/dist/starknet/provider/RpcProviderWithRetries.d.ts +21 -0
- package/dist/starknet/provider/RpcProviderWithRetries.js +32 -0
- package/dist/starknet/spv_swap/SpvVaultContractAbi.d.ts +488 -0
- package/dist/starknet/spv_swap/SpvVaultContractAbi.js +656 -0
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.d.ts +65 -0
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +372 -0
- package/dist/starknet/spv_swap/StarknetSpvVaultData.d.ts +49 -0
- package/dist/starknet/spv_swap/StarknetSpvVaultData.js +144 -0
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +24 -0
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +61 -0
- package/dist/starknet/swaps/StarknetSwapContract.d.ts +4 -22
- package/dist/starknet/swaps/StarknetSwapContract.js +23 -80
- package/dist/starknet/swaps/StarknetSwapModule.d.ts +6 -5
- package/dist/starknet/swaps/StarknetSwapModule.js +5 -6
- package/dist/starknet/swaps/handlers/IHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +2 -21
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +7 -41
- package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +2 -2
- package/dist/starknet/swaps/modules/StarknetLpVault.d.ts +1 -1
- package/dist/starknet/swaps/modules/StarknetLpVault.js +9 -9
- package/dist/starknet/swaps/modules/StarknetSwapClaim.d.ts +1 -1
- package/dist/starknet/swaps/modules/StarknetSwapClaim.js +8 -8
- package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +1 -1
- package/dist/starknet/swaps/modules/StarknetSwapInit.js +9 -9
- package/dist/starknet/swaps/modules/StarknetSwapRefund.d.ts +1 -3
- package/dist/starknet/swaps/modules/StarknetSwapRefund.js +8 -11
- package/dist/starknet/wallet/StarknetSigner.js +1 -1
- package/dist/utils/Utils.d.ts +2 -2
- package/dist/utils/Utils.js +3 -1
- package/package.json +2 -2
- package/src/index.ts +15 -9
- package/src/starknet/StarknetChainType.ts +10 -2
- package/src/starknet/StarknetInitializer.ts +23 -7
- package/src/starknet/btcrelay/StarknetBtcRelay.ts +104 -30
- package/src/starknet/{base → chain}/StarknetAction.ts +3 -3
- package/src/starknet/chain/StarknetChainInterface.ts +149 -0
- package/src/starknet/{base → chain}/StarknetModule.ts +3 -3
- package/src/starknet/{base → chain}/modules/StarknetAddresses.ts +1 -1
- package/src/starknet/{base → chain}/modules/StarknetSignatures.ts +2 -2
- package/src/starknet/{base → chain}/modules/StarknetTokens.ts +2 -1
- package/src/starknet/{base → chain}/modules/StarknetTransactions.ts +43 -18
- package/src/starknet/contract/StarknetContractBase.ts +9 -12
- package/src/starknet/contract/StarknetContractModule.ts +16 -0
- package/src/starknet/contract/modules/StarknetContractEvents.ts +33 -7
- package/src/starknet/events/StarknetChainEvents.ts +15 -11
- package/src/starknet/events/StarknetChainEventsBrowser.ts +168 -41
- package/src/starknet/provider/RpcProviderWithRetries.ts +43 -0
- package/src/starknet/spv_swap/SpvVaultContractAbi.ts +656 -0
- package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +475 -0
- package/src/starknet/spv_swap/StarknetSpvVaultData.ts +194 -0
- package/src/starknet/spv_swap/StarknetSpvWithdrawalData.ts +68 -0
- package/src/starknet/swaps/StarknetSwapContract.ts +28 -116
- package/src/starknet/swaps/StarknetSwapModule.ts +8 -8
- package/src/starknet/swaps/handlers/IHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/ClaimHandlers.ts +1 -1
- package/src/starknet/swaps/handlers/claim/HashlockClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +12 -61
- package/src/starknet/swaps/handlers/refund/TimelockRefundHandler.ts +2 -2
- package/src/starknet/swaps/modules/StarknetLpVault.ts +10 -10
- package/src/starknet/swaps/modules/StarknetSwapClaim.ts +9 -9
- package/src/starknet/swaps/modules/StarknetSwapInit.ts +10 -10
- package/src/starknet/swaps/modules/StarknetSwapRefund.ts +9 -13
- package/src/starknet/wallet/StarknetSigner.ts +1 -1
- package/src/utils/Utils.ts +4 -3
- package/dist/starknet/base/StarknetBase.d.ts +0 -34
- package/dist/starknet/base/StarknetBase.js +0 -29
- package/src/starknet/base/StarknetBase.ts +0 -56
- /package/dist/starknet/{base → chain}/StarknetAction.js +0 -0
- /package/dist/starknet/{base → chain}/StarknetModule.js +0 -0
- /package/dist/starknet/{base → chain}/modules/ERC20Abi.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/ERC20Abi.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetAccounts.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetAccounts.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetBlocks.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetBlocks.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetEvents.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetEvents.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetFees.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetFees.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetSignatures.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetTokens.d.ts +0 -0
- /package/src/starknet/{base → chain}/modules/ERC20Abi.ts +0 -0
- /package/src/starknet/{base → chain}/modules/StarknetAccounts.ts +0 -0
- /package/src/starknet/{base → chain}/modules/StarknetBlocks.ts +0 -0
- /package/src/starknet/{base → chain}/modules/StarknetEvents.ts +0 -0
- /package/src/starknet/{base → chain}/modules/StarknetFees.ts +0 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import {SpvWithdrawalTransactionData} from "@atomiqlabs/base";
|
|
2
|
+
import {Buffer} from "buffer";
|
|
3
|
+
import {BigNumberish, cairo} 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
|
+
}
|
|
67
|
+
|
|
68
|
+
SpvWithdrawalTransactionData.deserializers["STARKNET"] = StarknetSpvWithdrawalData;
|
|
@@ -11,16 +11,14 @@ import {
|
|
|
11
11
|
import {Buffer} from "buffer";
|
|
12
12
|
import {EscrowManagerAbi} from "./EscrowManagerAbi";
|
|
13
13
|
import {StarknetContractBase} from "../contract/StarknetContractBase";
|
|
14
|
-
import {StarknetTx} from "../
|
|
14
|
+
import {StarknetTx} from "../chain/modules/StarknetTransactions";
|
|
15
15
|
import {StarknetSigner} from "../wallet/StarknetSigner";
|
|
16
|
-
import {BigNumberish, constants
|
|
17
|
-
import {
|
|
18
|
-
import {StarknetFees} from "../base/modules/StarknetFees";
|
|
16
|
+
import {BigNumberish, constants} from "starknet";
|
|
17
|
+
import {StarknetChainInterface} from "../chain/StarknetChainInterface";
|
|
19
18
|
import {StarknetBtcRelay} from "../btcrelay/StarknetBtcRelay";
|
|
20
19
|
import {StarknetSwapData} from "./StarknetSwapData";
|
|
21
20
|
import {bigNumberishToBuffer, toHex} from "../../utils/Utils";
|
|
22
21
|
import {TimelockRefundHandler} from "./handlers/refund/TimelockRefundHandler";
|
|
23
|
-
import {StarknetKeypairWallet} from "../wallet/StarknetKeypairWallet";
|
|
24
22
|
import {StarknetLpVault} from "./modules/StarknetLpVault";
|
|
25
23
|
import {StarknetPreFetchVerification, StarknetSwapInit} from "./modules/StarknetSwapInit";
|
|
26
24
|
import {StarknetSwapRefund} from "./modules/StarknetSwapRefund";
|
|
@@ -105,12 +103,9 @@ export class StarknetSwapContract
|
|
|
105
103
|
readonly btcRelay: StarknetBtcRelay<any>;
|
|
106
104
|
|
|
107
105
|
constructor(
|
|
108
|
-
|
|
109
|
-
provider: Provider,
|
|
106
|
+
chainInterface: StarknetChainInterface,
|
|
110
107
|
btcRelay: StarknetBtcRelay<any>,
|
|
111
|
-
contractAddress: string = swapContractAddreses[
|
|
112
|
-
retryPolicy?: StarknetRetryPolicy,
|
|
113
|
-
solanaFeeEstimator: StarknetFees = new StarknetFees(provider),
|
|
108
|
+
contractAddress: string = swapContractAddreses[chainInterface.starknetChainId],
|
|
114
109
|
handlerAddresses?: {
|
|
115
110
|
refund?: {
|
|
116
111
|
timelock?: string
|
|
@@ -120,19 +115,19 @@ export class StarknetSwapContract
|
|
|
120
115
|
}
|
|
121
116
|
}
|
|
122
117
|
) {
|
|
123
|
-
super(
|
|
124
|
-
this.Init = new StarknetSwapInit(this);
|
|
125
|
-
this.Refund = new StarknetSwapRefund(this);
|
|
126
|
-
this.Claim = new StarknetSwapClaim(this);
|
|
127
|
-
this.LpVault = new StarknetLpVault(this);
|
|
118
|
+
super(chainInterface, contractAddress, EscrowManagerAbi);
|
|
119
|
+
this.Init = new StarknetSwapInit(chainInterface, this);
|
|
120
|
+
this.Refund = new StarknetSwapRefund(chainInterface, this);
|
|
121
|
+
this.Claim = new StarknetSwapClaim(chainInterface, this);
|
|
122
|
+
this.LpVault = new StarknetLpVault(chainInterface, this);
|
|
128
123
|
|
|
129
124
|
this.btcRelay = btcRelay;
|
|
130
125
|
|
|
131
126
|
handlerAddresses ??= {};
|
|
132
127
|
handlerAddresses.refund ??= {};
|
|
133
|
-
handlerAddresses.refund = {...defaultRefundAddresses[
|
|
128
|
+
handlerAddresses.refund = {...defaultRefundAddresses[chainInterface.starknetChainId], ...handlerAddresses.refund};
|
|
134
129
|
handlerAddresses.claim ??= {};
|
|
135
|
-
handlerAddresses.claim = {...defaultClaimAddresses[
|
|
130
|
+
handlerAddresses.claim = {...defaultClaimAddresses[chainInterface.starknetChainId], ...handlerAddresses.claim};
|
|
136
131
|
|
|
137
132
|
claimHandlersList.forEach(handlerCtor => {
|
|
138
133
|
const handler = new handlerCtor(handlerAddresses.claim[handlerCtor.type]);
|
|
@@ -178,11 +173,11 @@ export class StarknetSwapContract
|
|
|
178
173
|
}
|
|
179
174
|
|
|
180
175
|
getDataSignature(signer: StarknetSigner, data: Buffer): Promise<string> {
|
|
181
|
-
return this.Signatures.getDataSignature(signer, data);
|
|
176
|
+
return this.Chain.Signatures.getDataSignature(signer, data);
|
|
182
177
|
}
|
|
183
178
|
|
|
184
179
|
isValidDataSignature(data: Buffer, signature: string, publicKey: string): Promise<boolean> {
|
|
185
|
-
return this.Signatures.isValidDataSignature(data, signature, publicKey);
|
|
180
|
+
return this.Chain.Signatures.isValidDataSignature(data, signature, publicKey);
|
|
186
181
|
}
|
|
187
182
|
|
|
188
183
|
////////////////////////////////////////////
|
|
@@ -358,7 +353,7 @@ export class StarknetSwapContract
|
|
|
358
353
|
payOut: boolean,
|
|
359
354
|
securityDeposit: bigint,
|
|
360
355
|
claimerBounty: bigint,
|
|
361
|
-
depositToken: string = this.Tokens.getNativeCurrencyAddress()
|
|
356
|
+
depositToken: string = this.Chain.Tokens.getNativeCurrencyAddress()
|
|
362
357
|
): Promise<StarknetSwapData> {
|
|
363
358
|
return Promise.resolve(new StarknetSwapData(
|
|
364
359
|
offerer,
|
|
@@ -383,11 +378,11 @@ export class StarknetSwapContract
|
|
|
383
378
|
|
|
384
379
|
////////////////////////////////////////////
|
|
385
380
|
//// Utils
|
|
386
|
-
async getBalance(signer: string, tokenAddress: string, inContract
|
|
381
|
+
async getBalance(signer: string, tokenAddress: string, inContract?: boolean): Promise<bigint> {
|
|
387
382
|
if(inContract) return await this.getIntermediaryBalance(signer, tokenAddress);
|
|
388
383
|
|
|
389
384
|
//TODO: For native token we should discount the cost of deploying an account if it is not deployed yet
|
|
390
|
-
return await this.
|
|
385
|
+
return await this.Chain.getBalance(signer, tokenAddress);
|
|
391
386
|
}
|
|
392
387
|
|
|
393
388
|
getIntermediaryData(address: string, token: string): Promise<{
|
|
@@ -405,14 +400,6 @@ export class StarknetSwapContract
|
|
|
405
400
|
return this.LpVault.getIntermediaryBalance(address, token);
|
|
406
401
|
}
|
|
407
402
|
|
|
408
|
-
isValidAddress(address: string): boolean {
|
|
409
|
-
return this.Addresses.isValidAddress(address);
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
getNativeCurrencyAddress(): string {
|
|
413
|
-
return this.Tokens.getNativeCurrencyAddress();
|
|
414
|
-
}
|
|
415
|
-
|
|
416
403
|
////////////////////////////////////////////
|
|
417
404
|
//// Transaction initializers
|
|
418
405
|
async txsClaimWithSecret(
|
|
@@ -470,10 +457,6 @@ export class StarknetSwapContract
|
|
|
470
457
|
return this.LpVault.txsDeposit(signer, token, amount, feeRate);
|
|
471
458
|
}
|
|
472
459
|
|
|
473
|
-
txsTransfer(signer: string, token: string, amount: bigint, dstAddress: string, feeRate?: string): Promise<StarknetTx[]> {
|
|
474
|
-
return this.Tokens.txsTransfer(signer, token, amount, dstAddress, feeRate);
|
|
475
|
-
}
|
|
476
|
-
|
|
477
460
|
////////////////////////////////////////////
|
|
478
461
|
//// Executors
|
|
479
462
|
async claimWithSecret(
|
|
@@ -485,7 +468,7 @@ export class StarknetSwapContract
|
|
|
485
468
|
txOptions?: TransactionConfirmationOptions
|
|
486
469
|
): Promise<string> {
|
|
487
470
|
const result = await this.Claim.txsClaimWithSecret(signer.getAddress(), swapData, secret, checkExpiry, txOptions?.feeRate);
|
|
488
|
-
const [signature] = await this.
|
|
471
|
+
const [signature] = await this.Chain.sendAndConfirm(signer, result, txOptions?.waitForConfirmation, txOptions?.abortSignal);
|
|
489
472
|
return signature;
|
|
490
473
|
}
|
|
491
474
|
|
|
@@ -507,7 +490,7 @@ export class StarknetSwapContract
|
|
|
507
490
|
if(txs===null) throw new Error("Btc relay not synchronized to required blockheight!");
|
|
508
491
|
|
|
509
492
|
//TODO: This doesn't return proper tx signature
|
|
510
|
-
const [signature] = await this.
|
|
493
|
+
const [signature] = await this.Chain.sendAndConfirm(signer, txs, txOptions?.waitForConfirmation, txOptions?.abortSignal);
|
|
511
494
|
|
|
512
495
|
return signature;
|
|
513
496
|
}
|
|
@@ -521,7 +504,7 @@ export class StarknetSwapContract
|
|
|
521
504
|
): Promise<string> {
|
|
522
505
|
let result = await this.txsRefund(signer.getAddress(), swapData, check, initAta, txOptions?.feeRate);
|
|
523
506
|
|
|
524
|
-
const [signature] = await this.
|
|
507
|
+
const [signature] = await this.Chain.sendAndConfirm(signer, result, txOptions?.waitForConfirmation, txOptions?.abortSignal);
|
|
525
508
|
|
|
526
509
|
return signature;
|
|
527
510
|
}
|
|
@@ -536,7 +519,7 @@ export class StarknetSwapContract
|
|
|
536
519
|
): Promise<string> {
|
|
537
520
|
let result = await this.txsRefundWithAuthorization(signer.getAddress(), swapData, signature, check, initAta, txOptions?.feeRate);
|
|
538
521
|
|
|
539
|
-
const [txSignature] = await this.
|
|
522
|
+
const [txSignature] = await this.Chain.sendAndConfirm(signer, result, txOptions?.waitForConfirmation, txOptions?.abortSignal);
|
|
540
523
|
|
|
541
524
|
return txSignature;
|
|
542
525
|
}
|
|
@@ -556,7 +539,7 @@ export class StarknetSwapContract
|
|
|
556
539
|
|
|
557
540
|
let result = await this.txsInit(swapData, signature, skipChecks, txOptions?.feeRate);
|
|
558
541
|
|
|
559
|
-
const [txSignature] = await this.
|
|
542
|
+
const [txSignature] = await this.Chain.sendAndConfirm(signer, result, txOptions?.waitForConfirmation, txOptions?.abortSignal);
|
|
560
543
|
|
|
561
544
|
return txSignature;
|
|
562
545
|
}
|
|
@@ -568,7 +551,7 @@ export class StarknetSwapContract
|
|
|
568
551
|
txOptions?: TransactionConfirmationOptions
|
|
569
552
|
): Promise<string> {
|
|
570
553
|
const txs = await this.LpVault.txsWithdraw(signer.getAddress(), token, amount, txOptions?.feeRate);
|
|
571
|
-
const [txId] = await this.
|
|
554
|
+
const [txId] = await this.Chain.sendAndConfirm(signer, txs, txOptions?.waitForConfirmation, txOptions?.abortSignal, false);
|
|
572
555
|
return txId;
|
|
573
556
|
}
|
|
574
557
|
|
|
@@ -579,67 +562,26 @@ export class StarknetSwapContract
|
|
|
579
562
|
txOptions?: TransactionConfirmationOptions
|
|
580
563
|
): Promise<string> {
|
|
581
564
|
const txs = await this.LpVault.txsDeposit(signer.getAddress(), token, amount, txOptions?.feeRate);
|
|
582
|
-
const [txId] = await this.
|
|
583
|
-
return txId;
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
async transfer(
|
|
587
|
-
signer: StarknetSigner,
|
|
588
|
-
token: string,
|
|
589
|
-
amount: bigint,
|
|
590
|
-
dstAddress: string,
|
|
591
|
-
txOptions?: TransactionConfirmationOptions
|
|
592
|
-
): Promise<string> {
|
|
593
|
-
const txs = await this.Tokens.txsTransfer(signer.getAddress(), token, amount, dstAddress, txOptions?.feeRate);
|
|
594
|
-
const [txId] = await this.Transactions.sendAndConfirm(signer, txs, txOptions?.waitForConfirmation, txOptions?.abortSignal, false);
|
|
565
|
+
const [txId] = await this.Chain.sendAndConfirm(signer, txs, txOptions?.waitForConfirmation, txOptions?.abortSignal, false);
|
|
595
566
|
return txId;
|
|
596
567
|
}
|
|
597
568
|
|
|
598
|
-
////////////////////////////////////////////
|
|
599
|
-
//// Transactions
|
|
600
|
-
sendAndConfirm(
|
|
601
|
-
signer: StarknetSigner,
|
|
602
|
-
txs: StarknetTx[],
|
|
603
|
-
waitForConfirmation?: boolean,
|
|
604
|
-
abortSignal?: AbortSignal,
|
|
605
|
-
parallel?: boolean,
|
|
606
|
-
onBeforePublish?: (txId: string, rawTx: string) => Promise<void>
|
|
607
|
-
): Promise<string[]> {
|
|
608
|
-
return this.Transactions.sendAndConfirm(signer, txs, waitForConfirmation, abortSignal, parallel, onBeforePublish);
|
|
609
|
-
}
|
|
610
|
-
|
|
611
|
-
serializeTx(tx: StarknetTx): Promise<string> {
|
|
612
|
-
return this.Transactions.serializeTx(tx);
|
|
613
|
-
}
|
|
614
|
-
|
|
615
|
-
deserializeTx(txData: string): Promise<StarknetTx> {
|
|
616
|
-
return this.Transactions.deserializeTx(txData);
|
|
617
|
-
}
|
|
618
|
-
|
|
619
|
-
getTxIdStatus(txId: string): Promise<"not_found" | "pending" | "success" | "reverted"> {
|
|
620
|
-
return this.Transactions.getTxIdStatus(txId);
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
getTxStatus(tx: string): Promise<"not_found" | "pending" | "success" | "reverted"> {
|
|
624
|
-
return this.Transactions.getTxStatus(tx);
|
|
625
|
-
}
|
|
626
|
-
|
|
627
569
|
////////////////////////////////////////////
|
|
628
570
|
//// Fees
|
|
629
571
|
getInitPayInFeeRate(offerer?: string, claimer?: string, token?: string, paymentHash?: string): Promise<string> {
|
|
630
|
-
return this.Fees.getFeeRate();
|
|
572
|
+
return this.Chain.Fees.getFeeRate();
|
|
631
573
|
}
|
|
632
574
|
|
|
633
575
|
getInitFeeRate(offerer?: string, claimer?: string, token?: string, paymentHash?: string): Promise<string> {
|
|
634
|
-
return this.Fees.getFeeRate();
|
|
576
|
+
return this.Chain.Fees.getFeeRate();
|
|
635
577
|
}
|
|
636
578
|
|
|
637
579
|
getRefundFeeRate(swapData: StarknetSwapData): Promise<string> {
|
|
638
|
-
return this.Fees.getFeeRate();
|
|
580
|
+
return this.Chain.Fees.getFeeRate();
|
|
639
581
|
}
|
|
640
582
|
|
|
641
583
|
getClaimFeeRate(signer: string, swapData: StarknetSwapData): Promise<string> {
|
|
642
|
-
return this.Fees.getFeeRate();
|
|
584
|
+
return this.Chain.Fees.getFeeRate();
|
|
643
585
|
}
|
|
644
586
|
|
|
645
587
|
getClaimFee(signer: string, swapData: StarknetSwapData, feeRate?: string): Promise<bigint> {
|
|
@@ -660,34 +602,4 @@ export class StarknetSwapContract
|
|
|
660
602
|
return this.Refund.getRefundFee(swapData, feeRate);
|
|
661
603
|
}
|
|
662
604
|
|
|
663
|
-
///////////////////////////////////
|
|
664
|
-
//// Callbacks & handlers
|
|
665
|
-
offBeforeTxReplace(callback: (oldTx: string, oldTxId: string, newTx: string, newTxId: string) => Promise<void>): boolean {
|
|
666
|
-
return true;
|
|
667
|
-
}
|
|
668
|
-
|
|
669
|
-
onBeforeTxReplace(callback: (oldTx: string, oldTxId: string, newTx: string, newTxId: string) => Promise<void>): void {}
|
|
670
|
-
|
|
671
|
-
onBeforeTxSigned(callback: (tx: StarknetTx) => Promise<void>): void {
|
|
672
|
-
this.Transactions.onBeforeTxSigned(callback);
|
|
673
|
-
}
|
|
674
|
-
|
|
675
|
-
offBeforeTxSigned(callback: (tx: StarknetTx) => Promise<void>): boolean {
|
|
676
|
-
return this.Transactions.offBeforeTxSigned(callback);
|
|
677
|
-
}
|
|
678
|
-
|
|
679
|
-
isValidToken(tokenIdentifier: string): boolean {
|
|
680
|
-
return this.Tokens.isValidToken(tokenIdentifier);
|
|
681
|
-
}
|
|
682
|
-
|
|
683
|
-
randomAddress(): string {
|
|
684
|
-
return stark.randomAddress();
|
|
685
|
-
}
|
|
686
|
-
|
|
687
|
-
randomSigner(): StarknetSigner {
|
|
688
|
-
const privateKey = "0x"+Buffer.from(ec.starkCurve.utils.randomPrivateKey()).toString("hex");
|
|
689
|
-
const wallet = new StarknetKeypairWallet(this.provider, privateKey);
|
|
690
|
-
return new StarknetSigner(wallet);
|
|
691
|
-
}
|
|
692
|
-
|
|
693
605
|
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {StarknetModule} from "../base/StarknetModule";
|
|
2
1
|
import {StarknetSwapContract} from "./StarknetSwapContract";
|
|
3
2
|
import {TypedContractV2} from "starknet";
|
|
4
3
|
import {EscrowManagerAbi} from "./EscrowManagerAbi";
|
|
4
|
+
import {StarknetChainInterface} from "../chain/StarknetChainInterface";
|
|
5
|
+
import {StarknetContractModule} from "../contract/StarknetContractModule";
|
|
5
6
|
|
|
6
|
-
export class StarknetSwapModule extends
|
|
7
|
+
export class StarknetSwapModule extends StarknetContractModule<typeof EscrowManagerAbi> {
|
|
7
8
|
|
|
8
|
-
readonly
|
|
9
|
-
readonly
|
|
9
|
+
readonly contract: StarknetSwapContract;
|
|
10
|
+
readonly swapContract: TypedContractV2<typeof EscrowManagerAbi>;
|
|
10
11
|
|
|
11
|
-
constructor(
|
|
12
|
-
super(
|
|
13
|
-
this.
|
|
14
|
-
this.contract = root.contract;
|
|
12
|
+
constructor(chainInterface: StarknetChainInterface, contract: StarknetSwapContract) {
|
|
13
|
+
super(chainInterface, contract);
|
|
14
|
+
this.swapContract = contract.contract;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {StarknetSwapData} from "../StarknetSwapData";
|
|
2
2
|
import {BigNumberish} from "starknet";
|
|
3
|
-
import {StarknetGas} from "../../
|
|
4
|
-
import {StarknetTx} from "../../
|
|
3
|
+
import {StarknetGas} from "../../chain/StarknetAction";
|
|
4
|
+
import {StarknetTx} from "../../chain/modules/StarknetTransactions";
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
export interface IHandler<TCommitmentData, TWitnessData> {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {HashlockClaimHandler} from "./HashlockClaimHandler";
|
|
2
2
|
import {ChainSwapType} from "@atomiqlabs/base";
|
|
3
|
-
import {StarknetGas} from "../../../
|
|
3
|
+
import {StarknetGas} from "../../../chain/StarknetAction";
|
|
4
4
|
import {IHandler} from "../IHandler";
|
|
5
5
|
import {BitcoinTxIdClaimHandler} from "./btc/BitcoinTxIdClaimHandler";
|
|
6
6
|
import {BitcoinOutputClaimHandler} from "./btc/BitcoinOutputClaimHandler";
|
|
@@ -2,10 +2,10 @@ import {StarknetSwapData} from "../../StarknetSwapData";
|
|
|
2
2
|
import {bufferToU32Array, toHex, u32ArrayToBuffer} from "../../../../utils/Utils";
|
|
3
3
|
import {BigNumberish, hash} from "starknet";
|
|
4
4
|
import {ChainSwapType} from "@atomiqlabs/base";
|
|
5
|
-
import {StarknetGas} from "../../../
|
|
5
|
+
import {StarknetGas} from "../../../chain/StarknetAction";
|
|
6
6
|
import {Buffer} from "buffer";
|
|
7
7
|
import {sha256} from "@noble/hashes/sha2";
|
|
8
|
-
import {StarknetTx} from "../../../
|
|
8
|
+
import {StarknetTx} from "../../../chain/modules/StarknetTransactions";
|
|
9
9
|
import {IClaimHandler} from "./ClaimHandlers";
|
|
10
10
|
|
|
11
11
|
export class HashlockClaimHandler implements IClaimHandler<Buffer, string> {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {StarknetSwapData} from "../../../StarknetSwapData";
|
|
2
|
-
import {StarknetGas} from "../../../../
|
|
2
|
+
import {StarknetGas} from "../../../../chain/StarknetAction";
|
|
3
3
|
import {ChainSwapType} from "@atomiqlabs/base";
|
|
4
4
|
import {BigNumberish, hash} from "starknet";
|
|
5
|
-
import {StarknetTx} from "../../../../
|
|
5
|
+
import {StarknetTx} from "../../../../chain/modules/StarknetTransactions";
|
|
6
6
|
import {bufferToByteArray, getLogger, poseidonHashRange, toBigInt} from "../../../../../utils/Utils";
|
|
7
7
|
import {BitcoinCommitmentData, IBitcoinClaimHandler} from "./IBitcoinClaimHandler";
|
|
8
8
|
import {BitcoinOutputWitnessData} from "./BitcoinOutputClaimHandler";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {StarknetSwapData} from "../../../StarknetSwapData";
|
|
2
|
-
import {StarknetGas} from "../../../../
|
|
2
|
+
import {StarknetGas} from "../../../../chain/StarknetAction";
|
|
3
3
|
import {ChainSwapType} from "@atomiqlabs/base";
|
|
4
4
|
import {BigNumberish, hash} from "starknet";
|
|
5
|
-
import {StarknetTx} from "../../../../
|
|
5
|
+
import {StarknetTx} from "../../../../chain/modules/StarknetTransactions";
|
|
6
6
|
import {bufferToByteArray, getLogger, poseidonHashRange, toBigInt} from "../../../../../utils/Utils";
|
|
7
7
|
import {BitcoinCommitmentData, BitcoinWitnessData, IBitcoinClaimHandler} from "./IBitcoinClaimHandler";
|
|
8
8
|
import {Transaction} from "@scure/btc-signer";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {StarknetSwapData} from "../../../StarknetSwapData";
|
|
2
|
-
import {StarknetGas} from "../../../../
|
|
2
|
+
import {StarknetGas} from "../../../../chain/StarknetAction";
|
|
3
3
|
import {ChainSwapType} from "@atomiqlabs/base";
|
|
4
4
|
import {BigNumberish} from "starknet";
|
|
5
|
-
import {StarknetTx} from "../../../../
|
|
5
|
+
import {StarknetTx} from "../../../../chain/modules/StarknetTransactions";
|
|
6
6
|
import {bufferToU32Array, getLogger} from "../../../../../utils/Utils";
|
|
7
7
|
import {BitcoinCommitmentData, BitcoinWitnessData, IBitcoinClaimHandler} from "./IBitcoinClaimHandler";
|
|
8
8
|
import {Buffer} from "buffer";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {IClaimHandler} from "../ClaimHandlers";
|
|
2
2
|
import {StarknetSwapData} from "../../../StarknetSwapData";
|
|
3
|
-
import {StarknetGas} from "../../../../
|
|
3
|
+
import {StarknetGas} from "../../../../chain/StarknetAction";
|
|
4
4
|
import {ChainSwapType, RelaySynchronizer} from "@atomiqlabs/base";
|
|
5
5
|
import {BigNumberish, hash} from "starknet";
|
|
6
6
|
import {StarknetBtcStoredHeader} from "../../../../btcrelay/headers/StarknetBtcStoredHeader";
|
|
7
|
-
import {StarknetTx} from "../../../../
|
|
7
|
+
import {StarknetTx} from "../../../../chain/modules/StarknetTransactions";
|
|
8
8
|
import {StarknetBtcRelay} from "../../../../btcrelay/StarknetBtcRelay";
|
|
9
|
-
import {bufferToU32Array, getLogger,
|
|
9
|
+
import {bufferToU32Array, getLogger, u32ArrayToBuffer} from "../../../../../utils/Utils";
|
|
10
10
|
|
|
11
11
|
export type BitcoinCommitmentData = {
|
|
12
12
|
btcRelay: StarknetBtcRelay<any>,
|
|
@@ -31,58 +31,6 @@ export abstract class IBitcoinClaimHandler<C, W extends BitcoinWitnessData> impl
|
|
|
31
31
|
this.address = address;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
/**
|
|
35
|
-
* Gets committed header, identified by blockhash & blockheight, determines required BTC relay blockheight based on
|
|
36
|
-
* requiredConfirmations
|
|
37
|
-
* If synchronizer is passed & blockhash is not found, it produces transactions to sync up the btc relay to the
|
|
38
|
-
* current chain tip & adds them to the txs array
|
|
39
|
-
*
|
|
40
|
-
* @param signer
|
|
41
|
-
* @param btcRelay
|
|
42
|
-
* @param txBlockheight transaction blockheight
|
|
43
|
-
* @param requiredConfirmations required confirmation for the swap to be claimable with that TX
|
|
44
|
-
* @param blockhash blockhash of the block which includes the transaction
|
|
45
|
-
* @param txs solana transaction array, in case we need to synchronize the btc relay ourselves the synchronization
|
|
46
|
-
* txns are added here
|
|
47
|
-
* @param synchronizer optional synchronizer to use to synchronize the btc relay in case it is not yet synchronized
|
|
48
|
-
* to the required blockheight
|
|
49
|
-
* @param feeRate Fee rate to use for synchronization transactions
|
|
50
|
-
* @private
|
|
51
|
-
*/
|
|
52
|
-
protected async getCommitedHeaderAndSynchronize(
|
|
53
|
-
signer: string,
|
|
54
|
-
btcRelay: StarknetBtcRelay<any>,
|
|
55
|
-
txBlockheight: number,
|
|
56
|
-
requiredConfirmations: number,
|
|
57
|
-
blockhash: string,
|
|
58
|
-
txs: StarknetTx[],
|
|
59
|
-
synchronizer?: RelaySynchronizer<StarknetBtcStoredHeader, StarknetTx, any>,
|
|
60
|
-
feeRate?: string
|
|
61
|
-
): Promise<StarknetBtcStoredHeader> {
|
|
62
|
-
const requiredBlockheight = txBlockheight+requiredConfirmations-1;
|
|
63
|
-
|
|
64
|
-
const result = await tryWithRetries(
|
|
65
|
-
() => btcRelay.retrieveLogAndBlockheight({
|
|
66
|
-
blockhash: blockhash
|
|
67
|
-
}, requiredBlockheight)
|
|
68
|
-
);
|
|
69
|
-
|
|
70
|
-
if(result!=null) return result.header;
|
|
71
|
-
|
|
72
|
-
//Need to synchronize
|
|
73
|
-
if(synchronizer==null) return null;
|
|
74
|
-
|
|
75
|
-
//TODO: We don't have to synchronize to tip, only to our required blockheight
|
|
76
|
-
const resp = await synchronizer.syncToLatestTxs(signer.toString(), feeRate);
|
|
77
|
-
logger.debug("getCommitedHeaderAndSynchronize(): BTC Relay not synchronized to required blockheight, "+
|
|
78
|
-
"synchronizing ourselves in "+resp.txs.length+" txs");
|
|
79
|
-
logger.debug("getCommitedHeaderAndSynchronize(): BTC Relay computed header map: ",resp.computedHeaderMap);
|
|
80
|
-
resp.txs.forEach(tx => txs.push(tx));
|
|
81
|
-
|
|
82
|
-
//Retrieve computed header
|
|
83
|
-
return resp.computedHeaderMap[txBlockheight];
|
|
84
|
-
}
|
|
85
|
-
|
|
86
34
|
public static readonly address = "";
|
|
87
35
|
public static readonly type: ChainSwapType = ChainSwapType.CHAIN_TXID;
|
|
88
36
|
public static readonly gas: StarknetGas = {l1: 20000};
|
|
@@ -121,12 +69,15 @@ export abstract class IBitcoinClaimHandler<C, W extends BitcoinWitnessData> impl
|
|
|
121
69
|
logger.debug("getWitness(): merkle proof computed: ", merkleProof);
|
|
122
70
|
|
|
123
71
|
const txs: StarknetTx[] = [];
|
|
124
|
-
if(commitedHeader==null)
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
72
|
+
if(commitedHeader==null) {
|
|
73
|
+
const headers = await StarknetBtcRelay.getCommitedHeadersAndSynchronize(
|
|
74
|
+
signer, btcRelay,
|
|
75
|
+
[{blockheight: tx.height, requiredConfirmations, blockhash: tx.blockhash}],
|
|
76
|
+
txs, synchronizer, feeRate
|
|
77
|
+
);
|
|
78
|
+
if(headers==null) throw new Error("Cannot fetch committed header!");
|
|
79
|
+
commitedHeader = headers[tx.blockhash];
|
|
80
|
+
}
|
|
130
81
|
|
|
131
82
|
serializedData.push(...commitedHeader.serialize());
|
|
132
83
|
serializedData.push(merkleProof.merkle.length, ...merkleProof.merkle.map(bufferToU32Array).flat());
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {StarknetTx} from "../../../
|
|
1
|
+
import {StarknetTx} from "../../../chain/modules/StarknetTransactions";
|
|
2
2
|
import {StarknetSwapData} from "../../StarknetSwapData";
|
|
3
3
|
import {bigNumberishToBuffer, toBigInt} from "../../../../utils/Utils";
|
|
4
4
|
import {BigNumberish} from "starknet";
|
|
5
5
|
import {IHandler} from "../IHandler";
|
|
6
|
-
import {StarknetGas} from "../../../
|
|
6
|
+
import {StarknetGas} from "../../../chain/StarknetAction";
|
|
7
7
|
|
|
8
8
|
export class TimelockRefundHandler implements IHandler<bigint, never> {
|
|
9
9
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {toBigInt} from "../../../utils/Utils";
|
|
2
2
|
import { IntermediaryReputationType } from "@atomiqlabs/base";
|
|
3
3
|
import {StarknetSwapModule} from "../StarknetSwapModule";
|
|
4
|
-
import {StarknetAction} from "../../
|
|
4
|
+
import {StarknetAction} from "../../chain/StarknetAction";
|
|
5
5
|
import {cairo} from "starknet";
|
|
6
|
-
import {StarknetTx} from "../../
|
|
6
|
+
import {StarknetTx} from "../../chain/modules/StarknetTransactions";
|
|
7
7
|
|
|
8
8
|
export class StarknetLpVault extends StarknetSwapModule {
|
|
9
9
|
|
|
@@ -23,7 +23,7 @@ export class StarknetLpVault extends StarknetSwapModule {
|
|
|
23
23
|
*/
|
|
24
24
|
private Withdraw(signer: string, token: string, amount: bigint): StarknetAction {
|
|
25
25
|
return new StarknetAction(signer, this.root,
|
|
26
|
-
this.
|
|
26
|
+
this.swapContract.populateTransaction.withdraw(token, cairo.uint256(amount), signer),
|
|
27
27
|
StarknetLpVault.GasCosts.WITHDRAW
|
|
28
28
|
);
|
|
29
29
|
}
|
|
@@ -39,7 +39,7 @@ export class StarknetLpVault extends StarknetSwapModule {
|
|
|
39
39
|
*/
|
|
40
40
|
private Deposit(signer: string, token: string, amount: bigint): StarknetAction {
|
|
41
41
|
return new StarknetAction(signer, this.root,
|
|
42
|
-
this.
|
|
42
|
+
this.swapContract.populateTransaction.deposit(token, cairo.uint256(amount)),
|
|
43
43
|
StarknetLpVault.GasCosts.WITHDRAW
|
|
44
44
|
);
|
|
45
45
|
}
|
|
@@ -69,14 +69,14 @@ export class StarknetLpVault extends StarknetSwapModule {
|
|
|
69
69
|
* @param token
|
|
70
70
|
*/
|
|
71
71
|
public async getIntermediaryReputation(address: string, token: string): Promise<IntermediaryReputationType> {
|
|
72
|
-
const filter = Object.keys(this.
|
|
73
|
-
const rawReputation = await this.provider.callContract(this.
|
|
72
|
+
const filter = Object.keys(this.contract.claimHandlersByAddress).map(claimHandler => cairo.tuple(address, token, claimHandler));
|
|
73
|
+
const rawReputation = await this.provider.callContract(this.swapContract.populateTransaction.get_reputation(filter));
|
|
74
74
|
const length = toBigInt(rawReputation.shift());
|
|
75
75
|
if(Number(length)!==filter.length) throw new Error("getIntermediaryReputation(): Invalid response length");
|
|
76
76
|
|
|
77
77
|
const result: any = {};
|
|
78
|
-
Object.keys(this.
|
|
79
|
-
const handler = this.
|
|
78
|
+
Object.keys(this.contract.claimHandlersByAddress).forEach((address) => {
|
|
79
|
+
const handler = this.contract.claimHandlersByAddress[address];
|
|
80
80
|
result[handler.getType()] = {
|
|
81
81
|
successVolume: toBigInt({low: rawReputation.shift(), high: rawReputation.shift()}),
|
|
82
82
|
successCount: toBigInt(rawReputation.shift()),
|
|
@@ -96,7 +96,7 @@ export class StarknetLpVault extends StarknetSwapModule {
|
|
|
96
96
|
* @param token
|
|
97
97
|
*/
|
|
98
98
|
public async getIntermediaryBalance(address: string, token: string): Promise<bigint> {
|
|
99
|
-
const balance = toBigInt((await this.
|
|
99
|
+
const balance = toBigInt((await this.swapContract.get_balance([cairo.tuple(address, token)]))[0]);
|
|
100
100
|
|
|
101
101
|
this.logger.debug("getIntermediaryBalance(): token LP balance fetched, token: "+token.toString()+
|
|
102
102
|
" address: "+address+" amount: "+(balance==null ? "null" : balance.toString()));
|
|
@@ -134,7 +134,7 @@ export class StarknetLpVault extends StarknetSwapModule {
|
|
|
134
134
|
*/
|
|
135
135
|
public async txsDeposit(signer: string, token: string, amount: bigint, feeRate?: string): Promise<StarknetTx[]> {
|
|
136
136
|
//Approve first
|
|
137
|
-
const action = await this.root.Tokens.Approve(signer, this.
|
|
137
|
+
const action = await this.root.Tokens.Approve(signer, this.swapContract.address, token, amount);
|
|
138
138
|
action.add(this.Deposit(signer, token, amount));
|
|
139
139
|
|
|
140
140
|
feeRate ??= await this.root.Fees.getFeeRate();
|