@atomiqlabs/chain-evm 1.0.0-dev.35 → 1.0.0-dev.37
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/chains/citrea/CitreaBtcRelay.d.ts +21 -21
- package/dist/chains/citrea/CitreaBtcRelay.js +43 -43
- package/dist/chains/citrea/CitreaChainType.d.ts +13 -13
- package/dist/chains/citrea/CitreaChainType.js +2 -2
- package/dist/chains/citrea/CitreaFees.d.ts +29 -29
- package/dist/chains/citrea/CitreaFees.js +67 -67
- package/dist/chains/citrea/CitreaInitializer.d.ts +30 -30
- package/dist/chains/citrea/CitreaInitializer.js +127 -127
- package/dist/chains/citrea/CitreaSpvVaultContract.d.ts +15 -15
- package/dist/chains/citrea/CitreaSpvVaultContract.js +74 -74
- package/dist/chains/citrea/CitreaSwapContract.d.ts +22 -22
- package/dist/chains/citrea/CitreaSwapContract.js +96 -96
- package/dist/chains/citrea/CitreaTokens.d.ts +9 -9
- package/dist/chains/citrea/CitreaTokens.js +20 -20
- package/dist/evm/btcrelay/BtcRelayAbi.d.ts +198 -198
- package/dist/evm/btcrelay/BtcRelayAbi.js +261 -261
- package/dist/evm/btcrelay/BtcRelayTypechain.d.ts +172 -172
- package/dist/evm/btcrelay/BtcRelayTypechain.js +2 -2
- package/dist/evm/btcrelay/EVMBtcRelay.d.ts +195 -195
- package/dist/evm/btcrelay/EVMBtcRelay.js +423 -423
- package/dist/evm/btcrelay/headers/EVMBtcHeader.d.ts +33 -33
- package/dist/evm/btcrelay/headers/EVMBtcHeader.js +84 -84
- package/dist/evm/btcrelay/headers/EVMBtcStoredHeader.d.ts +56 -56
- package/dist/evm/btcrelay/headers/EVMBtcStoredHeader.js +123 -123
- package/dist/evm/chain/EVMChainInterface.d.ts +51 -51
- package/dist/evm/chain/EVMChainInterface.js +89 -89
- package/dist/evm/chain/EVMModule.d.ts +9 -9
- package/dist/evm/chain/EVMModule.js +13 -13
- package/dist/evm/chain/modules/ERC20Abi.d.ts +168 -168
- package/dist/evm/chain/modules/ERC20Abi.js +225 -225
- package/dist/evm/chain/modules/EVMAddresses.d.ts +10 -10
- package/dist/evm/chain/modules/EVMAddresses.js +30 -30
- package/dist/evm/chain/modules/EVMBlocks.d.ts +20 -20
- package/dist/evm/chain/modules/EVMBlocks.js +64 -64
- package/dist/evm/chain/modules/EVMEvents.d.ts +36 -36
- package/dist/evm/chain/modules/EVMEvents.js +122 -122
- package/dist/evm/chain/modules/EVMFees.d.ts +36 -36
- package/dist/evm/chain/modules/EVMFees.js +73 -73
- package/dist/evm/chain/modules/EVMSignatures.d.ts +29 -29
- package/dist/evm/chain/modules/EVMSignatures.js +68 -68
- package/dist/evm/chain/modules/EVMTokens.d.ts +70 -51
- package/dist/evm/chain/modules/EVMTokens.js +142 -113
- package/dist/evm/chain/modules/EVMTransactions.d.ts +89 -89
- package/dist/evm/chain/modules/EVMTransactions.js +230 -216
- package/dist/evm/contract/EVMContractBase.d.ts +22 -22
- package/dist/evm/contract/EVMContractBase.js +34 -34
- package/dist/evm/contract/EVMContractModule.d.ts +8 -8
- package/dist/evm/contract/EVMContractModule.js +11 -11
- package/dist/evm/contract/modules/EVMContractEvents.d.ts +42 -42
- package/dist/evm/contract/modules/EVMContractEvents.js +75 -75
- package/dist/evm/events/EVMChainEvents.d.ts +22 -22
- package/dist/evm/events/EVMChainEvents.js +67 -67
- package/dist/evm/events/EVMChainEventsBrowser.d.ts +86 -86
- package/dist/evm/events/EVMChainEventsBrowser.js +294 -294
- package/dist/evm/spv_swap/EVMSpvVaultContract.d.ts +78 -78
- package/dist/evm/spv_swap/EVMSpvVaultContract.js +478 -480
- package/dist/evm/spv_swap/EVMSpvVaultData.d.ts +39 -39
- package/dist/evm/spv_swap/EVMSpvVaultData.js +180 -180
- package/dist/evm/spv_swap/EVMSpvWithdrawalData.d.ts +19 -19
- package/dist/evm/spv_swap/EVMSpvWithdrawalData.js +55 -55
- package/dist/evm/spv_swap/SpvVaultContractAbi.d.ts +91 -91
- package/dist/evm/spv_swap/SpvVaultContractAbi.js +849 -849
- package/dist/evm/spv_swap/SpvVaultContractTypechain.d.ts +450 -450
- package/dist/evm/spv_swap/SpvVaultContractTypechain.js +2 -2
- package/dist/evm/swaps/EVMSwapContract.d.ts +193 -193
- package/dist/evm/swaps/EVMSwapContract.js +374 -374
- package/dist/evm/swaps/EVMSwapData.d.ts +66 -66
- package/dist/evm/swaps/EVMSwapData.js +260 -260
- package/dist/evm/swaps/EVMSwapModule.d.ts +9 -9
- package/dist/evm/swaps/EVMSwapModule.js +11 -11
- package/dist/evm/swaps/EscrowManagerAbi.d.ts +120 -120
- package/dist/evm/swaps/EscrowManagerAbi.js +985 -985
- package/dist/evm/swaps/EscrowManagerTypechain.d.ts +475 -475
- package/dist/evm/swaps/EscrowManagerTypechain.js +2 -2
- package/dist/evm/swaps/handlers/IHandler.d.ts +13 -13
- package/dist/evm/swaps/handlers/IHandler.js +2 -2
- package/dist/evm/swaps/handlers/claim/ClaimHandlers.d.ts +10 -10
- package/dist/evm/swaps/handlers/claim/ClaimHandlers.js +13 -13
- package/dist/evm/swaps/handlers/claim/HashlockClaimHandler.d.ts +20 -20
- package/dist/evm/swaps/handlers/claim/HashlockClaimHandler.js +39 -39
- package/dist/evm/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +24 -24
- package/dist/evm/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +59 -59
- package/dist/evm/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +25 -25
- package/dist/evm/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +51 -51
- package/dist/evm/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +21 -21
- package/dist/evm/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +28 -28
- package/dist/evm/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +48 -48
- package/dist/evm/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +63 -63
- package/dist/evm/swaps/handlers/refund/TimelockRefundHandler.d.ts +17 -17
- package/dist/evm/swaps/handlers/refund/TimelockRefundHandler.js +28 -28
- package/dist/evm/swaps/modules/EVMLpVault.d.ts +69 -69
- package/dist/evm/swaps/modules/EVMLpVault.js +134 -131
- package/dist/evm/swaps/modules/EVMSwapClaim.d.ts +54 -54
- package/dist/evm/swaps/modules/EVMSwapClaim.js +137 -137
- package/dist/evm/swaps/modules/EVMSwapInit.d.ts +88 -88
- package/dist/evm/swaps/modules/EVMSwapInit.js +274 -275
- package/dist/evm/swaps/modules/EVMSwapRefund.d.ts +62 -62
- package/dist/evm/swaps/modules/EVMSwapRefund.js +167 -167
- package/dist/evm/typechain/common.d.ts +50 -50
- package/dist/evm/typechain/common.js +2 -2
- package/dist/evm/wallet/EVMSigner.d.ts +10 -9
- package/dist/evm/wallet/EVMSigner.js +17 -16
- package/dist/index.d.ts +38 -38
- package/dist/index.js +54 -54
- package/dist/utils/Utils.d.ts +15 -15
- package/dist/utils/Utils.js +71 -71
- package/package.json +37 -37
- package/src/chains/citrea/CitreaBtcRelay.ts +57 -57
- package/src/chains/citrea/CitreaChainType.ts +28 -28
- package/src/chains/citrea/CitreaFees.ts +77 -77
- package/src/chains/citrea/CitreaInitializer.ts +178 -178
- package/src/chains/citrea/CitreaSpvVaultContract.ts +75 -75
- package/src/chains/citrea/CitreaSwapContract.ts +102 -102
- package/src/chains/citrea/CitreaTokens.ts +21 -21
- package/src/evm/btcrelay/BtcRelayAbi.ts +258 -258
- package/src/evm/btcrelay/BtcRelayTypechain.ts +371 -371
- package/src/evm/btcrelay/EVMBtcRelay.ts +522 -522
- package/src/evm/btcrelay/headers/EVMBtcHeader.ts +109 -109
- package/src/evm/btcrelay/headers/EVMBtcStoredHeader.ts +152 -152
- package/src/evm/chain/EVMChainInterface.ts +155 -155
- package/src/evm/chain/EVMModule.ts +21 -21
- package/src/evm/chain/modules/ERC20Abi.ts +222 -222
- package/src/evm/chain/modules/EVMAddresses.ts +28 -28
- package/src/evm/chain/modules/EVMBlocks.ts +75 -75
- package/src/evm/chain/modules/EVMEvents.ts +139 -139
- package/src/evm/chain/modules/EVMFees.ts +104 -104
- package/src/evm/chain/modules/EVMSignatures.ts +76 -76
- package/src/evm/chain/modules/EVMTokens.ts +155 -126
- package/src/evm/chain/modules/EVMTransactions.ts +257 -246
- package/src/evm/contract/EVMContractBase.ts +63 -63
- package/src/evm/contract/EVMContractModule.ts +16 -16
- package/src/evm/contract/modules/EVMContractEvents.ts +102 -102
- package/src/evm/events/EVMChainEvents.ts +81 -81
- package/src/evm/events/EVMChainEventsBrowser.ts +390 -390
- package/src/evm/spv_swap/EVMSpvVaultContract.ts +608 -603
- package/src/evm/spv_swap/EVMSpvVaultData.ts +224 -224
- package/src/evm/spv_swap/EVMSpvWithdrawalData.ts +70 -70
- package/src/evm/spv_swap/SpvVaultContractAbi.ts +846 -846
- package/src/evm/spv_swap/SpvVaultContractTypechain.ts +685 -685
- package/src/evm/swaps/EVMSwapContract.ts +592 -592
- package/src/evm/swaps/EVMSwapData.ts +378 -378
- package/src/evm/swaps/EVMSwapModule.ts +16 -16
- package/src/evm/swaps/EscrowManagerAbi.ts +982 -982
- package/src/evm/swaps/EscrowManagerTypechain.ts +723 -723
- package/src/evm/swaps/handlers/IHandler.ts +17 -17
- package/src/evm/swaps/handlers/claim/ClaimHandlers.ts +20 -20
- package/src/evm/swaps/handlers/claim/HashlockClaimHandler.ts +46 -46
- package/src/evm/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +82 -82
- package/src/evm/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +76 -76
- package/src/evm/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +46 -46
- package/src/evm/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +115 -115
- package/src/evm/swaps/handlers/refund/TimelockRefundHandler.ts +37 -37
- package/src/evm/swaps/modules/EVMLpVault.ts +154 -152
- package/src/evm/swaps/modules/EVMSwapClaim.ts +172 -172
- package/src/evm/swaps/modules/EVMSwapInit.ts +328 -325
- package/src/evm/swaps/modules/EVMSwapRefund.ts +229 -229
- package/src/evm/typechain/common.ts +131 -131
- package/src/evm/wallet/EVMSigner.ts +25 -23
- package/src/index.ts +45 -45
- package/src/utils/Utils.ts +81 -81
|
@@ -1,126 +1,155 @@
|
|
|
1
|
-
import {EVMModule} from "../EVMModule";
|
|
2
|
-
import {Contract, TransactionRequest} from "ethers";
|
|
3
|
-
import {ERC20Abi} from "./ERC20Abi";
|
|
4
|
-
import {EVMAddresses} from "./EVMAddresses";
|
|
5
|
-
import {EVMFees} from "./EVMFees";
|
|
6
|
-
import {EVMSwapData} from "../../swaps/EVMSwapData";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export class EVMTokens extends EVMModule<any> {
|
|
10
|
-
|
|
11
|
-
public static readonly ETH_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
12
|
-
|
|
13
|
-
public static readonly GasCosts = {
|
|
14
|
-
TRANSFER: 80_000 + 21_000,
|
|
15
|
-
APPROVE: 80_000 + 21_000
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
private getContract(address: string) {
|
|
19
|
-
return new Contract(address, ERC20Abi, this.root.provider);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
///////////////////
|
|
23
|
-
//// Tokens
|
|
24
|
-
/**
|
|
25
|
-
* Checks if the provided string is a valid starknet token
|
|
26
|
-
*
|
|
27
|
-
* @param token
|
|
28
|
-
*/
|
|
29
|
-
public isValidToken(token: string) {
|
|
30
|
-
return EVMAddresses.isValidAddress(token);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Returns the token balance of the address
|
|
35
|
-
*
|
|
36
|
-
* @param address
|
|
37
|
-
* @param token
|
|
38
|
-
*/
|
|
39
|
-
public async getTokenBalance(address: string, token: string): Promise<bigint> {
|
|
40
|
-
let balance: bigint;
|
|
41
|
-
if(token === "0x0000000000000000000000000000000000000000") {
|
|
42
|
-
balance = await this.provider.getBalance(address);
|
|
43
|
-
} else {
|
|
44
|
-
const erc20 = this.getContract(token);
|
|
45
|
-
balance = await erc20.balanceOf(address);
|
|
46
|
-
}
|
|
47
|
-
this.logger.debug("getTokenBalance(): token balance fetched, token: "+token+
|
|
48
|
-
" address: "+address+" amount: "+balance.toString(10));
|
|
49
|
-
|
|
50
|
-
return balance;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Returns the
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
*
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
async
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
1
|
+
import {EVMModule} from "../EVMModule";
|
|
2
|
+
import {Contract, TransactionRequest} from "ethers";
|
|
3
|
+
import {ERC20Abi} from "./ERC20Abi";
|
|
4
|
+
import {EVMAddresses} from "./EVMAddresses";
|
|
5
|
+
import {EVMFees} from "./EVMFees";
|
|
6
|
+
import {EVMSwapData} from "../../swaps/EVMSwapData";
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
export class EVMTokens extends EVMModule<any> {
|
|
10
|
+
|
|
11
|
+
public static readonly ETH_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
12
|
+
|
|
13
|
+
public static readonly GasCosts = {
|
|
14
|
+
TRANSFER: 80_000 + 21_000,
|
|
15
|
+
APPROVE: 80_000 + 21_000
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
private getContract(address: string) {
|
|
19
|
+
return new Contract(address, ERC20Abi, this.root.provider);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
///////////////////
|
|
23
|
+
//// Tokens
|
|
24
|
+
/**
|
|
25
|
+
* Checks if the provided string is a valid starknet token
|
|
26
|
+
*
|
|
27
|
+
* @param token
|
|
28
|
+
*/
|
|
29
|
+
public isValidToken(token: string) {
|
|
30
|
+
return EVMAddresses.isValidAddress(token);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Returns the token balance of the address
|
|
35
|
+
*
|
|
36
|
+
* @param address
|
|
37
|
+
* @param token
|
|
38
|
+
*/
|
|
39
|
+
public async getTokenBalance(address: string, token: string): Promise<bigint> {
|
|
40
|
+
let balance: bigint;
|
|
41
|
+
if(token === "0x0000000000000000000000000000000000000000") {
|
|
42
|
+
balance = await this.provider.getBalance(address);
|
|
43
|
+
} else {
|
|
44
|
+
const erc20 = this.getContract(token);
|
|
45
|
+
balance = await erc20.balanceOf(address);
|
|
46
|
+
}
|
|
47
|
+
this.logger.debug("getTokenBalance(): token balance fetched, token: "+token+
|
|
48
|
+
" address: "+address+" amount: "+balance.toString(10));
|
|
49
|
+
|
|
50
|
+
return balance;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Returns the authorized allowance of specific address towards a spender contract
|
|
55
|
+
*
|
|
56
|
+
* @param spender A contract trying to spend user's erc20 balance
|
|
57
|
+
* @param address Wallet address
|
|
58
|
+
* @param token ERC-20 token
|
|
59
|
+
*/
|
|
60
|
+
public async getTokenAllowance(spender: string, address: string, token: string): Promise<bigint> {
|
|
61
|
+
if(token === "0x0000000000000000000000000000000000000000") return 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn;
|
|
62
|
+
const erc20 = this.getContract(token);
|
|
63
|
+
return await erc20.allowance(address, spender);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Returns the native currency address
|
|
68
|
+
*/
|
|
69
|
+
public getNativeCurrencyAddress(): string {
|
|
70
|
+
return "0x0000000000000000000000000000000000000000";
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
///////////////////
|
|
74
|
+
//// Transfers
|
|
75
|
+
/**
|
|
76
|
+
* Creates transactions for sending the over the tokens
|
|
77
|
+
*
|
|
78
|
+
* @param signer
|
|
79
|
+
* @param token token to send
|
|
80
|
+
* @param amount amount of the token to send
|
|
81
|
+
* @param recipient recipient's address
|
|
82
|
+
* @param feeRate fee rate to use for the transactions
|
|
83
|
+
* @private
|
|
84
|
+
*/
|
|
85
|
+
public async Transfer(signer: string, token: string, amount: bigint, recipient: string, feeRate?: string): Promise<TransactionRequest> {
|
|
86
|
+
let tx: TransactionRequest;
|
|
87
|
+
if(token===this.getNativeCurrencyAddress()) {
|
|
88
|
+
tx = {
|
|
89
|
+
to: recipient,
|
|
90
|
+
value: amount
|
|
91
|
+
};
|
|
92
|
+
} else {
|
|
93
|
+
tx = await this.getContract(token).transfer.populateTransaction(recipient, amount);
|
|
94
|
+
}
|
|
95
|
+
tx.from = signer;
|
|
96
|
+
EVMFees.applyFeeRate(tx, EVMTokens.GasCosts.TRANSFER, feeRate ?? await this.root.Fees.getFeeRate());
|
|
97
|
+
|
|
98
|
+
this.logger.debug("txsTransfer(): transfer TX created, recipient: "+recipient.toString()+
|
|
99
|
+
" token: "+token.toString()+ " amount: "+amount.toString(10));
|
|
100
|
+
|
|
101
|
+
return tx;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
///////////////////
|
|
105
|
+
//// Approval
|
|
106
|
+
/**
|
|
107
|
+
* Creates transactions for approving spending of tokens
|
|
108
|
+
*
|
|
109
|
+
* @param signer
|
|
110
|
+
* @param token token to send
|
|
111
|
+
* @param amount amount of the token to send
|
|
112
|
+
* @param spender recipient's address
|
|
113
|
+
* @param feeRate fee rate to use for the transactions
|
|
114
|
+
* @private
|
|
115
|
+
*/
|
|
116
|
+
public async Approve(signer: string, token: string, amount: bigint, spender: string, feeRate?: string): Promise<TransactionRequest> {
|
|
117
|
+
if(token===this.getNativeCurrencyAddress()) return null;
|
|
118
|
+
|
|
119
|
+
const tx = await this.getContract(token).approve.populateTransaction(spender, amount);
|
|
120
|
+
tx.from = signer;
|
|
121
|
+
EVMFees.applyFeeRate(tx, EVMTokens.GasCosts.APPROVE, feeRate ?? await this.root.Fees.getFeeRate());
|
|
122
|
+
|
|
123
|
+
this.logger.debug("txsTransfer(): approve TX created, spender: "+spender.toString()+
|
|
124
|
+
" token: "+token.toString()+ " amount: "+amount.toString(10));
|
|
125
|
+
|
|
126
|
+
return tx;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Checks whether an approve transaction is required for a given token and either returns the tx
|
|
131
|
+
* or null in case the approve is not required
|
|
132
|
+
*
|
|
133
|
+
* @param signer
|
|
134
|
+
* @param token token to approve for
|
|
135
|
+
* @param amount amount of the token to send
|
|
136
|
+
* @param spender spending contract address
|
|
137
|
+
* @param feeRate fee rate to use for the transactions
|
|
138
|
+
*/
|
|
139
|
+
public async checkAndGetApproveTx(signer: string, token: string, amount: bigint, spender: string, feeRate?: string): Promise<TransactionRequest | null> {
|
|
140
|
+
const alreadyApproved = await this.getTokenAllowance(spender, signer, token);
|
|
141
|
+
if(alreadyApproved >= amount) return null;
|
|
142
|
+
return await this.Approve(signer, token, amount, spender, feeRate);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
async getApproveFee(feeRate?: string): Promise<bigint> {
|
|
146
|
+
feeRate ??= await this.root.Fees.getFeeRate();
|
|
147
|
+
return EVMFees.getGasFee(EVMTokens.GasCosts.APPROVE, feeRate);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
async getTransferFee(feeRate?: string): Promise<bigint> {
|
|
151
|
+
feeRate ??= await this.root.Fees.getFeeRate();
|
|
152
|
+
return EVMFees.getGasFee(EVMTokens.GasCosts.APPROVE, feeRate);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
}
|