UNPKG

axie-tools

Version:

TypeScript library and CLI tool for interacting with Axie Infinity marketplace and NFTs on Ronin network. Features marketplace operations (buy/sell/delist), batch transfers, and wallet information.

76 lines (75 loc) 2.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAxieId = exports.askToContinue = void 0; exports.getAccountInfo = getAccountInfo; exports.apiRequest = apiRequest; exports.ensureMarketplaceToken = ensureMarketplaceToken; const prompts_1 = require("@inquirer/prompts"); const ethers_1 = require("ethers"); const contracts_1 = require("@roninbuilders/contracts"); const contracts_2 = require("./contracts"); const axie_1 = require("./axie"); async function getAccountInfo(address, provider) { const axieIds = await (0, axie_1.getAxieIdsFromAccount)(address, provider); const wethContract = (0, contracts_2.getWETHContract)(provider); const usdcContract = (0, contracts_2.getUSDCContract)(provider); const balance = await provider.getBalance(address); const wethBalance = await wethContract.balanceOf(address); const usdcBalance = await usdcContract.balanceOf(address); const allowance = await wethContract.allowance(address, contracts_1.MARKETPLACE_GATEWAY_V_2.address); const axieContract = (0, contracts_2.getAxieContract)(provider); const isApprovedForAll = await axieContract.isApprovedForAll(address, contracts_1.MARKETPLACE_GATEWAY_V_2.address); return { address, ronBalance: (0, ethers_1.formatEther)(balance), wethBalance: (0, ethers_1.formatEther)(wethBalance), usdcBalance: (0, ethers_1.formatUnits)(usdcBalance, 6), allowance, isApprovedForAll, axieIds, }; } async function apiRequest(url, body = null, headers = {}, method = "POST") { const response = await fetch(url, { method, headers: { "Content-Type": "application/json", ...headers, }, ...(method === "GET" ? {} : { body }), }); const res = await response.json(); return res; } const askToContinue = async () => { const continueUsing = await (0, prompts_1.confirm)({ message: "🔄 Would you like to do something else?", }); if (!continueUsing) { console.log("👋 Goodbye!"); process.exit(0); } }; exports.askToContinue = askToContinue; async function ensureMarketplaceToken() { if (!process.env.MARKETPLACE_ACCESS_TOKEN) { const token = await (0, prompts_1.password)({ message: "🔑 Enter your Marketplace access token:", validate: (value) => value !== undefined && value !== "", }); process.env.MARKETPLACE_ACCESS_TOKEN = token; } return process.env.MARKETPLACE_ACCESS_TOKEN; } const getAxieId = async () => { const axieId = await (0, prompts_1.number)({ message: "🆔 Enter Axie ID:", validate: (value) => value !== undefined && !Number.isNaN(value), }); if (axieId === undefined) { console.log("❌ Invalid Axie ID!"); return null; } return axieId; }; exports.getAxieId = getAxieId;