Generate a contract factory
What is a contract factory?
In the Zapper API, a
ContractFactory class is a convenience helper class that instantiates typed Ethers.js contract instances. These contracts require having the ABI defined in your app subdirectory. We use TypeChain to automatically generate types for these ABIs to simplify the developer experience of interacting with smart contracts.
Add an ABI to your app
For the Pickle Finnace app, we'll need the ABI for the Jar tokens that we intend to enumerate in our application. An easy way to find this ABI is to open any Pickle vault token on Etherscan, click the Contract tab, scroll down, and copy the JSON from the Contract ABI section.
Once copied, we'll save the JSON in
We'll need the same for any Pickle farm on Etherscan. Save the ABI from here to
Generate the contract factory class
In your terminal, run
pnpm studio generate:contract-factory pickle. This command will generate TypeChain interfaces for all contract ABIs you have in the
src/apps/pickle/contracts/abi directory, and generate our injectable
PickleContractFactory convenience class in
If you add more ABIs in the future, simply save the JSON in the
abis directory like in the previous step, and re-run the CLI script to regenerate the contract factory and types.
We're done here! In the next section, we'll use this contract to list out Pickle jar tokens in our application.