sample-name-service-sdk
Version:
Name Service SDK
197 lines (196 loc) • 8.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getUSDCPrice = exports.getFeeManagerAddress = exports.getCustomInfo = exports.getRenewalFees = exports.domainFees = exports.domainExists = exports.checkDomainAndCalculateFees = exports.getAllDomains = void 0;
const router_chain_sdk_ts_1 = require("@routerprotocol/router-chain-sdk-ts");
const constants_1 = require("./constants");
;
async function getAllDomains(owner, network) {
const endpoint = (0, router_chain_sdk_ts_1.getEndpointsForNetwork)(network == 'testnet' ? router_chain_sdk_ts_1.Network.Testnet : router_chain_sdk_ts_1.Network.Mainnet);
const wasmClient = new router_chain_sdk_ts_1.ChainGrpcWasmApi(endpoint.grpcEndpoint);
const request = {
address: constants_1.constants[network].contract_address,
queryData: (0, router_chain_sdk_ts_1.toUtf8)(JSON.stringify({
"tokens": {
"owner": owner
}
}))
};
try {
let fetchSmartContractStateResult = await wasmClient.fetchSmartContractState(request.address, request.queryData);
return fetchSmartContractStateResult;
}
catch (err) {
throw err;
}
}
exports.getAllDomains = getAllDomains;
async function checkDomainAndCalculateFees(domain_name, duration, tokenAddr, network) {
const domainExistsResult = await domainExists(domain_name, network);
if (!domainExistsResult) {
const fees = await domainFees(domain_name, duration, tokenAddr, network);
const custom_data = await getCustomInfo(domain_name, network);
console.log(`Domain '${domain_name}' doesn't exists.`);
console.log(`Fees for '${domain_name}' is ${fees} `);
console.log(`No custom info found`);
const data = {
domainName: domain_name,
fees: fees
};
console.log(data);
return data;
}
else {
console.log(`Domain '${domain_name}' exists.`);
console.log(`Custom Info for '${domain_name}' is `);
const custom_data = await getCustomInfo(domain_name, network);
const data = {
domainName: domain_name,
data: custom_data?.data
};
console.log(data);
return data;
}
}
exports.checkDomainAndCalculateFees = checkDomainAndCalculateFees;
async function domainExists(domain_name, network) {
const endpoint = (0, router_chain_sdk_ts_1.getEndpointsForNetwork)(network == 'testnet' ? router_chain_sdk_ts_1.Network.Testnet : router_chain_sdk_ts_1.Network.Mainnet);
const wasmClient = new router_chain_sdk_ts_1.ChainGrpcWasmApi(endpoint.grpcEndpoint);
const request = {
address: constants_1.constants[network].contract_address,
queryData: (0, router_chain_sdk_ts_1.toUtf8)(JSON.stringify({
"owner_of": {
"token_id": domain_name
}
})),
};
try {
let fetchSmartContractStateResult = await wasmClient.fetchSmartContractState(request.address, request.queryData);
return fetchSmartContractStateResult;
}
catch (err) {
}
}
exports.domainExists = domainExists;
async function domainFees(domain_name, duration, tokenAddr, network) {
const endpoint = (0, router_chain_sdk_ts_1.getEndpointsForNetwork)(network == 'testnet' ? router_chain_sdk_ts_1.Network.Testnet : router_chain_sdk_ts_1.Network.Mainnet);
const wasmClient = new router_chain_sdk_ts_1.ChainGrpcWasmApi(endpoint.grpcEndpoint);
const request = {
address: constants_1.constants[network].contract_address,
queryData: (0, router_chain_sdk_ts_1.toUtf8)(JSON.stringify({
"extension": {
"msg": {
"get_fees_for_domain": {
"domain_name": domain_name,
"duration": duration,
"token_addr": tokenAddr
}
}
}
})),
};
try {
let fetchSmartContractStateResult = await wasmClient.fetchSmartContractState(request.address, request.queryData);
let fees = fetchSmartContractStateResult.data;
let usdcPrice = await getUSDCPrice(network);
let adjustedFeesInUSD = Math.floor((parseInt(fees.toString()) * parseInt(usdcPrice)) / 1e9);
//console.log("Fees in USD", adjustedFees)
return adjustedFeesInUSD;
}
catch (err) {
throw err;
//console.log(err);
}
}
exports.domainFees = domainFees;
async function getRenewalFees(duration, network) {
const endPoint = (0, router_chain_sdk_ts_1.getEndpointsForNetwork)(network == 'testnet' ? router_chain_sdk_ts_1.Network.Testnet : router_chain_sdk_ts_1.Network.Mainnet);
const wasmClient = new router_chain_sdk_ts_1.ChainGrpcWasmApi(endPoint.grpcEndpoint);
const request = {
address: constants_1.constants[network].contract_address,
queryData: (0, router_chain_sdk_ts_1.toUtf8)(JSON.stringify({
"extension": {
"msg": {
"get_renewal_fees": {
"duration": duration
}
}
}
})),
};
try {
let fetchSmartContractStateResult = await wasmClient.fetchSmartContractState(request.address, request.queryData);
let fees = fetchSmartContractStateResult.data;
let usdcPrice = await getUSDCPrice(network);
let adjustedFeesInUSD = Math.floor((parseInt(fees.toString()) * parseInt(usdcPrice)) / 1e9);
console.log(`Renewal fees is ${adjustedFeesInUSD}`);
return adjustedFeesInUSD;
}
catch (err) {
console.log(err);
}
}
exports.getRenewalFees = getRenewalFees;
async function getCustomInfo(domain_name, network) {
const endPoint = (0, router_chain_sdk_ts_1.getEndpointsForNetwork)(network == 'testnet' ? router_chain_sdk_ts_1.Network.Testnet : router_chain_sdk_ts_1.Network.Mainnet);
const wasmClient = new router_chain_sdk_ts_1.ChainGrpcWasmApi(endPoint.grpcEndpoint);
const request = {
address: constants_1.constants[network].contract_address,
queryData: (0, router_chain_sdk_ts_1.toUtf8)(JSON.stringify({
"extension": {
"msg": {
"get_custom_info_for_domain": {
"domain_name": domain_name
}
}
}
}))
};
try {
let fetchSmartContractStateResult = await wasmClient.fetchSmartContractState(request.address, request.queryData);
return fetchSmartContractStateResult;
}
catch (err) {
}
}
exports.getCustomInfo = getCustomInfo;
function getFeeManagerAddress(network) {
switch (network) {
case router_chain_sdk_ts_1.Network.AlphaDevnet:
return 'router17r3faruez552kdxy0lsjydmj0nu22mxax33azx326039hfe7pnhq7xma7f';
case router_chain_sdk_ts_1.Network.Devnet:
return 'router17r3faruez552kdxy0lsjydmj0nu22mxax33azx326039hfe7pnhq7xma7f';
case router_chain_sdk_ts_1.Network.Testnet:
return 'router1gh3r6u3j77nvsl2q2rq5r53qecwqx2gr2ya8dk7dy0e6lec8873quadtje';
case router_chain_sdk_ts_1.Network.Mainnet:
return 'router1nv8f4hy8792daa42q08akgzzc9r3u6f959qz7xknhzu2qzxd4kast3mg9n';
default:
throw new Error('Invalid network');
}
}
exports.getFeeManagerAddress = getFeeManagerAddress;
async function getUSDCPrice(network) {
const endPoint = (0, router_chain_sdk_ts_1.getEndpointsForNetwork)(network == 'testnet' ? router_chain_sdk_ts_1.Network.Testnet : router_chain_sdk_ts_1.Network.Mainnet);
const wasmClient = new router_chain_sdk_ts_1.ChainGrpcWasmApi(endPoint.grpcEndpoint);
const feeManagerAddress = getFeeManagerAddress(network == 'testnet' ? router_chain_sdk_ts_1.Network.Testnet : router_chain_sdk_ts_1.Network.Mainnet);
const queryMessage = JSON.stringify({
fetch_symbol_price: {
"symbol": "USDC"
}
});
const request = {
address: feeManagerAddress,
queryData: (0, router_chain_sdk_ts_1.toUtf8)(queryMessage)
};
try {
const queryResponse = await wasmClient.fetchSmartContractState(request.address, request.queryData);
let data = queryResponse.data.toString();
return data;
}
catch (err) {
console.error(err);
throw err;
}
}
exports.getUSDCPrice = getUSDCPrice;
// checkDomainAndCalculateFees("alice", 1, "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", "mainnet")
// getRenewalFees(2, "mainnet");