UNPKG

sample-name-service-sdk

Version:

Name Service SDK

197 lines (196 loc) 8.58 kB
"use strict"; 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");