UNPKG

hardhat-graph-protocol

Version:

A hardhat plugin that extends the runtime environment to inject additional functionality related to the usage of the Graph Protocol.

97 lines (93 loc) 3.78 kB
import { getAccounts as getAccountsToolshed, getArbitrator, getDeployer, getGateway, getGovernor, getPauseGuardian, getSubgraphAvailabilityOracle, getTestAccounts, TEN_MILLION, } from '@graphprotocol/toolshed' import { setGRTBalance } from '@graphprotocol/toolshed/hardhat' import type { HardhatEthersProvider } from '@nomicfoundation/hardhat-ethers/internal/hardhat-ethers-provider' import type { HardhatEthersSigner } from '@nomicfoundation/hardhat-ethers/signers' import type { Addressable } from 'ethers' type Accounts = { getAccounts: () => ReturnType<typeof getAccountsToolshed> getDeployer: (accountIndex?: number) => ReturnType<typeof getDeployer> getGovernor: (accountIndex?: number) => ReturnType<typeof getGovernor> getArbitrator: (accountIndex?: number) => ReturnType<typeof getArbitrator> getPauseGuardian: (accountIndex?: number) => ReturnType<typeof getPauseGuardian> getSubgraphAvailabilityOracle: (accountIndex?: number) => ReturnType<typeof getSubgraphAvailabilityOracle> getGateway: (accountIndex?: number) => ReturnType<typeof getGateway> getTestAccounts: () => ReturnType<typeof getTestAccounts> } export function getAccounts( provider: HardhatEthersProvider, chainId: number, grtTokenAddress: string | Addressable | undefined, ): Accounts { return { getAccounts: async () => { const accounts = await getAccountsToolshed(provider) for (const account of Object.values(accounts)) { if (typeof account === 'object' && 'address' in account) { await setBalanceIfLocal(provider, chainId, grtTokenAddress, account) } else if (Array.isArray(account)) { for (const testAccount of account) { await setBalanceIfLocal(provider, chainId, grtTokenAddress, testAccount) } } } return accounts }, getDeployer: async (accountIndex?: number) => { const account = await getDeployer(provider, accountIndex) await setBalanceIfLocal(provider, chainId, grtTokenAddress, account) return account }, getGovernor: async (accountIndex?: number) => { const account = await getGovernor(provider, accountIndex) await setBalanceIfLocal(provider, chainId, grtTokenAddress, account) return account }, getArbitrator: async (accountIndex?: number) => { const account = await getArbitrator(provider, accountIndex) await setBalanceIfLocal(provider, chainId, grtTokenAddress, account) return account }, getPauseGuardian: async (accountIndex?: number) => { const account = await getPauseGuardian(provider, accountIndex) await setBalanceIfLocal(provider, chainId, grtTokenAddress, account) return account }, getSubgraphAvailabilityOracle: async (accountIndex?: number) => { const account = await getSubgraphAvailabilityOracle(provider, accountIndex) await setBalanceIfLocal(provider, chainId, grtTokenAddress, account) return account }, getGateway: async (accountIndex?: number) => { const account = await getGateway(provider, accountIndex) await setBalanceIfLocal(provider, chainId, grtTokenAddress, account) return account }, getTestAccounts: async () => { const accounts = await getTestAccounts(provider) for (const account of accounts) { await setBalanceIfLocal(provider, chainId, grtTokenAddress, account) } return accounts }, } } async function setBalanceIfLocal( provider: HardhatEthersProvider, chainId: number, grtTokenAddress: string | Addressable | undefined, account: HardhatEthersSigner, ) { if (grtTokenAddress && [1337, 31337].includes(chainId)) { await setGRTBalance(provider, grtTokenAddress, account.address, TEN_MILLION) } }