import { ContractName, SupportedNetworkId } from './types' const addresses: Record< ContractName, Partial> | string > = { /* eslint-disable @typescript-eslint/naming-convention */ BaseRegistrarImplementation: { '250': '0xeeFf86af5fCB860D9b924E1fef8e8E2c96184516', '4002': '0x631143737C110be02C0E08BCb3157E0EcC865863', '64240': '0xb412990D695B72e96DFf4C70C17A4cd728b53221', }, DNSRegistrar: { '250': '0xA0597B0597C60127A81FdE0450FB6aBf40787aC7', '4002': '0xc7Ecf9EE3C99148956b8Bc71E7D9e3d88836AAEC', '64240': '0xD2Ff57f1F7AF089595e5f61634Ff9044D8c63548', }, FTMRegistrarController: { '250': '0x386EDe5e994c8d352953eAF161b4F48B87f71498', '4002': '0x1bb693cbFf8cbf50B6fb1e01F4565Ea6f6993f62', '64240': '0x6381F4434821Bdb9327640f0644F1AD55f43f487', }, Multicall: '0xcA11bde05977b3631167028862bE2a173976CA11', NameWrapper: { '250': '0x978A3729EfA4D484C8Ceb7F018b634Cf202d7DE3', '4002': '0xC31871C43c7C8c4Cf38dc8e2134014D38ee7dd3b', '64240': '0x5d148CDB6460111C1AA41614018dc0DBb98cD05B', }, PublicResolver: { '250': '0x8860a32124C17e2E8eD673A3A67572B735968D14', '4002': '0xE302335DB4367ee4e9ea94aB2cB68B76Add0a1C1', '64240': '0xB4D1ef4328746214941A677ED44481f8355AcB93', }, FNSRegistry: { '250': '0xc56c98aF7c7699844F3817A98F46D1Aa4c620b67', '4002': '0x9a88Ea4248D16f7C345F362189fFa8364B5622E9', '64240': '0x3f3B3F47E18A3F478f447206d306e8833336C0A5', }, ReverseRegistrar: { '250': '0x03c412067687Db574d688bc7e3a3826318e8f97D', '4002': '0xe61D8534D88e57A108126E80a8714fC53e8486d9', '64240': '0x74b92D2eA3a1b4dD8D6784Dc7195853fC4B83d44', }, UniversalResolver: { '250': '0x51Ac036CA33dFfd5EC35FFd67e95B5f3871d3e88', '4002': '0x81085DE36006C1a0037cFEA08CD9987D7a3Bc4Aa', '64240': '0x4293cB418D174Fda1Cf7Db8416f75AD2813E3c28', }, BulkRenewal: { '250': '0xe8A1462f1e28A8590Ba802A534ea21C935680C78', '4002': '0x8E14086e3dBa9f899E61422889114620159304Bb', '64240': '0x93da3C2641D1bFAE1493D6323282883C460687a8', }, /* eslint-enable @typescript-eslint/naming-convention */ } export type ContractAddressFetch = (contractName: ContractName) => string export const getContractAddress = (networkId: SupportedNetworkId) => ((contractName: ContractName) => { try { return typeof addresses[contractName] === 'string' ? addresses[contractName] : addresses[contractName][networkId] } catch { throw new Error( `No address for contract ${contractName} on network ${networkId}`, ) } }) as ContractAddressFetch