ContractKit Class
The ContractKit
class provided by the Contract Kit is a factory class that facilitates the creation of Contract instances. Only one instance is required for each blockchain in the application and should be made widely available in the application.
Creation
When using the ContractKit
within a web application, an instance of the class must first be created. The only required argument during the creation of the ContractKit
is an instance of an APIClient, to allow it to make requests to the specified blockchain.
import { ContractKit } from "@wharfkit/contract"
import { APIClient } from "@wharfkit/antelope"
const contractKit = new ContractKit({
client: new APIClient("https://jungle4.greymass.com"),
})
This instance of the ContractKit
can now be used to generate any number of [Contract] instances for the specified blockchain.
Arguments
A single argument is required to initialize a ContractKit
instance:
client
: The APIClient used to fetch data from the blockchain.
Options
The ContractKit
allows for additional optional parameters to be passed for more advanced use cases.
ABICache
An optional instance of the ABICache interface to manually specify an alternative cache. By default every instance of the ContractKit
comes with a built-in ABICache, and this is only required for advanced use cases where overriding the default is required.
import { ContractKit } from "@wharfkit/contract"
import { APIClient, ABICache } from "@wharfkit/antelope"
const client = new APIClient("https://jungle4.greymass.com")
const kit = const kit = new ContractKit({
client,
}, {
abiCache: new ABICache(client)
});
ABIs
An array of existing ABI objects that have already been loaded in the application. This option can be used to pass ABIs directly to the ContractKit instance, eliminating the need for the ContractKit to fetch them using an APIClient.
import { ContractKit } from "@wharfkit/contract"
import { APIClient } from "@wharfkit/antelope"
import abi from "./abi.json" // ABI for a contract that will be loaded
const kit = const kit = new ContractKit({
client,
}, {
abis: [abi]
});
Usage
Load
Once a ContractKit
instance is created, the load
method can be used to instantiate a specific Contract instance.
const contract = await contractKit.load("eosio.token")
The only parameter required is the name of the account where the contract is deployed on-chain.