56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
import prompts from 'prompts';
|
|
import { createPublicClient, erc20Abi, http } from 'viem';
|
|
import { nextChain } from '../chains/next.js';
|
|
|
|
const client = createPublicClient({
|
|
chain: nextChain,
|
|
transport: http()
|
|
});
|
|
|
|
// you don't have to touch this function, it's already good
|
|
const readErc20Contract = async (contractAddress: `0x${string}`, func: any, args: any) => {
|
|
return client.readContract({
|
|
address: contractAddress,
|
|
abi: erc20Abi,
|
|
functionName: func,
|
|
args: args
|
|
})
|
|
}
|
|
|
|
async function main() {
|
|
const { contractAddress, accountAddress }:
|
|
{ contractAddress: `0x${string}`, accountAddress: `0x${string}` } = await prompts([{
|
|
type: 'text',
|
|
name: 'contractAddress',
|
|
message: 'Enter the contract address to explore:',
|
|
}, {
|
|
type: 'text',
|
|
name: 'accountAddress',
|
|
message: 'Enter the account address:',
|
|
}]);
|
|
|
|
if (!contractAddress || !accountAddress) {
|
|
console.error('You need to enter both a contract address and an account address.');
|
|
return;
|
|
}
|
|
|
|
|
|
// you can start coding here
|
|
// ...
|
|
|
|
|
|
console.log(`Contract address: ${contractAddress}`);
|
|
console.log(`========================================`);
|
|
console.log(`Name: ...`);
|
|
console.log(`Symbol: ...`);
|
|
console.log(`Decimals: ...`);
|
|
|
|
console.log(); console.log(); console.log();
|
|
|
|
console.log(`Account address: ${accountAddress}`);
|
|
console.log(`========================================`);
|
|
console.log(`Balance: ...`);
|
|
}
|
|
|
|
main();
|