@@ -6,66 +6,59 @@ import { marketsData } from 'src/utils/marketsAndNetworksConfig';
66import { getAssetGroup } from '../helpers/shared/assetCorrelation.helpers' ;
77import { OrderType , SwapType } from '../types' ;
88
9- export const HOOK_ADAPTER_PER_TYPE : Record < AaveFlashLoanType , Record < SupportedChainId , string > > = {
10- [ AaveFlashLoanType . CollateralSwap ] : {
11- [ SupportedChainId . MAINNET ] : '0x029d584E847373B6373b01dfaD1a0C9BfB916382' ,
12- [ SupportedChainId . GNOSIS_CHAIN ] : '0x029d584E847373B6373b01dfaD1a0C9BfB916382' ,
13- [ SupportedChainId . ARBITRUM_ONE ] : '0x029d584E847373B6373b01dfaD1a0C9BfB916382' ,
14- [ SupportedChainId . AVALANCHE ] : '0x029d584E847373B6373b01dfaD1a0C9BfB916382' ,
15- [ SupportedChainId . BNB ] : '0x029d584E847373B6373b01dfaD1a0C9BfB916382' ,
16- [ SupportedChainId . POLYGON ] : '0x029d584E847373B6373b01dfaD1a0C9BfB916382' ,
17- [ SupportedChainId . BASE ] : '0x029d584E847373B6373b01dfaD1a0C9BfB916382' ,
18- [ SupportedChainId . LINEA ] : '0x029d584E847373B6373b01dfaD1a0C9BfB916382' ,
19- [ SupportedChainId . PLASMA ] : '0x029d584E847373B6373b01dfaD1a0C9BfB916382' ,
20- [ SupportedChainId . SEPOLIA ] : '' ,
21- [ SupportedChainId . INK ] : '' ,
22- [ SupportedChainId . SOLANA ] : '' ,
23- } ,
24- [ AaveFlashLoanType . DebtSwap ] : {
25- [ SupportedChainId . MAINNET ] : '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344' ,
26- [ SupportedChainId . GNOSIS_CHAIN ] : '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344' ,
27- [ SupportedChainId . ARBITRUM_ONE ] : '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344' ,
28- [ SupportedChainId . AVALANCHE ] : '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344' ,
29- [ SupportedChainId . BNB ] : '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344' ,
30- [ SupportedChainId . POLYGON ] : '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344' ,
31- [ SupportedChainId . BASE ] : '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344' ,
32- [ SupportedChainId . LINEA ] : '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344' ,
33- [ SupportedChainId . PLASMA ] : '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344' ,
34- [ SupportedChainId . SEPOLIA ] : '' ,
35- [ SupportedChainId . INK ] : '' ,
36- [ SupportedChainId . SOLANA ] : '' ,
9+ export type CowAdapterDeployment = {
10+ factory : string ;
11+ // EIP-712 domain name the factory verifies adapter order signatures against.
12+ factoryEip712Name : string ;
13+ adapters : Record < AaveFlashLoanType , string > ;
14+ } ;
15+
16+ const AAVE_V3_CORE_DEPLOYMENT : CowAdapterDeployment = {
17+ factory : '0xD2CC30cB0e77B80a34b879ccB6da67799e4ecD83' ,
18+ factoryEip712Name : 'AaveV3AdapterV3Factory' ,
19+ adapters : {
20+ [ AaveFlashLoanType . CollateralSwap ] : '0xa1138627412212e53C208e220696f14b0185a82c' ,
21+ [ AaveFlashLoanType . DebtSwap ] : '0xC898f87b572018ED25F501FFD620894a32dCa1AC' ,
22+ [ AaveFlashLoanType . RepayCollateral ] : '0x4AE46995af9ED4f4EdFC6FF1523b114EE4D7053a' ,
3723 } ,
38- [ AaveFlashLoanType . RepayCollateral ] : {
39- [ SupportedChainId . MAINNET ] : '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06' ,
40- [ SupportedChainId . GNOSIS_CHAIN ] : '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06' ,
41- [ SupportedChainId . ARBITRUM_ONE ] : '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06' ,
42- [ SupportedChainId . AVALANCHE ] : '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06' ,
43- [ SupportedChainId . BNB ] : '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06' ,
44- [ SupportedChainId . POLYGON ] : '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06' ,
45- [ SupportedChainId . BASE ] : '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06' ,
46- [ SupportedChainId . LINEA ] : '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06' ,
47- [ SupportedChainId . PLASMA ] : '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06' ,
48- [ SupportedChainId . SEPOLIA ] : '' ,
49- [ SupportedChainId . INK ] : '' ,
50- [ SupportedChainId . SOLANA ] : '' ,
24+ } ;
25+
26+ const AAVE_V3_LINEA_DEPLOYMENT : CowAdapterDeployment = {
27+ ...AAVE_V3_CORE_DEPLOYMENT ,
28+ factory : '0x3171FC716942a40DEDe8dD0B7885dd9f44eca176' ,
29+ } ;
30+
31+ // Prime gets its own factory because a factory is bound to a single pool.
32+ const AAVE_V3_PRIME_DEPLOYMENT : CowAdapterDeployment = {
33+ factory : '0xFdFA036213C375808135744E865767FD90897F0A' ,
34+ factoryEip712Name : 'AaveV3AdapterV3Factory' ,
35+ adapters : {
36+ [ AaveFlashLoanType . CollateralSwap ] : '0xdf36e299a5326dd284E3E7b5AD891b4262e32f0a' ,
37+ [ AaveFlashLoanType . DebtSwap ] : '0xC654F2E06448f1E0912B0b0Da5B32a98e4c32919' ,
38+ [ AaveFlashLoanType . RepayCollateral ] : '0xF04f7527C082be4F3802f26cC769d40da9a84e66' ,
5139 } ,
5240} ;
5341
54- export const ADAPTER_FACTORY : Record < SupportedChainId , string > = {
55- [ SupportedChainId . MAINNET ] : '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192' ,
56- [ SupportedChainId . GNOSIS_CHAIN ] : '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192' ,
57- [ SupportedChainId . ARBITRUM_ONE ] : '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192' ,
58- [ SupportedChainId . AVALANCHE ] : '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192' ,
59- [ SupportedChainId . BNB ] : '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192' ,
60- [ SupportedChainId . POLYGON ] : '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192' ,
61- [ SupportedChainId . BASE ] : '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192' ,
62- [ SupportedChainId . LINEA ] : '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192' ,
63- [ SupportedChainId . PLASMA ] : '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192' ,
64- [ SupportedChainId . SEPOLIA ] : '' ,
65- [ SupportedChainId . INK ] : '' ,
66- [ SupportedChainId . SOLANA ] : '' ,
42+ // Markets without an entry have no CoW adapters, so their flash-loan flows go through ParaSwap.
43+ const COW_ADAPTER_DEPLOYMENTS : Partial < Record < CustomMarket , CowAdapterDeployment > > = {
44+ [ CustomMarket . proto_mainnet_v3 ] : AAVE_V3_CORE_DEPLOYMENT ,
45+ [ CustomMarket . proto_lido_v3 ] : AAVE_V3_PRIME_DEPLOYMENT ,
46+ [ CustomMarket . proto_base_v3 ] : AAVE_V3_CORE_DEPLOYMENT ,
47+ [ CustomMarket . proto_arbitrum_v3 ] : AAVE_V3_CORE_DEPLOYMENT ,
48+ [ CustomMarket . proto_avalanche_v3 ] : AAVE_V3_CORE_DEPLOYMENT ,
49+ [ CustomMarket . proto_polygon_v3 ] : AAVE_V3_CORE_DEPLOYMENT ,
50+ [ CustomMarket . proto_bnb_v3 ] : AAVE_V3_CORE_DEPLOYMENT ,
51+ [ CustomMarket . proto_plasma_v3 ] : AAVE_V3_CORE_DEPLOYMENT ,
52+ [ CustomMarket . proto_gnosis_v3 ] : AAVE_V3_CORE_DEPLOYMENT ,
53+ [ CustomMarket . proto_linea_v3 ] : AAVE_V3_LINEA_DEPLOYMENT ,
6754} ;
6855
56+ export const getCowAdapterDeployment = ( market : CustomMarket ) : CowAdapterDeployment | undefined =>
57+ COW_ADAPTER_DEPLOYMENTS [ market ] ;
58+
59+ // Orders placed before these deployments can only be cancelled on the factory that created them.
60+ export const LEGACY_ADAPTER_FACTORY = '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192' ;
61+
6962export const DUST_PROTECTION_MULTIPLIER = 1.0003 ; // 3 BPS
7063
7164export const COW_UNSUPPORTED_ASSETS : Partial <
0 commit comments