UNPKG

@agentek/tools

Version:

Blockchain tools for AI agents

65 lines 2.79 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(), tokenId: zod_1.z.string().describe("Token ID as a stringified bigint (usually 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(), account: utils_js_1.addressSchema.describe("User's wallet address"), tokenId: zod_1.z.string().describe("Token ID as a stringified bigint"), }); 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