/ src / ui-config / stakeConfig.ts
stakeConfig.ts
 1  import { ChainId, Stake } from '@aave/contract-helpers';
 2  import { AaveSafetyModule, AaveV3Ethereum } from '@bgd-labs/aave-address-book';
 3  
 4  export interface StakeConfig {
 5    chainId: ChainId;
 6    stakeDataProvider: string;
 7    tokens: {
 8      [token: string]: {
 9        TOKEN_STAKING: string;
10        STAKING_REWARD_TOKEN: string;
11        TOKEN_ORACLE: string;
12      };
13    };
14  }
15  
16  export const stakeConfig: StakeConfig = {
17    chainId: ChainId.mainnet,
18    stakeDataProvider: '0xb12e82DF057BF16ecFa89D7D089dc7E5C1Dc057B',
19    tokens: {
20      [Stake.aave]: {
21        TOKEN_STAKING: AaveSafetyModule.STK_AAVE,
22        STAKING_REWARD_TOKEN: AaveV3Ethereum.ASSETS.AAVE.UNDERLYING,
23        TOKEN_ORACLE: AaveV3Ethereum.ASSETS.AAVE.ORACLE,
24      },
25      [Stake.bpt]: {
26        TOKEN_STAKING: AaveSafetyModule.STK_ABPT,
27        STAKING_REWARD_TOKEN: AaveV3Ethereum.ASSETS.AAVE.UNDERLYING,
28        TOKEN_ORACLE: AaveSafetyModule.STK_ABPT_ORACLE,
29      },
30      [Stake.gho]: {
31        TOKEN_STAKING: AaveSafetyModule.STK_GHO,
32        STAKING_REWARD_TOKEN: AaveV3Ethereum.ASSETS.AAVE.UNDERLYING,
33        TOKEN_ORACLE: '0x3f12643d3f6f874d39c2a4c9f2cd6f2dbac877fc', // CL Feed
34      },
35      [Stake.bptv2]: {
36        TOKEN_STAKING: AaveSafetyModule.STK_AAVE_WSTETH_BPTV2,
37        STAKING_REWARD_TOKEN: AaveV3Ethereum.ASSETS.AAVE.UNDERLYING,
38        TOKEN_ORACLE: AaveSafetyModule.STK_AAVE_WSTETH_BPTV2_ORACLE,
39      },
40    },
41  };
42  
43  export const stakeAssetNameFormatted = (stakeAssetName: Stake) => {
44    switch (stakeAssetName) {
45      case Stake.aave:
46        return 'AAVE';
47      case Stake.bpt:
48        return 'ABPT';
49      case Stake.gho:
50        return 'GHO';
51      case Stake.bptv2:
52        return 'ABPT V2';
53    }
54  };