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
JavaScript
;
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;