contract-data.ts 4.2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
/* eslint-disable @typescript-eslint/no-var-requires */
import { predeploys as l2Addresses } from './predeploys'
import { Network } from './connect-contracts'

/**
 * This file is necessarily not DRY because it needs to be usable
 * in a browser context and can't take advantage of dynamic imports
 * (ie: the json needs to all be imported when transpiled)
 */

const Mainnet__Lib_AddressManager = require('../deployments/mainnet/Lib_AddressManager.json')
12
const Mainnet__CanonicalTransactionChain = require('../deployments/mainnet/CanonicalTransactionChain.json')
13
const Mainnet__L1CrossDomainMessenger = require('../deployments/mainnet/L1CrossDomainMessenger.json')
14
const Mainnet__StateCommitmentChain = require('../deployments/mainnet/StateCommitmentChain.json')
15
const Mainnet__Proxy__L1CrossDomainMessenger = require('../deployments/mainnet/Proxy__L1CrossDomainMessenger.json')
16
const Mainnet__BondManager = require('../deployments/mainnet/mockBondManager.json')
17 18

const Kovan__Lib_AddressManager = require('../deployments/kovan/Lib_AddressManager.json')
19
const Kovan__CanonicalTransactionChain = require('../deployments/kovan/CanonicalTransactionChain.json')
20
const Kovan__L1CrossDomainMessenger = require('../deployments/kovan/L1CrossDomainMessenger.json')
21
const Kovan__StateCommitmentChain = require('../deployments/kovan/StateCommitmentChain.json')
22
const Kovan__Proxy__L1CrossDomainMessenger = require('../deployments/kovan/Proxy__L1CrossDomainMessenger.json')
23
const Kovan__BondManager = require('../deployments/kovan/mockBondManager.json')
24 25

const Goerli__Lib_AddressManager = require('../deployments/goerli/Lib_AddressManager.json')
26
const Goerli__CanonicalTransactionChain = require('../deployments/goerli/CanonicalTransactionChain.json')
27
const Goerli__L1CrossDomainMessenger = require('../deployments/goerli/L1CrossDomainMessenger.json')
28
const Goerli__StateCommitmentChain = require('../deployments/goerli/StateCommitmentChain.json')
29
const Goerli__Proxy__L1CrossDomainMessenger = require('../deployments/goerli/Proxy__L1CrossDomainMessenger.json')
30
const Goerli__BondManager = require('../deployments/goerli/mockBondManager.json')
31 32 33 34 35 36 37 38

export const getL1ContractData = (network: Network) => {
  return {
    Lib_AddressManager: {
      mainnet: Mainnet__Lib_AddressManager,
      kovan: Kovan__Lib_AddressManager,
      goerli: Goerli__Lib_AddressManager,
    }[network],
39 40 41 42
    CanonicalTransactionChain: {
      mainnet: Mainnet__CanonicalTransactionChain,
      kovan: Kovan__CanonicalTransactionChain,
      goerli: Goerli__CanonicalTransactionChain,
43
    }[network],
44
    L1CrossDomainMessenger: {
45 46 47
      mainnet: Mainnet__L1CrossDomainMessenger,
      kovan: Kovan__L1CrossDomainMessenger,
      goerli: Goerli__L1CrossDomainMessenger,
48
    }[network],
49 50 51 52
    StateCommitmentChain: {
      mainnet: Mainnet__StateCommitmentChain,
      kovan: Kovan__StateCommitmentChain,
      goerli: Goerli__StateCommitmentChain,
53
    }[network],
54 55 56 57
    Proxy__L1CrossDomainMessenger: {
      mainnet: Mainnet__Proxy__L1CrossDomainMessenger,
      kovan: Kovan__Proxy__L1CrossDomainMessenger,
      goerli: Goerli__Proxy__L1CrossDomainMessenger,
58
    }[network],
59 60 61 62
    BondManager: {
      mainnet: Mainnet__BondManager,
      kovan: Kovan__BondManager,
      goerli: Goerli__BondManager,
63 64 65 66
    }[network],
  }
}

67
const OVM_ETH = require('../artifacts/contracts/L2/predeploys/OVM_ETH.sol/OVM_ETH.json')
68
const L2CrossDomainMessenger = require('../artifacts/contracts/L2/messaging/L2CrossDomainMessenger.sol/L2CrossDomainMessenger.json')
69 70
const OVM_L2ToL1MessagePasser = require('../artifacts/contracts/L2/predeploys/OVM_L2ToL1MessagePasser.sol/OVM_L2ToL1MessagePasser.json')
const OVM_DeployerWhitelist = require('../artifacts/contracts/L2/predeploys/OVM_DeployerWhitelist.sol/OVM_DeployerWhitelist.json')
71 72 73 74 75 76 77

export const getL2ContractData = () => {
  return {
    OVM_ETH: {
      abi: OVM_ETH.abi,
      address: l2Addresses.OVM_ETH,
    },
78 79 80
    L2CrossDomainMessenger: {
      abi: L2CrossDomainMessenger.abi,
      address: l2Addresses.L2CrossDomainMessenger,
81 82 83 84 85 86 87 88 89 90 91
    },
    OVM_L2ToL1MessagePasser: {
      abi: OVM_L2ToL1MessagePasser.abi,
      address: l2Addresses.OVM_L2ToL1MessagePasser,
    },
    OVM_DeployerWhitelist: {
      abi: OVM_DeployerWhitelist.abi,
      address: l2Addresses.OVM_DeployerWhitelist,
    },
  }
}