hardhat-ts-artifact-plugin
Plugin to generate artifacts in the typescript file to provide exact types of generated JSON objects.
Hardhat plugin.
What
This plugin generates non-generic types of JSON artifacts which can be used in Web3.js and Viem to get contract methods and events types (effectively replacing the need for Typechain). You can also use it to generate typescript files of your deployment information.
Example usage with web3.js:
import {Contract} from "web3"
import SimpleContract from "../artifacts/contracts/SimpleContract.sol/SimpleContract"
const contract = new Contract(SimpleContract.abi, "some address", web3)
//you now have available methods and events with their types
await contract.methods.simple().call()
Installation
up
npm install -s @chainsafe/hardhat-ts-artifact-plugin
Import the plugin in your hardhat.config.js
:
require("@chainsafe/hardhat-ts-artifact-plugin");
Or if you are using TypeScript, in your hardhat.config.ts
:
import "@chainsafe/hardhat-ts-artifact-plugin";
Tasks
This plugin adds the ts-artifact_ task to Hardhat:
Hardhat version 2.14.0
Usage: hardhat [GLOBAL OPTIONS] ts-artifact [--dest <STRING>]
OPTIONS:
--dest Path do directory where typescript artifacts should be created. Defaults to location next to artifacts json file
ts-artifact:
For global options help run: hardhat help
Configuration
This plugin extends the HardhatConfig
object with an optional
ts-artifact
field.
This is an example of how to set it:
module.exports = {
ts-artifact: {
// additional json files to include. Resolves from project root
additionalArtifacts: [],
// defaults to location next to artifact json
destination: undefined,
removeDestinationOnClean: true;
}
};