@paraswap/dex-lib 2.42.7 → 2.42.8-cache-approves.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/.vscode/launch.json +16 -0
- package/build/dex/simple-exchange.d.ts +3 -0
- package/build/dex/simple-exchange.js +20 -2
- package/build/dex/simple-exchange.js.map +1 -1
- package/package.json +1 -1
- package/src/dex/simple-exchange.ts +39 -3
- package/.idea/aws.xml +0 -17
- package/.idea/codeStyles/Project.xml +0 -19
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/paraswap-dex-lib.iml +0 -9
- package/.idea/prettier.xml +0 -7
- package/.idea/vcs.xml +0 -6
- package/build/abi/algebra/AlgebraPool.abi.json +0 -727
- package/build/abi/curve-v1/StableSwapFRXETH.json +0 -889
- package/build/abi/curve-v1/StableSwapWBETH.json +0 -1223
- package/build/abi/sushiswap-v3/QuoterV2.json +0 -267
- package/build/abi/sushiswap-v3/RouterProcessor3.json +0 -289
- package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +0 -193
- package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3QuoterV2.abi.json +0 -285
- package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3Router.abi.json +0 -583
- package/build/abi/wBETH.json +0 -1527
- package/build/abi/woo-fi/WooFeeManager.abi.json +0 -318
- package/build/abi/woo-fi/WooPP.abi.json +0 -548
- package/build/abi/woo-fi/Wooracle.abi.json +0 -260
- package/build/dex/aave-v3/tokens/arbitrum.json +0 -50
- package/build/dex/aave-v3/tokens/avalanche.json +0 -74
- package/build/dex/aave-v3/tokens/fantom.json +0 -62
- package/build/dex/aave-v3/tokens/optimism.json +0 -50
- package/build/dex/aave-v3/tokens/polygon.json +0 -116
- package/build/dex/algebra/algebra-pool.d.ts +0 -114
- package/build/dex/algebra/algebra-pool.js +0 -448
- package/build/dex/algebra/algebra-pool.js.map +0 -1
- package/build/dex/balancer-v2/Gyro3Pool.d.ts +0 -43
- package/build/dex/balancer-v2/Gyro3Pool.js +0 -160
- package/build/dex/balancer-v2/Gyro3Pool.js.map +0 -1
- package/build/dex/balancer-v2/LinearMath.d.ts +0 -88
- package/build/dex/balancer-v2/LinearMath.js +0 -285
- package/build/dex/balancer-v2/LinearMath.js.map +0 -1
- package/build/dex/balancer-v2/LinearPool.d.ts +0 -81
- package/build/dex/balancer-v2/LinearPool.js +0 -444
- package/build/dex/balancer-v2/LinearPool.js.map +0 -1
- package/build/dex/balancer-v2/PhantomStablePool.d.ts +0 -90
- package/build/dex/balancer-v2/PhantomStablePool.js +0 -418
- package/build/dex/balancer-v2/PhantomStablePool.js.map +0 -1
- package/build/dex/balancer-v2/StableMath.d.ts +0 -9
- package/build/dex/balancer-v2/StableMath.js +0 -272
- package/build/dex/balancer-v2/StableMath.js.map +0 -1
- package/build/dex/balancer-v2/balancer-v2-pool.d.ts +0 -140
- package/build/dex/balancer-v2/balancer-v2-pool.js +0 -647
- package/build/dex/balancer-v2/balancer-v2-pool.js.map +0 -1
- package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.d.ts +0 -33
- package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js +0 -128
- package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js.map +0 -1
- package/build/dex/balancer-v2/pools/gyro/GyroEPool.d.ts +0 -34
- package/build/dex/balancer-v2/pools/gyro/GyroEPool.js +0 -151
- package/build/dex/balancer-v2/pools/gyro/GyroEPool.js.map +0 -1
- package/build/dex/curve-v1/pools/frxETHpool.d.ts +0 -7
- package/build/dex/curve-v1/pools/frxETHpool.js +0 -27
- package/build/dex/curve-v1/pools/frxETHpool.js.map +0 -1
- package/build/dex/curve-v1/pools/wbETHpool.d.ts +0 -29
- package/build/dex/curve-v1/pools/wbETHpool.js +0 -408
- package/build/dex/curve-v1/pools/wbETHpool.js.map +0 -1
- package/build/dex/lighter-v1/abi/erc20.json +0 -222
- package/build/dex/lighter-v1/abi/factory.json +0 -291
- package/build/dex/lighter-v1/abi/order_book.json +0 -594
- package/build/dex/lighter-v1/abi/order_book_helper.json +0 -176
- package/build/dex/lighter-v1/abi/router.json +0 -488
- package/build/dex/lighter-v1/config.d.ts +0 -4
- package/build/dex/lighter-v1/config.js +0 -17
- package/build/dex/lighter-v1/config.js.map +0 -1
- package/build/dex/lighter-v1/constants.d.ts +0 -2
- package/build/dex/lighter-v1/constants.js +0 -13
- package/build/dex/lighter-v1/constants.js.map +0 -1
- package/build/dex/lighter-v1/lighter-v1-pool.d.ts +0 -57
- package/build/dex/lighter-v1/lighter-v1-pool.js +0 -310
- package/build/dex/lighter-v1/lighter-v1-pool.js.map +0 -1
- package/build/dex/lighter-v1/lighter-v1.d.ts +0 -45
- package/build/dex/lighter-v1/lighter-v1.js +0 -331
- package/build/dex/lighter-v1/lighter-v1.js.map +0 -1
- package/build/dex/lighter-v1/types.d.ts +0 -40
- package/build/dex/lighter-v1/types.js +0 -3
- package/build/dex/lighter-v1/types.js.map +0 -1
- package/build/dex/pancakeswap-v3/types.d.ts +0 -14
- package/build/dex/pancakeswap-v3/types.js +0 -3
- package/build/dex/pancakeswap-v3/types.js.map +0 -1
- package/build/dex/quickswap/camelot-v3.d.ts +0 -6
- package/build/dex/quickswap/camelot-v3.js +0 -19
- package/build/dex/quickswap/camelot-v3.js.map +0 -1
- package/build/dex/quickswap/zyberswap-v3.d.ts +0 -6
- package/build/dex/quickswap/zyberswap-v3.js +0 -19
- package/build/dex/quickswap/zyberswap-v3.js.map +0 -1
- package/build/dex/quickswap-v3.d.ts +0 -21
- package/build/dex/quickswap-v3.js +0 -40
- package/build/dex/quickswap-v3.js.map +0 -1
- package/build/dex/ramses-v2/config.d.ts +0 -4
- package/build/dex/ramses-v2/config.js +0 -28
- package/build/dex/ramses-v2/config.js.map +0 -1
- package/build/dex/ramses-v2/constants.d.ts +0 -28
- package/build/dex/ramses-v2/constants.js +0 -35
- package/build/dex/ramses-v2/constants.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/BitMath.d.ts +0 -4
- package/build/dex/ramses-v2/contract-math/BitMath.js +0 -93
- package/build/dex/ramses-v2/contract-math/BitMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/FixedPoint128.d.ts +0 -3
- package/build/dex/ramses-v2/contract-math/FixedPoint128.js +0 -8
- package/build/dex/ramses-v2/contract-math/FixedPoint128.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/FixedPoint96.d.ts +0 -4
- package/build/dex/ramses-v2/contract-math/FixedPoint96.js +0 -9
- package/build/dex/ramses-v2/contract-math/FixedPoint96.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/FullMath.d.ts +0 -4
- package/build/dex/ramses-v2/contract-math/FullMath.js +0 -19
- package/build/dex/ramses-v2/contract-math/FullMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/LiquidityMath.d.ts +0 -3
- package/build/dex/ramses-v2/contract-math/LiquidityMath.js +0 -22
- package/build/dex/ramses-v2/contract-math/LiquidityMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/Oracle.d.ts +0 -10
- package/build/dex/ramses-v2/contract-math/Oracle.js +0 -133
- package/build/dex/ramses-v2/contract-math/Oracle.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/SqrtPriceMath.d.ts +0 -10
- package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js +0 -91
- package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/SwapMath.d.ts +0 -8
- package/build/dex/ramses-v2/contract-math/SwapMath.js +0 -70
- package/build/dex/ramses-v2/contract-math/SwapMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/Tick.d.ts +0 -7
- package/build/dex/ramses-v2/contract-math/Tick.js +0 -45
- package/build/dex/ramses-v2/contract-math/Tick.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/TickBitMap.d.ts +0 -8
- package/build/dex/ramses-v2/contract-math/TickBitMap.js +0 -87
- package/build/dex/ramses-v2/contract-math/TickBitMap.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/TickMath.d.ts +0 -8
- package/build/dex/ramses-v2/contract-math/TickMath.js +0 -162
- package/build/dex/ramses-v2/contract-math/TickMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/UnsafeMath.d.ts +0 -3
- package/build/dex/ramses-v2/contract-math/UnsafeMath.js +0 -10
- package/build/dex/ramses-v2/contract-math/UnsafeMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/uniswap-v3-math.d.ts +0 -18
- package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js +0 -392
- package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/utils.d.ts +0 -3
- package/build/dex/ramses-v2/contract-math/utils.js +0 -16
- package/build/dex/ramses-v2/contract-math/utils.js.map +0 -1
- package/build/dex/ramses-v2/ramses-v2-pool.d.ts +0 -42
- package/build/dex/ramses-v2/ramses-v2-pool.js +0 -307
- package/build/dex/ramses-v2/ramses-v2-pool.js.map +0 -1
- package/build/dex/ramses-v2/ramses-v2.d.ts +0 -61
- package/build/dex/ramses-v2/ramses-v2.js +0 -690
- package/build/dex/ramses-v2/ramses-v2.js.map +0 -1
- package/build/dex/ramses-v2/types.d.ts +0 -154
- package/build/dex/ramses-v2/types.js +0 -9
- package/build/dex/ramses-v2/types.js.map +0 -1
- package/build/dex/ramses-v2/utils.d.ts +0 -6
- package/build/dex/ramses-v2/utils.js +0 -71
- package/build/dex/ramses-v2/utils.js.map +0 -1
- package/build/dex/solidly/forks-override/fvm.d.ts +0 -20
- package/build/dex/solidly/forks-override/fvm.js +0 -42
- package/build/dex/solidly/forks-override/fvm.js.map +0 -1
- package/build/dex/sushiswap-v3/config.d.ts +0 -4
- package/build/dex/sushiswap-v3/config.js +0 -132
- package/build/dex/sushiswap-v3/config.js.map +0 -1
- package/build/dex/sushiswap-v3/constants.d.ts +0 -4
- package/build/dex/sushiswap-v3/constants.js +0 -32
- package/build/dex/sushiswap-v3/constants.js.map +0 -1
- package/build/dex/sushiswap-v3/sushiswap-v3-original.d.ts +0 -56
- package/build/dex/sushiswap-v3/sushiswap-v3-original.js +0 -598
- package/build/dex/sushiswap-v3/sushiswap-v3-original.js.map +0 -1
- package/build/dex/sushiswap-v3/sushiswap-v3-pool.d.ts +0 -1
- package/build/dex/sushiswap-v3/sushiswap-v3-pool.js +0 -6
- package/build/dex/sushiswap-v3/sushiswap-v3-pool.js.map +0 -1
- package/build/dex/sushiswap-v3/sushiswap-v3.d.ts +0 -21
- package/build/dex/sushiswap-v3/sushiswap-v3.js +0 -58
- package/build/dex/sushiswap-v3/sushiswap-v3.js.map +0 -1
- package/build/dex/sushiswap-v3/token.d.ts +0 -6
- package/build/dex/sushiswap-v3/token.js +0 -23
- package/build/dex/sushiswap-v3/token.js.map +0 -1
- package/build/dex/sushiswap-v3/types.d.ts +0 -15
- package/build/dex/sushiswap-v3/types.js +0 -18
- package/build/dex/sushiswap-v3/types.js.map +0 -1
- package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.d.ts +0 -12
- package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js +0 -23
- package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js.map +0 -1
- package/build/dex/woo-fi/config.d.ts +0 -4
- package/build/dex/woo-fi/config.js +0 -141
- package/build/dex/woo-fi/config.js.map +0 -1
- package/build/dex/woo-fi/constants.d.ts +0 -5
- package/build/dex/woo-fi/constants.js +0 -20
- package/build/dex/woo-fi/constants.js.map +0 -1
- package/build/dex/woo-fi/types.d.ts +0 -48
- package/build/dex/woo-fi/types.js +0 -3
- package/build/dex/woo-fi/types.js.map +0 -1
- package/build/dex/woo-fi/woo-fi-decimal-math.d.ts +0 -14
- package/build/dex/woo-fi/woo-fi-decimal-math.js +0 -42
- package/build/dex/woo-fi/woo-fi-decimal-math.js.map +0 -1
- package/build/dex/woo-fi/woo-fi-math.d.ts +0 -31
- package/build/dex/woo-fi/woo-fi-math.js +0 -300
- package/build/dex/woo-fi/woo-fi-math.js.map +0 -1
- package/build/dex/woo-fi/woo-fi.d.ts +0 -65
- package/build/dex/woo-fi/woo-fi.js +0 -480
- package/build/dex/woo-fi/woo-fi.js.map +0 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.2.0",
|
|
3
|
+
"configurations": [
|
|
4
|
+
{
|
|
5
|
+
"type": "node",
|
|
6
|
+
"request": "launch",
|
|
7
|
+
"name": "Current",
|
|
8
|
+
"program": "${file}",
|
|
9
|
+
"preLaunchTask": "npm: build",
|
|
10
|
+
"sourceMaps": true,
|
|
11
|
+
"smartStep": true,
|
|
12
|
+
"internalConsoleOptions": "openOnSessionStart",
|
|
13
|
+
"outFiles": ["${workspaceFolder}/build/**/*.js"]
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -16,11 +16,14 @@ export declare class SimpleExchange {
|
|
|
16
16
|
protected augustusAddress: Address;
|
|
17
17
|
protected augustusInterface: Interface;
|
|
18
18
|
private provider;
|
|
19
|
+
private cache;
|
|
19
20
|
protected network: number;
|
|
20
21
|
protected dexmapKey: string;
|
|
21
22
|
readonly cacheStateKey: string;
|
|
23
|
+
private readonly cacheApprovesKey;
|
|
22
24
|
constructor(dexHelper: IDexHelper, dexKey: string);
|
|
23
25
|
private hasAugustusAllowance;
|
|
26
|
+
private getAllowance;
|
|
24
27
|
protected getApproveSimpleParam(token: Address, target: Address, amount: string): Promise<SimpleExchangeParam>;
|
|
25
28
|
protected buildSimpleParamWithoutWETHConversion(src: Address, srcAmount: NumberAsString, dest: Address, destAmount: NumberAsString, swapCallData: string, swapCallee: Address, spender?: Address, networkFee?: NumberAsString): Promise<SimpleExchangeParam>;
|
|
26
29
|
}
|
|
@@ -36,16 +36,34 @@ class SimpleExchange {
|
|
|
36
36
|
this.augustusAddress = dexHelper.config.data.augustusAddress;
|
|
37
37
|
this.augustusInterface = new abi_1.Interface(augustus_json_1.default);
|
|
38
38
|
this.provider = dexHelper.web3Provider;
|
|
39
|
+
this.cache = dexHelper.cache;
|
|
39
40
|
this.dexmapKey =
|
|
40
41
|
`${constants_1.CACHE_PREFIX}_${this.network}_${this.dexKey}_poolconfigs`.toLowerCase();
|
|
41
42
|
this.cacheStateKey =
|
|
42
43
|
`${constants_1.CACHE_PREFIX}_${this.network}_${this.dexKey}_states`.toLowerCase();
|
|
44
|
+
// if there's anything else to cache, this name could be more abstract
|
|
45
|
+
this.cacheApprovesKey =
|
|
46
|
+
`${constants_1.CACHE_PREFIX}_${this.network}_approves`.toLowerCase();
|
|
43
47
|
}
|
|
44
48
|
async hasAugustusAllowance(token, target, amount) {
|
|
45
49
|
if (token.toLowerCase() === constants_1.ETHER_ADDRESS.toLowerCase())
|
|
46
50
|
return true;
|
|
51
|
+
// TODO: is it possible that augustus address will be changed ??
|
|
52
|
+
// if so, it should be included in the cache key
|
|
53
|
+
const cacheKey = `${token}_${target}`;
|
|
54
|
+
// as approve is given to an infinite amount, we can cache only the target and token address
|
|
55
|
+
const isCachedApproved = await this.cache.sismember(this.cacheApprovesKey, cacheKey);
|
|
56
|
+
if (isCachedApproved)
|
|
57
|
+
return true;
|
|
58
|
+
const allowance = await this.getAllowance(this.augustusAddress, token, target);
|
|
59
|
+
const isApproved = BigInt(allowance) >= BigInt(amount);
|
|
60
|
+
if (isApproved)
|
|
61
|
+
await this.cache.sadd(this.cacheApprovesKey, cacheKey);
|
|
62
|
+
return isApproved;
|
|
63
|
+
}
|
|
64
|
+
async getAllowance(spender, token, target) {
|
|
47
65
|
const allowanceData = this.erc20Interface.encodeFunctionData('allowance', [
|
|
48
|
-
|
|
66
|
+
spender,
|
|
49
67
|
target,
|
|
50
68
|
]);
|
|
51
69
|
const allowanceRaw = await this.provider.eth.call({
|
|
@@ -53,7 +71,7 @@ class SimpleExchange {
|
|
|
53
71
|
data: allowanceData,
|
|
54
72
|
});
|
|
55
73
|
const allowance = this.erc20Interface.decodeFunctionResult('allowance', allowanceRaw);
|
|
56
|
-
return
|
|
74
|
+
return allowance.toString();
|
|
57
75
|
}
|
|
58
76
|
async getApproveSimpleParam(token, target, amount) {
|
|
59
77
|
const hasAllowance = await this.hasAugustusAllowance(token, target, amount);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple-exchange.js","sourceRoot":"","sources":["../../src/dex/simple-exchange.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA+C;AAC/C,gEAAiD;AAGjD,4CAA2D;AAC3D,qGAAqE;AACrE,mEAAyC;AACzC,yEAA+C;AAC/C,oCAAwC;AACxC,4CAAwC;AAKxC;;;;;;;GAOG;AACU,QAAA,uBAAuB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACjD,MAAM,qCAAqC,GAAG,GAAG,EAAE,CACxD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,+BAAuB,CAAC,CAAC;AAD/D,QAAA,qCAAqC,yCAC0B;AAE5E,MAAa,cAAc;
|
|
1
|
+
{"version":3,"file":"simple-exchange.js","sourceRoot":"","sources":["../../src/dex/simple-exchange.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@ import augustusABI from '../abi/augustus.json';
|
|
|
9
9
|
import { isETHAddress } from '../utils';
|
|
10
10
|
import { MAX_UINT } from '../constants';
|
|
11
11
|
import Web3 from 'web3';
|
|
12
|
-
import { IDexHelper } from '../dex-helper';
|
|
12
|
+
import { ICache, IDexHelper } from '../dex-helper';
|
|
13
13
|
import { AbiItem } from 'web3-utils';
|
|
14
14
|
|
|
15
15
|
/*
|
|
@@ -36,11 +36,13 @@ export class SimpleExchange {
|
|
|
36
36
|
protected augustusAddress: Address;
|
|
37
37
|
protected augustusInterface: Interface;
|
|
38
38
|
private provider: Web3;
|
|
39
|
+
private cache: ICache;
|
|
39
40
|
|
|
40
41
|
protected network: number;
|
|
41
42
|
protected dexmapKey: string;
|
|
42
43
|
|
|
43
44
|
readonly cacheStateKey: string;
|
|
45
|
+
private readonly cacheApprovesKey: string;
|
|
44
46
|
|
|
45
47
|
constructor(dexHelper: IDexHelper, public dexKey: string) {
|
|
46
48
|
this.simpleSwapHelper = new Interface(SimpleSwapHelperABI);
|
|
@@ -54,12 +56,17 @@ export class SimpleExchange {
|
|
|
54
56
|
this.augustusAddress = dexHelper.config.data.augustusAddress;
|
|
55
57
|
this.augustusInterface = new Interface(augustusABI);
|
|
56
58
|
this.provider = dexHelper.web3Provider;
|
|
59
|
+
this.cache = dexHelper.cache;
|
|
57
60
|
|
|
58
61
|
this.dexmapKey =
|
|
59
62
|
`${CACHE_PREFIX}_${this.network}_${this.dexKey}_poolconfigs`.toLowerCase();
|
|
60
63
|
|
|
61
64
|
this.cacheStateKey =
|
|
62
65
|
`${CACHE_PREFIX}_${this.network}_${this.dexKey}_states`.toLowerCase();
|
|
66
|
+
|
|
67
|
+
// if there's anything else to cache, this name could be more abstract
|
|
68
|
+
this.cacheApprovesKey =
|
|
69
|
+
`${CACHE_PREFIX}_${this.network}_approves`.toLowerCase();
|
|
63
70
|
}
|
|
64
71
|
|
|
65
72
|
private async hasAugustusAllowance(
|
|
@@ -68,9 +75,37 @@ export class SimpleExchange {
|
|
|
68
75
|
amount: string,
|
|
69
76
|
): Promise<boolean> {
|
|
70
77
|
if (token.toLowerCase() === ETHER_ADDRESS.toLowerCase()) return true;
|
|
78
|
+
// TODO: is it possible that augustus address will be changed ??
|
|
79
|
+
// if so, it should be included in the cache key
|
|
80
|
+
const cacheKey = `${token}_${target}`;
|
|
81
|
+
|
|
82
|
+
// as approve is given to an infinite amount, we can cache only the target and token address
|
|
83
|
+
const isCachedApproved = await this.cache.sismember(
|
|
84
|
+
this.cacheApprovesKey,
|
|
85
|
+
cacheKey,
|
|
86
|
+
);
|
|
71
87
|
|
|
72
|
-
|
|
88
|
+
if (isCachedApproved) return true;
|
|
89
|
+
|
|
90
|
+
const allowance = await this.getAllowance(
|
|
73
91
|
this.augustusAddress,
|
|
92
|
+
token,
|
|
93
|
+
target,
|
|
94
|
+
);
|
|
95
|
+
const isApproved = BigInt(allowance) >= BigInt(amount);
|
|
96
|
+
|
|
97
|
+
if (isApproved) await this.cache.sadd(this.cacheApprovesKey, cacheKey);
|
|
98
|
+
|
|
99
|
+
return isApproved;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
private async getAllowance(
|
|
103
|
+
spender: Address,
|
|
104
|
+
token: Address,
|
|
105
|
+
target: Address,
|
|
106
|
+
): Promise<string> {
|
|
107
|
+
const allowanceData = this.erc20Interface.encodeFunctionData('allowance', [
|
|
108
|
+
spender,
|
|
74
109
|
target,
|
|
75
110
|
]);
|
|
76
111
|
|
|
@@ -83,7 +118,8 @@ export class SimpleExchange {
|
|
|
83
118
|
'allowance',
|
|
84
119
|
allowanceRaw,
|
|
85
120
|
);
|
|
86
|
-
|
|
121
|
+
|
|
122
|
+
return allowance.toString();
|
|
87
123
|
}
|
|
88
124
|
|
|
89
125
|
protected async getApproveSimpleParam(
|
package/.idea/aws.xml
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="accountSettings">
|
|
4
|
-
<option name="activeProfile" value="profile:default" />
|
|
5
|
-
<option name="activeRegion" value="us-east-1" />
|
|
6
|
-
<option name="recentlyUsedProfiles">
|
|
7
|
-
<list>
|
|
8
|
-
<option value="profile:default" />
|
|
9
|
-
</list>
|
|
10
|
-
</option>
|
|
11
|
-
<option name="recentlyUsedRegions">
|
|
12
|
-
<list>
|
|
13
|
-
<option value="us-east-1" />
|
|
14
|
-
</list>
|
|
15
|
-
</option>
|
|
16
|
-
</component>
|
|
17
|
-
</project>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
<component name="ProjectCodeStyleConfiguration">
|
|
2
|
-
<code_scheme name="Project" version="173">
|
|
3
|
-
<ScalaCodeStyleSettings>
|
|
4
|
-
<option name="MULTILINE_STRING_CLOSING_QUOTES_ON_NEW_LINE" value="true" />
|
|
5
|
-
</ScalaCodeStyleSettings>
|
|
6
|
-
<TypeScriptCodeStyleSettings version="0">
|
|
7
|
-
<option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACKETS" value="true" />
|
|
8
|
-
<option name="USE_DOUBLE_QUOTES" value="false" />
|
|
9
|
-
<option name="SPACES_WITHIN_IMPORTS" value="true" />
|
|
10
|
-
</TypeScriptCodeStyleSettings>
|
|
11
|
-
<codeStyleSettings language="TypeScript">
|
|
12
|
-
<indentOptions>
|
|
13
|
-
<option name="INDENT_SIZE" value="2" />
|
|
14
|
-
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
15
|
-
<option name="TAB_SIZE" value="2" />
|
|
16
|
-
</indentOptions>
|
|
17
|
-
</codeStyleSettings>
|
|
18
|
-
</code_scheme>
|
|
19
|
-
</component>
|
package/.idea/misc.xml
DELETED
package/.idea/modules.xml
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="ProjectModuleManager">
|
|
4
|
-
<modules>
|
|
5
|
-
<module fileurl="file://$PROJECT_DIR$/.idea/paraswap-dex-lib.iml" filepath="$PROJECT_DIR$/.idea/paraswap-dex-lib.iml" />
|
|
6
|
-
</modules>
|
|
7
|
-
</component>
|
|
8
|
-
</project>
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<module type="JAVA_MODULE" version="4">
|
|
3
|
-
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
|
4
|
-
<exclude-output />
|
|
5
|
-
<content url="file://$MODULE_DIR$" />
|
|
6
|
-
<orderEntry type="inheritedJdk" />
|
|
7
|
-
<orderEntry type="sourceFolder" forTests="false" />
|
|
8
|
-
</component>
|
|
9
|
-
</module>
|
package/.idea/prettier.xml
DELETED