import { AVAX_TESTNET, Chain } from './chain' import avaxAddresses from '../assets/avax-addresses.json' export enum TokenState { PRE_SALE, PENDING, ENABLED, DISABLED, } export interface IAddresses { WrappedEther: string GnosisSafe: string Dai: string Deployer: string DeployerProxy: string RyzeFactory: string RyzeRouter: string RyzeAddressBook: string RyzeAllocator: string RyzeAllocatorProxy: string RyzeTokenDatabase: string RyzeTokenDatabaseProxy: string RyzeTokenConverter: string RyzeTokenConverterProxy: string RyzeAirdropController: string RyzeAirdropControllerProxy: string RyzeLiquidityInitializer: string RyzeLiquidityInitializerProxy: string RyzeStaking: string RyzeStakingProxy: string RyzeAllocationRewardToken: string RyzeAllocationRewardTokenProxy: string RyzeAllocationToken: string RyzeAllocationTokenProxy: string RyzeRealEstateToken: string RyzeRealEstateTokenProxy: string EthDaiPair: string } export type RyzeAddress = keyof IAddresses const toLowerCase = (rawAddresses: { [key in RyzeAddress]: string }) => Object.entries(rawAddresses) .reduce( (acc, [key, value]) => ({ ...acc, [key]: value.toLowerCase(), }), {} as { [key in RyzeAddress]: string }, ) const addressMap: { [chain in Chain]?: IAddresses } = { [AVAX_TESTNET]: toLowerCase(avaxAddresses), } export const getAddresses = (chain: Chain) => addressMap[chain] export const getAddress = (chain: Chain, name: RyzeAddress) => addressMap[chain]?.[name].toLowerCase()