UNPKG

@agentek/tools

Version:

Blockchain tools for AI agents

65 lines 3.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getCoinBalance = exports.getCoinTokenMetadata = void 0; const zod_1 = require("zod"); const client_js_1 = require("../client.js"); const constants_js_1 = require("./constants.js"); const utils_js_1 = require("../utils.js"); const getCoinTokenMetadataParameters = zod_1.z.object({ chainId: zod_1.z.number().describe("Chain ID where the Coins contract is deployed (e.g. 1 for Ethereum, 8453 for Base)"), tokenId: zod_1.z.string().describe("The ERC6909 token ID as a decimal string (often derived from an address)"), }); exports.getCoinTokenMetadata = (0, client_js_1.createTool)({ name: "getCoinTokenMetadata", description: "Returns the name, symbol, and URI of a given ERC6909 token ID from the Coins contract.", parameters: getCoinTokenMetadataParameters, execute: async (client, args) => { const { chainId, tokenId } = args; const tokenIdBigInt = BigInt(tokenId); const publicClient = client.getPublicClient(chainId); const [name, symbol, uri] = await Promise.all([ publicClient.readContract({ address: constants_js_1.COINS_ADDRESS, abi: constants_js_1.coinsAbi, functionName: "name", args: [tokenIdBigInt], }), publicClient.readContract({ address: constants_js_1.COINS_ADDRESS, abi: constants_js_1.coinsAbi, functionName: "symbol", args: [tokenIdBigInt], }), publicClient.readContract({ address: constants_js_1.COINS_ADDRESS, abi: constants_js_1.coinsAbi, functionName: "uri", args: [tokenIdBigInt], }), ]); return { name, symbol, uri }; }, }); const getCoinBalanceParameters = zod_1.z.object({ chainId: zod_1.z.number().describe("Chain ID where the Coins contract is deployed (e.g. 1 for Ethereum, 8453 for Base)"), account: utils_js_1.addressSchema.describe("The wallet address to check the balance of (0x...)"), tokenId: zod_1.z.string().describe("The ERC6909 token ID as a decimal string"), }); exports.getCoinBalance = (0, client_js_1.createTool)({ name: "getCoinBalance", description: "Returns the balance of a given address for a specific ERC6909 token ID from the Coins contract.", parameters: getCoinBalanceParameters, execute: async (client, args) => { const { chainId, account, tokenId } = args; const tokenIdBigInt = BigInt(tokenId); const publicClient = client.getPublicClient(chainId); const balance = await publicClient.readContract({ address: constants_js_1.COINS_ADDRESS, abi: constants_js_1.coinsAbi, functionName: "balanceOf", args: [account, tokenIdBigInt], }); return { account, tokenId, balance: balance.toString() }; }, }); //# sourceMappingURL=tools.js.map