@paraswap/dex-lib 2.20.3 → 2.21.1-chronos
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/.idea/aws.xml +17 -0
- package/.idea/codeStyles/Project.xml +19 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/misc.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/paraswap-dex-lib.iml +9 -0
- package/.idea/vcs.xml +6 -0
- package/build/config.js +2 -4
- package/build/config.js.map +1 -1
- package/build/dex/aave-v3/tokens/arbitrum.json +50 -0
- package/build/dex/aave-v3/tokens/avalanche.json +74 -0
- package/build/dex/aave-v3/tokens/fantom.json +62 -0
- package/build/dex/aave-v3/tokens/optimism.json +50 -0
- package/build/dex/aave-v3/tokens/polygon.json +116 -0
- package/build/dex/balancer-v2/balancer-v2.d.ts +3 -9
- package/build/dex/balancer-v2/balancer-v2.js +0 -83
- package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
- package/build/dex/balancer-v2/constants.d.ts +0 -4
- package/build/dex/balancer-v2/constants.js +1 -6
- package/build/dex/balancer-v2/constants.js.map +1 -1
- package/build/dex/balancer-v2/types.d.ts +1 -20
- package/build/dex/balancer-v2/types.js.map +1 -1
- package/build/dex/curve-v1/constants.d.ts +0 -1
- package/build/dex/curve-v1/constants.js +1 -2
- package/build/dex/curve-v1/constants.js.map +1 -1
- package/build/dex/curve-v1/curve-v1.d.ts +3 -9
- package/build/dex/curve-v1/curve-v1.js +4 -92
- package/build/dex/curve-v1/curve-v1.js.map +1 -1
- package/build/dex/curve-v1/types.d.ts +0 -24
- package/build/dex/curve-v1/types.js +1 -6
- package/build/dex/curve-v1/types.js.map +1 -1
- package/build/dex/curve-v1-factory/constants.d.ts +0 -1
- package/build/dex/curve-v1-factory/constants.js +1 -2
- package/build/dex/curve-v1-factory/constants.js.map +1 -1
- package/build/dex/curve-v1-factory/curve-v1-factory.d.ts +4 -11
- package/build/dex/curve-v1-factory/curve-v1-factory.js +0 -87
- package/build/dex/curve-v1-factory/curve-v1-factory.js.map +1 -1
- package/build/dex/curve-v1-factory/types.d.ts +0 -24
- package/build/dex/curve-v1-factory/types.js +1 -6
- package/build/dex/curve-v1-factory/types.js.map +1 -1
- package/build/dex/curve-v2.d.ts +7 -29
- package/build/dex/curve-v2.js +1 -91
- package/build/dex/curve-v2.js.map +1 -1
- package/build/dex/idex.d.ts +1 -1
- package/build/dex/index.js +2 -2
- package/build/dex/index.js.map +1 -1
- package/build/dex/pancakeswap-v3/pancakeswap-v3.d.ts +2 -2
- package/build/dex/pancakeswap-v3/types.d.ts +14 -0
- package/build/dex/pancakeswap-v3/types.js +3 -0
- package/build/dex/pancakeswap-v3/types.js.map +1 -0
- package/build/dex/pancakeswap-v3/utils.js.map +1 -1
- package/build/dex/quickswap/camelot-v3.d.ts +6 -0
- package/build/dex/quickswap/camelot-v3.js +19 -0
- package/build/dex/quickswap/camelot-v3.js.map +1 -0
- package/build/dex/simple-exchange.d.ts +0 -2
- package/build/dex/simple-exchange.js +0 -1
- package/build/dex/simple-exchange.js.map +1 -1
- package/build/dex/solidly/config.js +13 -0
- package/build/dex/solidly/config.js.map +1 -1
- package/build/dex/solidly/forks-override/chronos.d.ts +23 -0
- package/build/dex/solidly/forks-override/chronos.js +132 -0
- package/build/dex/solidly/forks-override/chronos.js.map +1 -0
- package/build/dex/solidly/solidly.js +1 -0
- package/build/dex/solidly/solidly.js.map +1 -1
- package/build/dex/uniswap-v2/uniswap-v2.d.ts +1 -1
- package/build/dex/uniswap-v2/uniswap-v2.js +1 -1
- package/build/dex/uniswap-v2/uniswap-v2.js.map +1 -1
- package/build/dex/uniswap-v3/constants.d.ts +0 -4
- package/build/dex/uniswap-v3/constants.js +1 -6
- package/build/dex/uniswap-v3/constants.js.map +1 -1
- package/build/dex/uniswap-v3/types.d.ts +3 -20
- package/build/dex/uniswap-v3/types.js.map +1 -1
- package/build/dex/uniswap-v3/uniswap-v3.d.ts +1 -7
- package/build/dex/uniswap-v3/uniswap-v3.js +1 -85
- package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
- package/build/dex/woo-fi-v2/config.js +6 -6
- package/build/dex/zerox/index.d.ts +1 -1
- package/build/dex/zerox/index.js +1 -1
- package/build/dex/zerox/index.js.map +1 -1
- package/build/implementations/local-paraswap-sdk.js +1 -5
- package/build/implementations/local-paraswap-sdk.js.map +1 -1
- package/build/router/directswap.js +1 -7
- package/build/router/directswap.js.map +1 -1
- package/build/router/index.js.map +1 -1
- package/build/router/payload-encoder.js +6 -16
- package/build/router/payload-encoder.js.map +1 -1
- package/build/types.d.ts +0 -2
- package/build/utils.d.ts +0 -2
- package/build/utils.js +1 -5
- package/build/utils.js.map +1 -1
- package/package.json +4 -6
- package/src/config.ts +2 -5
- package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +0 -79
- package/src/dex/balancer-v2/balancer-v2.ts +4 -153
- package/src/dex/balancer-v2/constants.ts +0 -5
- package/src/dex/balancer-v2/types.ts +1 -21
- package/src/dex/curve-v1/constants.ts +0 -2
- package/src/dex/curve-v1/curve-v1-e2e.test.ts +0 -57
- package/src/dex/curve-v1/curve-v1.ts +5 -144
- package/src/dex/curve-v1/types.ts +0 -26
- package/src/dex/curve-v1-factory/constants.ts +0 -2
- package/src/dex/curve-v1-factory/curve-v1-factory-e2e.test.ts +0 -1
- package/src/dex/curve-v1-factory/curve-v1-factory.ts +4 -140
- package/src/dex/curve-v1-factory/types.ts +0 -26
- package/src/dex/curve-v2.ts +8 -169
- package/src/dex/idex.ts +0 -6
- package/src/dex/index.ts +2 -2
- package/src/dex/pancakeswap-v3/pancakeswap-v3-e2e.test.ts +6 -3
- package/src/dex/pancakeswap-v3/pancakeswap-v3-integration.test.ts +14 -3
- package/src/dex/pancakeswap-v3/pancakeswap-v3.ts +3 -3
- package/src/dex/pancakeswap-v3/utils.ts +4 -1
- package/src/dex/simple-exchange.ts +0 -6
- package/src/dex/solidly/config.ts +14 -0
- package/src/dex/solidly/forks-override/chronos.ts +206 -0
- package/src/dex/solidly/solidly-e2e.test.ts +205 -31
- package/src/dex/solidly/solidly-integration.test.ts +141 -0
- package/src/dex/solidly/solidly.ts +1 -0
- package/src/dex/uniswap-v2/uniswap-v2.ts +0 -6
- package/src/dex/uniswap-v3/constants.ts +0 -5
- package/src/dex/uniswap-v3/types.ts +3 -23
- package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +2 -100
- package/src/dex/uniswap-v3/uniswap-v3.ts +3 -138
- package/src/dex/woo-fi-v2/config.ts +6 -6
- package/src/dex/zerox/index.ts +0 -7
- package/src/implementations/local-paraswap-sdk.ts +1 -8
- package/src/router/directswap.ts +0 -23
- package/src/router/index.ts +2 -0
- package/src/router/payload-encoder.ts +5 -22
- package/src/types.ts +0 -2
- package/src/utils.ts +0 -5
- package/tests/constants-e2e.ts +9 -4
- package/tests/utils-e2e.ts +20 -140
- package/tests/utils.ts +0 -52
- package/src/abi/DirectSwap.json +0 -1018
- package/src/abi/swaap-v2/vault.json +0 -918
- package/src/dex/swaap-v2/config.ts +0 -19
- package/src/dex/swaap-v2/constants.ts +0 -37
- package/src/dex/swaap-v2/rate-fetcher.ts +0 -214
- package/src/dex/swaap-v2/swaap-v2-e2e.test.ts +0 -172
- package/src/dex/swaap-v2/swaap-v2-integration.test.ts +0 -142
- package/src/dex/swaap-v2/swaap-v2.ts +0 -901
- package/src/dex/swaap-v2/types.ts +0 -95
- package/src/dex/swaap-v2/utils.ts +0 -36
- package/src/dex/swaap-v2/validators.ts +0 -128
|
@@ -905,38 +905,39 @@ describe('Solidly E2E', () => {
|
|
|
905
905
|
],
|
|
906
906
|
]);
|
|
907
907
|
|
|
908
|
-
const pairs: { name: string; sellAmount: string }[][] =
|
|
908
|
+
const pairs: { name: string; sellAmount: string; }[][] =
|
|
909
909
|
[
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
910
|
+
[
|
|
911
|
+
{
|
|
912
|
+
name: 'BNB',
|
|
913
|
+
sellAmount: '1000000000000000000',
|
|
914
|
+
},
|
|
915
|
+
{
|
|
916
|
+
name: 'USDT',
|
|
917
|
+
sellAmount: '10000000000000000000',
|
|
918
|
+
},
|
|
919
|
+
],
|
|
920
|
+
[
|
|
921
|
+
{
|
|
922
|
+
name: 'USDT',
|
|
923
|
+
sellAmount: '10000000000000000000',
|
|
924
|
+
},
|
|
925
|
+
{
|
|
926
|
+
name: 'USDC',
|
|
927
|
+
sellAmount: '10000000000000000000',
|
|
928
|
+
},
|
|
929
|
+
],
|
|
930
|
+
[
|
|
931
|
+
{
|
|
932
|
+
name: 'ETH',
|
|
933
|
+
sellAmount: '5000000000000000000',
|
|
934
|
+
},
|
|
935
|
+
{
|
|
936
|
+
name: 'BNB',
|
|
937
|
+
sellAmount: '1000000000000000000',
|
|
938
|
+
},
|
|
939
|
+
]
|
|
940
|
+
];
|
|
940
941
|
|
|
941
942
|
sideToContractMethods.forEach((contractMethods, side) =>
|
|
942
943
|
describe(`${side}`, () => {
|
|
@@ -1075,4 +1076,177 @@ describe('Solidly E2E', () => {
|
|
|
1075
1076
|
});
|
|
1076
1077
|
});
|
|
1077
1078
|
});
|
|
1079
|
+
|
|
1080
|
+
describe('Arbitrum', () => {
|
|
1081
|
+
const network = Network.ARBITRUM;
|
|
1082
|
+
const tokens = Tokens[network];
|
|
1083
|
+
const holders = Holders[network];
|
|
1084
|
+
const provider = new StaticJsonRpcProvider(
|
|
1085
|
+
generateConfig(network).privateHttpProvider,
|
|
1086
|
+
network,
|
|
1087
|
+
);
|
|
1088
|
+
|
|
1089
|
+
describe(`Chronos`, () => {
|
|
1090
|
+
const dexKey = 'Chronos';
|
|
1091
|
+
|
|
1092
|
+
const sideToContractMethods = new Map([
|
|
1093
|
+
[
|
|
1094
|
+
SwapSide.SELL,
|
|
1095
|
+
[
|
|
1096
|
+
ContractMethod.simpleSwap,
|
|
1097
|
+
ContractMethod.multiSwap,
|
|
1098
|
+
ContractMethod.megaSwap,
|
|
1099
|
+
],
|
|
1100
|
+
],
|
|
1101
|
+
]);
|
|
1102
|
+
|
|
1103
|
+
const pairs: { name: string; sellAmount: string; }[][] =
|
|
1104
|
+
[
|
|
1105
|
+
[
|
|
1106
|
+
{
|
|
1107
|
+
name: 'ETH',
|
|
1108
|
+
sellAmount: '1000000000000000000',
|
|
1109
|
+
},
|
|
1110
|
+
{
|
|
1111
|
+
name: 'USDC',
|
|
1112
|
+
sellAmount: '100000000',
|
|
1113
|
+
},
|
|
1114
|
+
],
|
|
1115
|
+
[
|
|
1116
|
+
{
|
|
1117
|
+
name: 'USDT',
|
|
1118
|
+
sellAmount: '100000000',
|
|
1119
|
+
},
|
|
1120
|
+
{
|
|
1121
|
+
name: 'USDC',
|
|
1122
|
+
sellAmount: '100000000',
|
|
1123
|
+
},
|
|
1124
|
+
],
|
|
1125
|
+
[
|
|
1126
|
+
{
|
|
1127
|
+
name: 'USDC',
|
|
1128
|
+
sellAmount: '100000000',
|
|
1129
|
+
},
|
|
1130
|
+
{
|
|
1131
|
+
name: 'DAI',
|
|
1132
|
+
sellAmount: '100000000000000000000',
|
|
1133
|
+
},
|
|
1134
|
+
],
|
|
1135
|
+
[
|
|
1136
|
+
{
|
|
1137
|
+
name: 'ARB',
|
|
1138
|
+
sellAmount: '100000000',
|
|
1139
|
+
},
|
|
1140
|
+
{
|
|
1141
|
+
name: 'ETH',
|
|
1142
|
+
sellAmount: '100000000000000000000',
|
|
1143
|
+
},
|
|
1144
|
+
]
|
|
1145
|
+
];
|
|
1146
|
+
|
|
1147
|
+
sideToContractMethods.forEach((contractMethods, side) =>
|
|
1148
|
+
describe(`${side}`, () => {
|
|
1149
|
+
contractMethods.forEach((contractMethod: ContractMethod) => {
|
|
1150
|
+
pairs.forEach(pair => {
|
|
1151
|
+
describe(`${contractMethod}`, () => {
|
|
1152
|
+
it(`${pair[0].name} -> ${pair[1].name}`, async () => {
|
|
1153
|
+
await testE2E(
|
|
1154
|
+
tokens[pair[0].name],
|
|
1155
|
+
tokens[pair[1].name],
|
|
1156
|
+
holders[pair[0].name],
|
|
1157
|
+
pair[0].sellAmount,
|
|
1158
|
+
side,
|
|
1159
|
+
dexKey,
|
|
1160
|
+
contractMethod,
|
|
1161
|
+
network,
|
|
1162
|
+
provider,
|
|
1163
|
+
);
|
|
1164
|
+
});
|
|
1165
|
+
it(`${pair[1].name} -> ${pair[0].name}`, async () => {
|
|
1166
|
+
await testE2E(
|
|
1167
|
+
tokens[pair[1].name],
|
|
1168
|
+
tokens[pair[0].name],
|
|
1169
|
+
holders[pair[1].name],
|
|
1170
|
+
pair[1].sellAmount,
|
|
1171
|
+
side,
|
|
1172
|
+
dexKey,
|
|
1173
|
+
contractMethod,
|
|
1174
|
+
network,
|
|
1175
|
+
provider,
|
|
1176
|
+
);
|
|
1177
|
+
});
|
|
1178
|
+
});
|
|
1179
|
+
});
|
|
1180
|
+
});
|
|
1181
|
+
}),
|
|
1182
|
+
);
|
|
1183
|
+
});
|
|
1184
|
+
|
|
1185
|
+
// describe(`simpleSwap`, () => {
|
|
1186
|
+
// describe(`Volatile`, () => {
|
|
1187
|
+
// it('ETH -> USDC', async () => {
|
|
1188
|
+
// await testE2E(
|
|
1189
|
+
// tokens.ETH,
|
|
1190
|
+
// tokens.USDC,
|
|
1191
|
+
// holders.ETH,
|
|
1192
|
+
// '1000000000000000000',
|
|
1193
|
+
// SwapSide.SELL,
|
|
1194
|
+
// dexKey,
|
|
1195
|
+
// ContractMethod.simpleSwap,
|
|
1196
|
+
// network,
|
|
1197
|
+
// provider,
|
|
1198
|
+
// );
|
|
1199
|
+
// });
|
|
1200
|
+
// });
|
|
1201
|
+
// describe(`Stable`, () => {
|
|
1202
|
+
// it('USDC -> USDT', async () => {
|
|
1203
|
+
// await testE2E(
|
|
1204
|
+
// tokens.USDC,
|
|
1205
|
+
// tokens.USDT,
|
|
1206
|
+
// holders.USDC,
|
|
1207
|
+
// '10000000',
|
|
1208
|
+
// SwapSide.SELL,
|
|
1209
|
+
// dexKey,
|
|
1210
|
+
// ContractMethod.simpleSwap,
|
|
1211
|
+
// network,
|
|
1212
|
+
// provider,
|
|
1213
|
+
// );
|
|
1214
|
+
// });
|
|
1215
|
+
// });
|
|
1216
|
+
// });
|
|
1217
|
+
//
|
|
1218
|
+
// describe(`multiSwap`, () => {
|
|
1219
|
+
// describe(`Volatile`, () => {
|
|
1220
|
+
// it('ETH -> USDC', async () => {
|
|
1221
|
+
// await testE2E(
|
|
1222
|
+
// tokens.ETH,
|
|
1223
|
+
// tokens.USDC,
|
|
1224
|
+
// holders.ETH,
|
|
1225
|
+
// '1000000000000000000',
|
|
1226
|
+
// SwapSide.SELL,
|
|
1227
|
+
// dexKey,
|
|
1228
|
+
// ContractMethod.multiSwap,
|
|
1229
|
+
// network,
|
|
1230
|
+
// provider,
|
|
1231
|
+
// );
|
|
1232
|
+
// });
|
|
1233
|
+
// });
|
|
1234
|
+
// describe(`Stable`, () => {
|
|
1235
|
+
// it('USDC -> USDT', async () => {
|
|
1236
|
+
// await testE2E(
|
|
1237
|
+
// tokens.USDC,
|
|
1238
|
+
// tokens.USDT,
|
|
1239
|
+
// holders.USDC,
|
|
1240
|
+
// '10000000',
|
|
1241
|
+
// SwapSide.SELL,
|
|
1242
|
+
// dexKey,
|
|
1243
|
+
// ContractMethod.multiSwap,
|
|
1244
|
+
// network,
|
|
1245
|
+
// provider,
|
|
1246
|
+
// );
|
|
1247
|
+
// });
|
|
1248
|
+
// });
|
|
1249
|
+
// });
|
|
1250
|
+
// });
|
|
1251
|
+
});
|
|
1078
1252
|
});
|
|
@@ -11,6 +11,7 @@ import { Interface, Result } from '@ethersproject/abi';
|
|
|
11
11
|
import solidlyPairABI from '../../abi/solidly/SolidlyPair.json';
|
|
12
12
|
import { SpiritSwapV2 } from './forks-override/spiritSwapV2';
|
|
13
13
|
import { Cone } from './forks-override/cone';
|
|
14
|
+
import { Chronos } from './forks-override/chronos';
|
|
14
15
|
|
|
15
16
|
const amounts18 = [0n, BI_POWS[18], 2000000000000000000n];
|
|
16
17
|
const amounts6 = [0n, BI_POWS[6], 2000000n];
|
|
@@ -628,4 +629,144 @@ describe('Solidly integration tests', () => {
|
|
|
628
629
|
});
|
|
629
630
|
});
|
|
630
631
|
});
|
|
632
|
+
|
|
633
|
+
describe('Arbitrum', () => {
|
|
634
|
+
const network = Network.ARBITRUM;
|
|
635
|
+
const dexHelper = new DummyDexHelper(network);
|
|
636
|
+
const checkOnChainPricing = constructCheckOnChainPricing(dexHelper);
|
|
637
|
+
|
|
638
|
+
describe('Chronos', function () {
|
|
639
|
+
const dexKey = 'Chronos';
|
|
640
|
+
const chronos = new Chronos(network, dexKey, dexHelper);
|
|
641
|
+
|
|
642
|
+
describe('UniswapV2 like pool', function () {
|
|
643
|
+
const TokenASymbol = 'USDC';
|
|
644
|
+
const tokenA = Tokens[network][TokenASymbol];
|
|
645
|
+
const TokenBSymbol = 'WETH';
|
|
646
|
+
const tokenB = Tokens[network][TokenBSymbol];
|
|
647
|
+
|
|
648
|
+
const amounts = amounts18;
|
|
649
|
+
|
|
650
|
+
it('getPoolIdentifiers and getPricesVolume', async function () {
|
|
651
|
+
const blocknumber = await dexHelper.web3Provider.eth.getBlockNumber();
|
|
652
|
+
const pools = await chronos.getPoolIdentifiers(
|
|
653
|
+
tokenA,
|
|
654
|
+
tokenB,
|
|
655
|
+
SwapSide.SELL,
|
|
656
|
+
blocknumber,
|
|
657
|
+
);
|
|
658
|
+
console.log(
|
|
659
|
+
`${TokenASymbol} <> ${TokenBSymbol} Pool Identifiers: `,
|
|
660
|
+
pools,
|
|
661
|
+
);
|
|
662
|
+
|
|
663
|
+
expect(pools.length).toBeGreaterThan(0);
|
|
664
|
+
|
|
665
|
+
const poolPrices = await chronos.getPricesVolume(
|
|
666
|
+
tokenA,
|
|
667
|
+
tokenB,
|
|
668
|
+
amounts,
|
|
669
|
+
SwapSide.SELL,
|
|
670
|
+
blocknumber,
|
|
671
|
+
pools,
|
|
672
|
+
);
|
|
673
|
+
console.log(
|
|
674
|
+
`${TokenASymbol} <> ${TokenBSymbol} Pool Prices: `,
|
|
675
|
+
poolPrices,
|
|
676
|
+
);
|
|
677
|
+
|
|
678
|
+
expect(poolPrices).not.toBeNull();
|
|
679
|
+
checkPoolPrices(poolPrices!, amounts, SwapSide.SELL, dexKey);
|
|
680
|
+
|
|
681
|
+
// Check if onchain pricing equals to calculated ones
|
|
682
|
+
|
|
683
|
+
for (const i in poolPrices || []) {
|
|
684
|
+
await checkOnChainPricing(
|
|
685
|
+
chronos,
|
|
686
|
+
'getAmountOut',
|
|
687
|
+
blocknumber,
|
|
688
|
+
poolPrices![i].prices,
|
|
689
|
+
poolPrices![i].poolAddresses![0],
|
|
690
|
+
tokenA.address,
|
|
691
|
+
amounts,
|
|
692
|
+
);
|
|
693
|
+
}
|
|
694
|
+
});
|
|
695
|
+
|
|
696
|
+
it('getTopPoolsForToken', async function () {
|
|
697
|
+
const poolLiquidity = await chronos.getTopPoolsForToken(
|
|
698
|
+
tokenA.address,
|
|
699
|
+
10,
|
|
700
|
+
);
|
|
701
|
+
console.log(`${TokenASymbol} Top Pools:`, poolLiquidity);
|
|
702
|
+
|
|
703
|
+
checkPoolsLiquidity(poolLiquidity, tokenA.address, dexKey);
|
|
704
|
+
});
|
|
705
|
+
});
|
|
706
|
+
|
|
707
|
+
describe('Curve like stable pool', function () {
|
|
708
|
+
const TokenASymbol = 'USDT';
|
|
709
|
+
const tokenA = Tokens[network][TokenASymbol];
|
|
710
|
+
const TokenBSymbol = 'USDC';
|
|
711
|
+
const tokenB = Tokens[network][TokenBSymbol];
|
|
712
|
+
|
|
713
|
+
const amounts = amounts6;
|
|
714
|
+
|
|
715
|
+
it('getPoolIdentifiers and getPricesVolume', async function () {
|
|
716
|
+
const blocknumber = await dexHelper.web3Provider.eth.getBlockNumber();
|
|
717
|
+
const pools = await chronos.getPoolIdentifiers(
|
|
718
|
+
tokenA,
|
|
719
|
+
tokenB,
|
|
720
|
+
SwapSide.SELL,
|
|
721
|
+
blocknumber,
|
|
722
|
+
);
|
|
723
|
+
console.log(
|
|
724
|
+
`${TokenASymbol} <> ${TokenBSymbol} Pool Identifiers: `,
|
|
725
|
+
pools,
|
|
726
|
+
);
|
|
727
|
+
|
|
728
|
+
expect(pools.length).toBeGreaterThan(0);
|
|
729
|
+
|
|
730
|
+
const poolPrices = await chronos.getPricesVolume(
|
|
731
|
+
tokenA,
|
|
732
|
+
tokenB,
|
|
733
|
+
amounts,
|
|
734
|
+
SwapSide.SELL,
|
|
735
|
+
blocknumber,
|
|
736
|
+
pools,
|
|
737
|
+
);
|
|
738
|
+
console.log(
|
|
739
|
+
`${TokenASymbol} <> ${TokenBSymbol} Pool Prices: `,
|
|
740
|
+
poolPrices,
|
|
741
|
+
);
|
|
742
|
+
|
|
743
|
+
expect(poolPrices).not.toBeNull();
|
|
744
|
+
checkPoolPrices(poolPrices!, amounts, SwapSide.SELL, dexKey);
|
|
745
|
+
|
|
746
|
+
// Check if onchain pricing equals to calculated ones
|
|
747
|
+
for (const i in poolPrices || []) {
|
|
748
|
+
await checkOnChainPricing(
|
|
749
|
+
chronos,
|
|
750
|
+
'getAmountOut',
|
|
751
|
+
blocknumber,
|
|
752
|
+
poolPrices![i].prices,
|
|
753
|
+
poolPrices![i].poolAddresses![0],
|
|
754
|
+
tokenA.address,
|
|
755
|
+
amounts,
|
|
756
|
+
);
|
|
757
|
+
}
|
|
758
|
+
});
|
|
759
|
+
|
|
760
|
+
it('getTopPoolsForToken', async function () {
|
|
761
|
+
const poolLiquidity = await chronos.getTopPoolsForToken(
|
|
762
|
+
tokenA.address,
|
|
763
|
+
10,
|
|
764
|
+
);
|
|
765
|
+
console.log(`${TokenASymbol} Top Pools:`, poolLiquidity);
|
|
766
|
+
|
|
767
|
+
checkPoolsLiquidity(poolLiquidity, tokenA.address, dexKey);
|
|
768
|
+
});
|
|
769
|
+
});
|
|
770
|
+
});
|
|
771
|
+
});
|
|
631
772
|
});
|
|
@@ -788,15 +788,9 @@ export class UniswapV2
|
|
|
788
788
|
destToken: Address,
|
|
789
789
|
srcAmount: NumberAsString,
|
|
790
790
|
destAmount: NumberAsString,
|
|
791
|
-
expectedAmount: NumberAsString,
|
|
792
791
|
_data: UniswapData,
|
|
793
792
|
side: SwapSide,
|
|
794
793
|
permit: string,
|
|
795
|
-
uuid: string,
|
|
796
|
-
feePercent: NumberAsString,
|
|
797
|
-
deadline: NumberAsString,
|
|
798
|
-
partner: string,
|
|
799
|
-
beneficiary: string,
|
|
800
794
|
contractMethod?: string,
|
|
801
795
|
): TxInfo<UniswapParam> {
|
|
802
796
|
if (!contractMethod) throw new Error(`contractMethod need to be passed`);
|
|
@@ -34,8 +34,3 @@ export const ZERO_ORACLE_OBSERVATION = {
|
|
|
34
34
|
export const OUT_OF_RANGE_ERROR_POSTFIX = `INVALID_TICK_BIT_MAP_RANGES`;
|
|
35
35
|
|
|
36
36
|
export const DEFAULT_POOL_INIT_CODE_HASH = `0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54`;
|
|
37
|
-
|
|
38
|
-
export enum DirectMethods {
|
|
39
|
-
directSell = 'directUniV3Swap',
|
|
40
|
-
directBuy = 'directUniV3Buy',
|
|
41
|
-
}
|
|
@@ -57,7 +57,6 @@ export type UniswapV3Data = {
|
|
|
57
57
|
tokenOut: Address;
|
|
58
58
|
fee: NumberAsString;
|
|
59
59
|
}[];
|
|
60
|
-
isApproved?: boolean;
|
|
61
60
|
};
|
|
62
61
|
|
|
63
62
|
export type DexParams = {
|
|
@@ -73,7 +72,7 @@ export type DexParams = {
|
|
|
73
72
|
initHash: string;
|
|
74
73
|
};
|
|
75
74
|
|
|
76
|
-
export type
|
|
75
|
+
export type UniswapV3SellParam = {
|
|
77
76
|
path: string;
|
|
78
77
|
recipient: Address;
|
|
79
78
|
deadline: string;
|
|
@@ -81,7 +80,7 @@ export type UniswapV3SimpleSwapSellParam = {
|
|
|
81
80
|
amountOutMinimum: NumberAsString;
|
|
82
81
|
};
|
|
83
82
|
|
|
84
|
-
export type
|
|
83
|
+
export type UniswapV3BuyParam = {
|
|
85
84
|
path: string;
|
|
86
85
|
recipient: Address;
|
|
87
86
|
deadline: string;
|
|
@@ -89,26 +88,7 @@ export type UniswapV3SimpleSwapBuyParam = {
|
|
|
89
88
|
amountInMaximum: NumberAsString;
|
|
90
89
|
};
|
|
91
90
|
|
|
92
|
-
export type
|
|
93
|
-
| UniswapV3SimpleSwapSellParam
|
|
94
|
-
| UniswapV3SimpleSwapBuyParam;
|
|
95
|
-
|
|
96
|
-
export type UniswapV3Param = [
|
|
97
|
-
fromToken: Address,
|
|
98
|
-
toToken: Address,
|
|
99
|
-
exchange: Address,
|
|
100
|
-
fromAmount: NumberAsString,
|
|
101
|
-
toAmount: NumberAsString,
|
|
102
|
-
expectedAmount: NumberAsString,
|
|
103
|
-
feePercent: NumberAsString,
|
|
104
|
-
deadline: NumberAsString,
|
|
105
|
-
partner: Address,
|
|
106
|
-
isApproved: boolean,
|
|
107
|
-
beneficiary: Address,
|
|
108
|
-
path: string,
|
|
109
|
-
permit: string,
|
|
110
|
-
uuid: string,
|
|
111
|
-
];
|
|
91
|
+
export type UniswapV3Param = UniswapV3SellParam | UniswapV3BuyParam;
|
|
112
92
|
|
|
113
93
|
export enum UniswapV3Functions {
|
|
114
94
|
exactInput = 'exactInput',
|
|
@@ -49,20 +49,6 @@ describe('UniswapV3 E2E', () => {
|
|
|
49
49
|
provider,
|
|
50
50
|
);
|
|
51
51
|
});
|
|
52
|
-
|
|
53
|
-
it('directSwap SELL WETH -> USDC', async () => {
|
|
54
|
-
await testE2E(
|
|
55
|
-
tokens['WETH'],
|
|
56
|
-
tokens['USDC'],
|
|
57
|
-
holders['WETH'],
|
|
58
|
-
'1000000000000000000',
|
|
59
|
-
SwapSide.SELL,
|
|
60
|
-
dexKey,
|
|
61
|
-
ContractMethod.directUniV3Swap,
|
|
62
|
-
network,
|
|
63
|
-
provider,
|
|
64
|
-
);
|
|
65
|
-
});
|
|
66
52
|
});
|
|
67
53
|
|
|
68
54
|
describe('UniswapV3 POLYGON', () => {
|
|
@@ -78,7 +64,7 @@ describe('UniswapV3 E2E', () => {
|
|
|
78
64
|
const tokenBSymbol: string = 'WETH';
|
|
79
65
|
const nativeTokenSymbol = NativeTokenSymbols[network];
|
|
80
66
|
|
|
81
|
-
const tokenAAmount: string = '
|
|
67
|
+
const tokenAAmount: string = '11111000000';
|
|
82
68
|
const tokenBAmount: string = '11000000000000000000';
|
|
83
69
|
const nativeTokenAmount = '11000000000000000000';
|
|
84
70
|
|
|
@@ -89,17 +75,9 @@ describe('UniswapV3 E2E', () => {
|
|
|
89
75
|
ContractMethod.simpleSwap,
|
|
90
76
|
ContractMethod.multiSwap,
|
|
91
77
|
ContractMethod.megaSwap,
|
|
92
|
-
ContractMethod.directUniV3Swap,
|
|
93
|
-
],
|
|
94
|
-
],
|
|
95
|
-
[
|
|
96
|
-
SwapSide.BUY,
|
|
97
|
-
[
|
|
98
|
-
ContractMethod.simpleBuy,
|
|
99
|
-
ContractMethod.buy,
|
|
100
|
-
ContractMethod.directUniV3Buy,
|
|
101
78
|
],
|
|
102
79
|
],
|
|
80
|
+
[SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
|
|
103
81
|
]);
|
|
104
82
|
|
|
105
83
|
sideToContractMethods.forEach((contractMethods, side) =>
|
|
@@ -224,80 +202,4 @@ describe('UniswapV3 E2E', () => {
|
|
|
224
202
|
}),
|
|
225
203
|
);
|
|
226
204
|
});
|
|
227
|
-
|
|
228
|
-
describe('UniswapV3 Optimism', () => {
|
|
229
|
-
const network = Network.OPTIMISM;
|
|
230
|
-
const tokens = Tokens[network];
|
|
231
|
-
const holders = Holders[network];
|
|
232
|
-
const provider = new StaticJsonRpcProvider(
|
|
233
|
-
generateConfig(network).privateHttpProvider,
|
|
234
|
-
network,
|
|
235
|
-
);
|
|
236
|
-
|
|
237
|
-
const tokenASymbol: string = 'OP';
|
|
238
|
-
const tokenBSymbol: string = 'ETH';
|
|
239
|
-
const nativeTokenSymbol = NativeTokenSymbols[network];
|
|
240
|
-
|
|
241
|
-
const tokenAAmount: string = '1000000000000000000';
|
|
242
|
-
const tokenBAmount: string = '1000000000000000000';
|
|
243
|
-
const nativeTokenAmount = '1000000000000000000';
|
|
244
|
-
|
|
245
|
-
const sideToContractMethods = new Map([
|
|
246
|
-
[
|
|
247
|
-
SwapSide.SELL,
|
|
248
|
-
[
|
|
249
|
-
ContractMethod.simpleSwap,
|
|
250
|
-
ContractMethod.multiSwap,
|
|
251
|
-
ContractMethod.megaSwap,
|
|
252
|
-
],
|
|
253
|
-
],
|
|
254
|
-
[SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
|
|
255
|
-
]);
|
|
256
|
-
|
|
257
|
-
sideToContractMethods.forEach((contractMethods, side) =>
|
|
258
|
-
contractMethods.forEach((contractMethod: ContractMethod) => {
|
|
259
|
-
describe(`${contractMethod}`, () => {
|
|
260
|
-
it(`${network} ${side} ${contractMethod} ${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
|
|
261
|
-
await testE2E(
|
|
262
|
-
tokens[nativeTokenSymbol],
|
|
263
|
-
tokens[tokenASymbol],
|
|
264
|
-
holders[nativeTokenSymbol],
|
|
265
|
-
side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
|
|
266
|
-
side,
|
|
267
|
-
dexKey,
|
|
268
|
-
contractMethod,
|
|
269
|
-
network,
|
|
270
|
-
provider,
|
|
271
|
-
);
|
|
272
|
-
});
|
|
273
|
-
it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
|
|
274
|
-
await testE2E(
|
|
275
|
-
tokens[tokenASymbol],
|
|
276
|
-
tokens[nativeTokenSymbol],
|
|
277
|
-
holders[tokenASymbol],
|
|
278
|
-
side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
|
|
279
|
-
side,
|
|
280
|
-
dexKey,
|
|
281
|
-
contractMethod,
|
|
282
|
-
network,
|
|
283
|
-
provider,
|
|
284
|
-
);
|
|
285
|
-
});
|
|
286
|
-
it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${tokenBSymbol}`, async () => {
|
|
287
|
-
await testE2E(
|
|
288
|
-
tokens[tokenASymbol],
|
|
289
|
-
tokens[tokenBSymbol],
|
|
290
|
-
holders[tokenASymbol],
|
|
291
|
-
side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
|
|
292
|
-
side,
|
|
293
|
-
dexKey,
|
|
294
|
-
contractMethod,
|
|
295
|
-
network,
|
|
296
|
-
provider,
|
|
297
|
-
);
|
|
298
|
-
});
|
|
299
|
-
});
|
|
300
|
-
}),
|
|
301
|
-
);
|
|
302
|
-
});
|
|
303
205
|
});
|