@agentek/tools
Version:
Blockchain tools for AI agents
65 lines • 2.79 kB
JavaScript
"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