@edgeandnode/contract-utils
TypeScript icon, indicating that this package has built-in type declarations

2.4.2 • Public • Published

@edgeandnode/contract-utils

Exposes contract utils to interact with The Graph Network contracts.

Usage

# install the dependency

## pnpm
pnpm add @edgeandnode/contract-utils
## yarn
yarn add @edgeandnode/contract-utils
## bun
bun add @edgeandnode/contract-utils

Retrieve the contract address of a Graph Network contract on the specified network

import { resolveContractAddress } from '@edgeandnode/contract-utils'

// retrieve correct GNS address for arbitrum
const L2GNSAddress = resolveContractAddress({ network: 42161, contract: 'GNS' })
// retrieve correct GraphToken address for sepolia
const SepoliaGraphTokenAddress = resolveContractAddress({
  network: 11155111,
  contract: 'GraphToken',
})

Call the mintSignal L2GNS contract function from the generated actions.

import { createClient } from 'viem'
import { createConfig, http } from 'wagmi'
import { arbitrum, arbitrumSepolia, mainnet, sepolia } from 'wagmi/chains'
import { coinbaseWallet, injected, safe, walletConnect } from 'wagmi/connectors'

import { buildConfig, writeL2GnsMintSignal } from '@edgeandnode/contract-utils'

async function mint() {
  const config = createConfig({
    chains: [arbitrum, arbitrumSepolia, mainnet, sepolia],
    ssr,
    client({ chain }) {
      return createClient({ chain, transport: http() })
    },
    connectors: [
      coinbaseWallet({ appName: 'The Graph' }),
      injected(),
      safe({ allowedDomains: [/app.safe.global$/] }),
      walletConnect({
        projectId: 'WALLETCONNECT_PROJECT_ID',
        metadata: {
          name: 'The Graph',
          description: 'The Graph Network suite of apps wallet integration',
          url: 'https://thegraph.com',
          icons: [''],
        },
        qrModalOptions: {
          themeMode: 'dark',
        },
      }),
    ],
  })

  const mintTx = await writeL2GnsMintSignal(config, {
    account: `0x`,
    args: [0n, 0n, 0n],
  })
}

Generating wagmi types

# required a `.env.local` file with env vars (see below)
pnpm generate
# or
pnpm wagmi generate

You might get Max calls per sec rate limit reached (5/sec) when running the commands above. Since wagmi CLI caches the contract ABIs you can just keep re-running the command and the CLI will fetch more and more ABIs and eventually generates the utils.

Env vars (used to run wagmi generate)

You can just create free API keys and they will work with wagmi CLI:

  • ARBISCAN_KEY -> api key for reading contract ABIs from arbiscan.io
  • ETHERSCAN_KEY -> api key for reading contract ABIs from etherscan.io

References

Readme

Keywords

none

Package Sidebar

Install

npm i @edgeandnode/contract-utils

Weekly Downloads

713

Version

2.4.2

License

UNLICENSED

Unpacked Size

1.8 MB

Total Files

11

Last publish

Collaborators

  • neysofu
  • a3k5
  • nasmr
  • theodus
  • dnfodjo
  • cmwhited
  • fordn
  • migueldeelias
  • benface
  • andras_en
  • hayderkg
  • pcarranzav_edgeandnode
  • mitchhs12
  • lnsd
  • leoyvens
  • edge-and-node
  • lutter
  • nomativ