governanceConfig.ts
1 import { ChainId } from '@aave/contract-helpers'; 2 import { 3 AaveSafetyModule, 4 AaveV3Ethereum, 5 GovernanceV3Arbitrum, 6 GovernanceV3Avalanche, 7 GovernanceV3Base, 8 GovernanceV3BNB, 9 GovernanceV3Celo, 10 GovernanceV3Ethereum, 11 GovernanceV3Gnosis, 12 GovernanceV3Linea, 13 GovernanceV3Metis, 14 GovernanceV3Optimism, 15 GovernanceV3Polygon, 16 GovernanceV3Scroll, 17 GovernanceV3Sonic, 18 GovernanceV3ZkSync, 19 } from '@bgd-labs/aave-address-book'; 20 21 export const ipfsGateway = 'https://cloudflare-ipfs.com/ipfs'; 22 export const fallbackIpfsGateway = 'https://ipfs.io/ipfs'; 23 const subgraphApiKey = process.env.NEXT_PUBLIC_SUBGRAPH_API_KEY; 24 25 export interface VotingMachineConfig { 26 portalToMachineMap: { [votingPoralAddress: string]: string }; 27 votingPortalDataHelperAddress: string; 28 votingMachineAddress: string; 29 subgraphUrl: string; 30 } 31 32 export interface GovernanceV3Config { 33 coreChainId: ChainId; 34 votingChainIds: ChainId[]; 35 governanceCoreSubgraphUrl: string; 36 votingChainConfig: { [chainId: number]: VotingMachineConfig }; 37 payloadsControllerDataHelpers: { [chainId: number]: string }; 38 addresses: { 39 GOVERNANCE_CORE: string; 40 GOVERNANCE_DATA_HELPER: string; 41 WALLET_BALANCE_PROVIDER: string; 42 GOVERNANCE_META_HELPER: string; 43 TOKEN_POWER_HELPER: string; 44 }; 45 votingAssets: { 46 aaveTokenAddress: string; 47 aAaveTokenAddress: string; 48 stkAaveTokenAddress: string; 49 }; 50 } 51 52 const sepoliaVotingMachineConfig: VotingMachineConfig = { 53 portalToMachineMap: { 54 '0x1079bAa48E56065d43b4344866B187a485cb0A92': '0xA1995F1d5A8A247c064a76F336E1C2ecD24Ef0D9', 55 }, 56 votingPortalDataHelperAddress: '0x133210F3fe2deEB34e65deB6861ee3dF87393977', 57 votingMachineAddress: '0xA1995F1d5A8A247c064a76F336E1C2ecD24Ef0D9', 58 subgraphUrl: '', 59 }; 60 61 const fujiVotingMachineConfig: VotingMachineConfig = { 62 portalToMachineMap: { 63 '0x4f47EdF2577995aBd7B875Eed75b3F28a20E696F': '0x767AA57554690D23D1E0594E8746271C97e1A1e4', 64 }, 65 votingPortalDataHelperAddress: '0x133210F3fe2deEB34e65deB6861ee3dF87393977', 66 votingMachineAddress: '0x767AA57554690D23D1E0594E8746271C97e1A1e4', 67 subgraphUrl: '', 68 }; 69 70 type GovernanceChainConfig = { 71 [chainId: number]: GovernanceV3Config; 72 }; 73 74 export const governanceChainConfig: GovernanceChainConfig = { 75 [ChainId.sepolia]: { 76 coreChainId: ChainId.sepolia, 77 votingChainIds: [ChainId.sepolia, ChainId.fuji], 78 governanceCoreSubgraphUrl: '', 79 votingChainConfig: { 80 [ChainId.sepolia]: sepoliaVotingMachineConfig, 81 [ChainId.fuji]: fujiVotingMachineConfig, 82 }, 83 payloadsControllerDataHelpers: { 84 [ChainId.sepolia]: '0x6B9AF21B95FE20b5a878b43670c23124841ec31A', 85 [ChainId.fuji]: '0x6B9AF21B95FE20b5a878b43670c23124841ec31A', 86 }, 87 votingAssets: { 88 aaveTokenAddress: '0xdaEcee477B931b209e8123401EA37582ACB3811d', 89 stkAaveTokenAddress: '0x354032B31339853A3D682613749F183328d07275', 90 aAaveTokenAddress: '0x26aAB2aE39897338c2d91491C46c14a8c2a67919', 91 }, 92 addresses: { 93 GOVERNANCE_CORE: '0xc4ABF658C3Dda84225cF8A07d7D5Bb6Aa41d9E59', 94 GOVERNANCE_DATA_HELPER: '0x863f9De2f82AB502612E8B7d4f4863c8535cb8cA', 95 WALLET_BALANCE_PROVIDER: '0xCD4e0d6D2b1252E2A709B8aE97DBA31164C5a709', 96 GOVERNANCE_META_HELPER: '0x8aFD68632A4B4d9fB3F2956Ca921Eb2d69146491', 97 TOKEN_POWER_HELPER: '0x78b04AD18d76B6E2F41C84af4C4C5C5c61b60a10', 98 }, 99 }, 100 [ChainId.mainnet]: { 101 coreChainId: ChainId.mainnet, 102 votingChainIds: [ChainId.polygon, ChainId.avalanche], 103 governanceCoreSubgraphUrl: `https://gateway-arbitrum.network.thegraph.com/api/${subgraphApiKey}/subgraphs/id/A7QMszgomC9cnnfpAcqZVLr2DffvkGNfimD8iUSMiurK`, 104 votingChainConfig: { 105 [ChainId.mainnet]: { 106 portalToMachineMap: { 107 [GovernanceV3Ethereum.VOTING_PORTAL_ETH_ETH]: GovernanceV3Ethereum.VOTING_MACHINE, 108 }, 109 votingPortalDataHelperAddress: GovernanceV3Ethereum.VM_DATA_HELPER, 110 votingMachineAddress: GovernanceV3Ethereum.VOTING_MACHINE, 111 subgraphUrl: `https://gateway-arbitrum.network.thegraph.com/api/${subgraphApiKey}/subgraphs/id/2QPwuCfFtQ8WSCZoN3i9SmdoabMzbq2pmg4kRbrhymBV`, 112 }, 113 [ChainId.polygon]: { 114 portalToMachineMap: { 115 [GovernanceV3Ethereum.VOTING_PORTAL_ETH_POL]: GovernanceV3Polygon.VOTING_MACHINE, 116 }, 117 votingPortalDataHelperAddress: GovernanceV3Polygon.VM_DATA_HELPER, 118 votingMachineAddress: GovernanceV3Polygon.VOTING_MACHINE, 119 subgraphUrl: `https://gateway-arbitrum.network.thegraph.com/api/${subgraphApiKey}/subgraphs/id/72ysXwyqW9CvfqD8keWo2fEfdKZQRWGYdgC6cnvTSFKy`, 120 }, 121 [ChainId.avalanche]: { 122 portalToMachineMap: { 123 [GovernanceV3Ethereum.VOTING_PORTAL_ETH_AVAX]: GovernanceV3Avalanche.VOTING_MACHINE, 124 }, 125 votingPortalDataHelperAddress: GovernanceV3Avalanche.VM_DATA_HELPER, 126 votingMachineAddress: GovernanceV3Avalanche.VOTING_MACHINE, 127 subgraphUrl: `https://gateway-arbitrum.network.thegraph.com/api/${subgraphApiKey}/subgraphs/id/FngMWWGJV45McvV7GUBkrta9eoEi3sHZoH7MYnFQfZkr`, 128 }, 129 }, 130 payloadsControllerDataHelpers: { 131 [ChainId.mainnet]: GovernanceV3Ethereum.PC_DATA_HELPER, 132 [ChainId.polygon]: GovernanceV3Polygon.PC_DATA_HELPER, 133 [ChainId.avalanche]: GovernanceV3Avalanche.PC_DATA_HELPER, 134 [ChainId.optimism]: GovernanceV3Optimism.PC_DATA_HELPER, 135 [ChainId.xdai]: GovernanceV3Gnosis.PC_DATA_HELPER, 136 [ChainId.arbitrum_one]: GovernanceV3Arbitrum.PC_DATA_HELPER, 137 [ChainId.base]: GovernanceV3Base.PC_DATA_HELPER, 138 [ChainId.metis_andromeda]: GovernanceV3Metis.PC_DATA_HELPER, 139 [ChainId.bnb]: GovernanceV3BNB.PC_DATA_HELPER, 140 [ChainId.scroll]: GovernanceV3Scroll.PC_DATA_HELPER, 141 [ChainId.zksync]: GovernanceV3ZkSync.PC_DATA_HELPER, 142 [ChainId.linea]: GovernanceV3Linea.PC_DATA_HELPER, 143 [ChainId.sonic]: GovernanceV3Sonic.PC_DATA_HELPER, 144 [ChainId.celo]: GovernanceV3Celo.PC_DATA_HELPER, 145 }, 146 votingAssets: { 147 aaveTokenAddress: AaveV3Ethereum.ASSETS.AAVE.UNDERLYING, 148 aAaveTokenAddress: AaveV3Ethereum.ASSETS.AAVE.A_TOKEN, 149 stkAaveTokenAddress: AaveSafetyModule.STK_AAVE, 150 }, 151 addresses: { 152 GOVERNANCE_CORE: GovernanceV3Ethereum.GOVERNANCE, 153 GOVERNANCE_DATA_HELPER: GovernanceV3Ethereum.GOV_DATA_HELPER, 154 WALLET_BALANCE_PROVIDER: AaveV3Ethereum.WALLET_BALANCE_PROVIDER, 155 GOVERNANCE_META_HELPER: GovernanceV3Ethereum.META_DELEGATE_HELPER, 156 TOKEN_POWER_HELPER: '0xBb7baf0534423e3108E1D03c259104cDba2C1cB7', 157 }, 158 }, 159 }; 160 161 const coreNetwork = ChainId.mainnet; 162 export const governanceV3Config = governanceChainConfig[coreNetwork];