@routerprotocol/router-name-service-sdk
Version:
Router Name Service SDK
340 lines (339 loc) • 14.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getUSDCPrice = exports.getFeeManagerAddress = exports.getCustomInfo = exports.getRenewalFees = exports.getRNSInfo = exports.domainFees = exports.getRNSMetadata = exports.getRNSOwner = exports.getAllDomainsForOwner = exports.domainExists = exports.getAllDomains = exports.checkDomainAndCalculateFees = exports.fetchDefaultMintingFeeConfig = exports.fetchSourceChainContracts = void 0;
const router_chain_sdk_ts_1 = require("@routerprotocol/router-chain-sdk-ts");
const constants_1 = require("./constants");
;
async function fetchSourceChainContracts(chain_id, 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": {
"fetch_whitelisted": {
"chain_id": chain_id
}
}
}
})),
};
try {
let fetchSmartContractStateResult = await wasmClient.fetchSmartContractState(request.address, request.queryData);
return fetchSmartContractStateResult;
}
catch (err) {
}
}
exports.fetchSourceChainContracts = fetchSourceChainContracts;
async function fetchDefaultMintingFeeConfig(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_default_minting_fees": {}
}
}
})),
};
try {
let fetchSmartContractStateResult = await wasmClient.fetchSmartContractState(request.address, request.queryData);
return fetchSmartContractStateResult;
}
catch (err) {
}
}
exports.fetchDefaultMintingFeeConfig = fetchDefaultMintingFeeConfig;
async function checkDomainAndCalculateFees(domain_name, duration, chain_id, tokenAddr, network) {
const domainExistsResult = await domainExists(domain_name, network);
if (!domainExistsResult) {
const fees = await domainFees(domain_name, duration, chain_id, 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 getAllDomains(network, limit, start_key) {
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({
"all_tokens": {
"start_after": start_key,
"limit": limit
}
}))
};
try {
let fetchSmartContractStateResult = await wasmClient.fetchSmartContractState(request.address, request.queryData);
return fetchSmartContractStateResult;
}
catch (err) {
throw err;
}
}
exports.getAllDomains = getAllDomains;
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);
if (fetchSmartContractStateResult) {
return true;
}
}
catch (err) {
}
return false;
}
exports.domainExists = domainExists;
async function getAllDomainsForOwner(network, owner, limit, start_key) {
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,
"limit": limit,
"start_after": start_key
}
}))
};
try {
let fetchSmartContractStateResult = await wasmClient.fetchSmartContractState(request.address, request.queryData);
return fetchSmartContractStateResult;
}
catch (err) {
throw err;
}
}
exports.getAllDomainsForOwner = getAllDomainsForOwner;
async function getRNSOwner(network, domain, chain_id) {
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_nft_owner": {
"token_id": domain,
"chain_id": chain_id
}
}
}
}))
};
try {
let fetchSmartContractStateResult = await wasmClient.fetchSmartContractState(request.address, request.queryData);
return fetchSmartContractStateResult;
}
catch (err) {
throw err;
}
}
exports.getRNSOwner = getRNSOwner;
async function getRNSMetadata(domain, 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({
"nft_info": {
"token_id": domain
}
}))
};
try {
let fetchSmartContractStateResult = await wasmClient.fetchSmartContractState(request.address, request.queryData);
return fetchSmartContractStateResult;
}
catch (err) {
throw err;
}
}
exports.getRNSMetadata = getRNSMetadata;
async function domainFees(domain_name, duration, chain_id, 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,
"chain_id": chain_id,
"token_addr": tokenAddr
}
}
}
})),
};
try {
let fetchSmartContractStateResult = await wasmClient.fetchSmartContractState(request.address, request.queryData);
console.log(fetchSmartContractStateResult);
let fees = fetchSmartContractStateResult.data;
let usdcPrice = await getUSDCPrice(network);
let adjustedFeesInUSD = Math.floor((parseInt(fees.toString()) * parseInt(usdcPrice)) / 1e9);
return adjustedFeesInUSD;
}
catch (err) {
throw err;
//console.log(err);
}
}
exports.domainFees = domainFees;
async function getRNSInfo(network, domain_name, custom_info1, custom_info2) {
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_nft_info": {
"domain_name": domain_name,
"custom_info1": custom_info1,
"custom_info2": custom_info2
}
}
}
}))
};
try {
let fetchSmartContractStateResult = await wasmClient.fetchSmartContractState(request.address, request.queryData);
return fetchSmartContractStateResult;
}
catch (err) {
throw err;
}
}
exports.getRNSInfo = getRNSInfo;
async function getRenewalFees(duration, chain_id, token_addr, 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,
"chain_id": chain_id,
"token_addr": token_addr
}
}
}
})),
};
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);
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");