@xlink-network/xlink-sdk
Version:
121 lines (119 loc) • 4.24 kB
JavaScript
import {
requestAPI
} from "./chunk-3OBVOHLZ.mjs";
import {
getStacksToken
} from "./chunk-JJNS722O.mjs";
import {
KnownChainId,
createBRC20Token,
createRunesToken
} from "./chunk-GZDQGY7B.mjs";
import {
isNotNull
} from "./chunk-E5Y3FGR6.mjs";
import {
BigNumber
} from "./chunk-KHTJNOQE.mjs";
// src/metaUtils/xlinkContractHelpers.ts
async function getBRC20SupportedRoutes(sdkContext, chainId) {
if (sdkContext.brc20.routesConfigCache != null && sdkContext.brc20.routesConfigCache.get(chainId) != null) {
return sdkContext.brc20.routesConfigCache.get(chainId);
}
const promise = _getBRC20SupportedRoutes(sdkContext, chainId).catch((err) => {
const cachedPromise = sdkContext.brc20.routesConfigCache?.get(chainId);
if (promise === cachedPromise) {
sdkContext.brc20.routesConfigCache?.delete(chainId);
}
throw err;
});
sdkContext.brc20.routesConfigCache?.set(chainId, promise);
return promise;
}
async function _getBRC20SupportedRoutes(sdkContext, chainId) {
const stacksChainId = chainId === KnownChainId.BRC20.Mainnet ? KnownChainId.Stacks.Mainnet : KnownChainId.Stacks.Testnet;
const resp = await requestAPI(
sdkContext,
{
method: "GET",
path: "/2024-10-01/brc20/supported-routes",
query: {
network: chainId === KnownChainId.BRC20.Mainnet ? "mainnet" : "testnet"
}
}
);
const routes = await Promise.all(
resp.routes.map(async (route) => {
const stacksToken = await getStacksToken(
stacksChainId,
route.stacksTokenContractAddress
);
if (stacksToken == null) return null;
return {
brc20Tick: route.brc20Tick,
brc20Token: createBRC20Token(route.brc20Tick),
stacksToken,
pegInPaused: route.pegInPaused,
pegInFeeRate: BigNumber.from(route.pegInFeeRate),
pegInFeeBitcoinAmount: route.pegInFeeBitcoinAmount == null ? null : BigNumber.from(route.pegInFeeBitcoinAmount),
pegOutPaused: route.pegOutPaused,
pegOutFeeRate: BigNumber.from(route.pegOutFeeRate),
pegOutFeeBitcoinAmount: route.pegOutFeeBitcoinAmount == null ? null : BigNumber.from(route.pegOutFeeBitcoinAmount)
};
})
);
return routes.filter(isNotNull);
}
async function getRunesSupportedRoutes(sdkContext, chainId) {
if (sdkContext.runes.routesConfigCache != null && sdkContext.runes.routesConfigCache.get(chainId) != null) {
return sdkContext.runes.routesConfigCache.get(chainId);
}
const promise = _getRunesSupportedRoutes(sdkContext, chainId).catch((err) => {
const cachedPromise = sdkContext.runes.routesConfigCache?.get(chainId);
if (promise === cachedPromise) {
sdkContext.runes.routesConfigCache?.delete(chainId);
}
throw err;
});
sdkContext.runes.routesConfigCache?.set(chainId, promise);
return promise;
}
async function _getRunesSupportedRoutes(sdkContext, chainId) {
const stacksChainId = chainId === KnownChainId.Runes.Mainnet ? KnownChainId.Stacks.Mainnet : KnownChainId.Stacks.Testnet;
const resp = await requestAPI(
sdkContext,
{
method: "GET",
path: "/2024-10-01/runes/supported-routes",
query: {
network: chainId === KnownChainId.Runes.Mainnet ? "mainnet" : "testnet"
}
}
);
const routes = await Promise.all(
resp.routes.map(async (route) => {
const stacksToken = await getStacksToken(
stacksChainId,
route.stacksTokenContractAddress
);
if (stacksToken == null) return null;
return {
runesId: route.runesId,
runesToken: createRunesToken(route.runesId),
stacksToken,
pegInPaused: route.pegInPaused,
pegInFeeRate: BigNumber.from(route.pegInFeeRate),
pegInFeeBitcoinAmount: route.pegInFeeBitcoinAmount == null ? null : BigNumber.from(route.pegInFeeBitcoinAmount),
pegOutPaused: route.pegOutPaused,
pegOutFeeRate: BigNumber.from(route.pegOutFeeRate),
pegOutFeeBitcoinAmount: route.pegOutFeeBitcoinAmount == null ? null : BigNumber.from(route.pegOutFeeBitcoinAmount)
};
})
);
return routes.filter(isNotNull);
}
export {
getBRC20SupportedRoutes,
getRunesSupportedRoutes
};
//# sourceMappingURL=chunk-BNOOAGFD.mjs.map