import { Contract, ERC20 } from '@zomet/sdk';
import ABI from 'your/path/to/abi.json';
const contract: Contract = new evm.Contract('eth', ethContractAddress, ABI);
// you can init contract instance of standard eazier
// it is instance of Contract and it includes all of Contract properties and methods
const BEP20USDTContract: ERC20 = new ERC20('bsc', USDTAddressBEP20);
Call read methods of Contract ABI
await contract.call('symbol'); // USDT
await contract.call('decimals'); // 18
await contract.call('balanceOf', '0x...'); // 22.332133244
// or when you use ERC20 instance
const ERC20Token = new ERC20('polygon', contractAddress);
await ERC20Token.getSymbol(); // USDT
await ERC20Token.getDecimals(); // 18
await ERC20Token.getBalance('0x...'); // 22.332133244
await ERC20Token.getAllowance('0x...', '0x....'); // 0.1
await contract.getGasPrice(); // 6000000000 (6gwei)
Transaction Building and Transaction Gas estimation
const tx: EvmTransaction = {
method: 'transfer',
args: [recepientAddress, 1],
from: senderAddress,
value: 0, // may be if it native token sending
// you can set custom gas and gas price,
// they will added to transaction object
gas: 192380,
gasPrice: 5000000000
}
// building tranaction for signing
await contract.buildTransaction(tx);
// estimate gas for transaction, gas param shouldn't be in transaction object
contract.estimateGas(tx); // 31843
Getting user or block info from node
// https://docs.ethers.org/v5/api/providers/provider/
const provider = await contract.getProvider();
await provider.getTransactionCount(walletAddress) // 23
await provider.getBlock(766754) // block info Object
await provider.getBalance('0x...') // native token balance for user