@crypto-dex-sdk/parachains-bifrost
Version:
Zenlink Parachains Impl for Bifrost
344 lines (336 loc) • 10.3 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// index.ts
var index_exports = {};
__export(index_exports, {
NodeCurrencyId: () => NodeCurrencyId2,
NodeCurrencyIdType: () => NodeCurrencyIdType,
NodeTokenSymbol: () => NodeTokenSymbol,
NodeTokenSymbolIndex: () => NodeTokenSymbolIndex,
PAIR_ADDRESSES: () => PAIR_ADDRESSES,
SwapRouter: () => SwapRouter,
TokenType2: () => TokenType2,
addressToNodeCurrency: () => addressToNodeCurrency,
isNativeCurrency: () => isNativeCurrency,
nodePrimitiveCurrencyToZenlinkProtocolPrimitivesAssetId: () => nodePrimitiveCurrencyToZenlinkProtocolPrimitivesAssetId,
pairAddressToAssets: () => pairAddressToAssets,
parseNodePrimitivesCurrency: () => parseNodePrimitivesCurrency,
parseSymbolOrIndexToIndex: () => parseSymbolOrIndexToIndex
});
module.exports = __toCommonJS(index_exports);
// libs/constants/address.ts
var import_format = require("@crypto-dex-sdk/format");
var PAIR_ADDRESSES = {
// BNC-KSM
"2001-0-0-2001-2-516": {
address: "2001-2-2216203126272",
account: "eCSrvaystgdffuJxPVZUZmUBqiz2nXKWuUWHQBPqvJFeDh1"
},
// KSM-AUSD
"2001-2-516-2001-2-770": {
address: "2001-2-3307158636032",
account: "eCSrvaystgdffuJxPVTJc2eQMgp9PnuPh7mMaQ6KbTynFRM"
},
// KSM-VSKSM
"2001-2-516-2001-2-1028": {
address: "2001-2-4415260198400",
account: "eCSrvaystgdffuJxPVW4UMxAXMuTpU3jkCJeiqppyfoi6SG"
},
// BNC-ZLK
"2001-0-0-2001-2-519": {
address: "2001-2-2229088028160",
account: "eCSrvaystgdffuJxPVU5NQfnXRohvjWF9u8VaeUWRg1mn1y"
},
// KAR-ZLK
"2001-2-518-2001-2-519": {
address: "2001-2-2229121975808",
account: "eCSrvaystgdffuJxPVRWqnxeKZJ3dWu8qJYidgLLStXXkiG"
},
// KSM-RMRK
"2001-2-516-2001-2-521": {
address: "2001-2-2237711779328",
account: "eCSrvaystgdffuJxPVU9u7Vv2AVjXTAEwbuujLggS6t6HoE"
},
// VKSM-KSM
"2001-2-260-2001-2-516": {
address: "2001-2-2216220165632",
account: "eCSrvaystgdffuJxPVYKf8H8UYnHGNRdVGUvj1SWSiatWMq"
},
// BNC-USDT
"2001-0-0-2001-2-2048": {
address: "2001-2-8796093023744",
account: "eCSrvaystgdffuJxPVN8LrN9JeAtrYVV1usKGABuUhYdqYw"
},
// BNC-VBNC
"2001-0-0-2001-2-257": {
address: "2001-2-1103806596608",
account: "eCSrvaystgdffuJxPVZ7pEK8ZMmZ7Nwg2144eZYgWdx4g6v"
},
// KSM-KBTC
"2001-2-516-2001-2-2050": {
address: "2001-2-8804716774912",
account: "eCSrvaystgdffuJxPVPy4UFedBDC5ZVsx7jsR8jPLZkyno1"
},
// vKSM-USDT
"2001-2-260-2001-2-2048": {
address: "2001-2-8796110063104",
account: "eCSrvaystgdffuJxPVNFYzcsVNZLG9E8TgSkUG1GcjD519E"
},
// MOVR-VMOVR
"2001-2-266-2001-2-522": {
address: "2001-2-2241990362624",
account: "eCSrvaystgdffuJxPVQfmrQY3XBfm6FPSBj1nJwmT48ASum"
},
// BNC-DOT
"2030-0-0-2030-2-2048": {
address: "2030-2-8796093023744",
account: "eCSrvaystgdffuJxPVTne2cjBdWDh6yPvzt8RdkFdihjqS1"
},
// GLMR-vGLMR
"2030-2-2049-2030-2-2305": {
address: "2030-2-9900033902080",
account: "eCSrvaystgdffuJxPVbKj318eoUb12vu85hWk7CQFktdf79"
},
// vDOT-vsDOT
"2030-2-2304-2030-2-2560": {
address: "2030-2-10995267274240",
account: "eCSrvaystgdffuJxPVS4SfFvaM26m6tAxwDLPvawBAYbnJd"
},
// FIL-vFIL
"2030-2-2052-2030-2-2308": {
address: "2030-2-9912919000576",
account: "eCSrvaystgdffuJxPVPVePp3f8Zegp8AuNsTv4FApKHtAt9"
},
// DOT-vDOT
"2030-2-2048-2030-2-2304": {
address: "2030-2-9895738869248",
account: "eCSrvaystgdffuJxPVRct68qJUZs1sFz762d7d37KJvb7Pz"
}
};
var pairAddressToAssets = Object.entries(PAIR_ADDRESSES).reduce(
(acc, [assetsAddress, { address }]) => {
const addresses = (assetsAddress.match(/\d+(-\d+)(-\d+)/g) || []).filter(import_format.isZenlinkAddress);
const assetsId = addresses.map(import_format.addressToZenlinkAssetId);
acc[address] = assetsId;
return acc;
},
{}
);
// libs/formats/currency.ts
var import_chain2 = require("@crypto-dex-sdk/chain");
var import_format3 = require("@crypto-dex-sdk/format");
// libs/parseNodePrimitivesCurrency.ts
var import_chain = require("@crypto-dex-sdk/chain");
var import_format2 = require("@crypto-dex-sdk/format");
var NodeCurrencyId = {
0: "Native",
1: "XCM",
2: "Stellar",
3: "ZenlinkLPToken"
};
function parseAssetU8(assetIndex) {
return (assetIndex & 65280) >> 8;
}
function parseAssetType(assetIndex) {
return assetIndex & 255;
}
function parseNodePrimitivesCurrency2(asset) {
const { chainId, assetIndex } = asset;
if (chainId === import_chain.ParachainId.BIFROST_KUSAMA || chainId === import_chain.ParachainId.BIFROST_POLKADOT)
return parseNodePrimitivesCurrency(asset);
const assetTypeU8 = parseAssetU8(assetIndex);
const assetSymbol = parseAssetType(assetIndex);
const nodeCurrencyId = NodeCurrencyId[assetTypeU8];
if (!nodeCurrencyId)
throw new Error("invalid asset");
if (nodeCurrencyId === "ZenlinkLPToken") {
const [asset0, asset1] = pairAddressToAssets[(0, import_format2.zenlinkAssetIdToAddress)(asset)];
const asset0Type = parseAssetType(asset0.assetIndex).toString();
const asset0U8 = parseAssetU8(asset0.assetIndex);
const asset1Type = parseAssetType(asset1.assetIndex).toString();
const asset1U8 = parseAssetU8(asset1.assetIndex);
return {
[nodeCurrencyId]: [
asset0Type,
asset0U8,
asset1Type,
asset1U8
]
};
}
return { [nodeCurrencyId]: assetSymbol };
}
// libs/formats/currency.ts
var NodeCurrencyId2 = {
0: "Native",
1: "VToken",
2: "Token",
3: "Stable",
4: "VSToken",
5: "VSBond",
6: "LPToken",
7: "ForeignAsset",
8: "Token2",
9: "VToken2",
10: "VSToken2",
11: "VSBond2",
12: "StableLpToken"
};
var NodeCurrencyIdType = {
Native: 0,
VToken: 1,
Token: 2,
Stable: 3,
VSToken: 4,
VSBond: 5,
LPToken: 6,
ForeignAsset: 7,
Token2: 8,
VToken2: 9,
VSToken2: 10,
VSBond2: 11,
StableLpToken: 12
};
var NodeTokenSymbol = {
0: "ASG",
1: "BNC",
2: "KUSD",
3: "DOT",
4: "KSM",
5: "ETH",
6: "KAR",
7: "ZLK",
8: "PHA",
9: "RMRK",
10: "MOVR"
};
var NodeTokenSymbolIndex = {
ASG: 0,
BNC: 1,
KUSD: 2,
DOT: 3,
KSM: 4,
ETH: 5,
KAR: 6,
ZLK: 7,
PHA: 8,
RMRK: 9,
MOVR: 10
};
var TokenType2 = [7, 8, 9, 10, 12];
function parseAssetU82(assetIndex) {
return (assetIndex & 65280) >> 8;
}
function parseAssetType2(assetIndex) {
return assetIndex & 255;
}
function parseToTokenIndex(type, index) {
if (type === 0)
return 0;
return (type << 8) + index;
}
function parseSymbolOrIndexToIndex(symbolIndex) {
return typeof symbolIndex === "number" ? symbolIndex : NodeTokenSymbolIndex[symbolIndex];
}
function parseNodePrimitivesCurrency(asset) {
const { chainId, assetIndex } = asset;
if (chainId === import_chain2.ParachainId.AMPLITUDE || chainId === import_chain2.ParachainId.PENDULUM)
return parseNodePrimitivesCurrency2(asset);
const assetTypeU8 = parseAssetU82(assetIndex);
const nodeCurrencyId = NodeCurrencyId2[assetTypeU8];
if (!nodeCurrencyId)
throw new Error("invalid asset");
if (TokenType2.includes(assetTypeU8))
return { [nodeCurrencyId]: parseAssetType2(assetIndex) };
if (nodeCurrencyId === "LPToken") {
const [asset0, asset1] = pairAddressToAssets[(0, import_format3.zenlinkAssetIdToAddress)(asset)];
const asset0U8 = parseAssetU82(asset0.assetIndex);
const asset1U8 = parseAssetU82(asset1.assetIndex);
return {
[nodeCurrencyId]: [
NodeTokenSymbol[parseAssetType2(asset0.assetIndex)],
asset0U8,
NodeTokenSymbol[parseAssetType2(asset1.assetIndex)],
asset1U8
]
};
}
return { [nodeCurrencyId]: NodeTokenSymbol[parseAssetType2(assetIndex)] };
}
function addressToNodeCurrency(address) {
return parseNodePrimitivesCurrency((0, import_format3.addressToZenlinkAssetId)(address));
}
function nodePrimitiveCurrencyToZenlinkProtocolPrimitivesAssetId(currency, chainId) {
const [tokenType, tokenSymbol] = Object.entries(currency)[0];
const tokenIndex = parseToTokenIndex(
NodeCurrencyIdType[tokenType],
parseSymbolOrIndexToIndex(tokenSymbol)
);
return {
chainId,
assetType: tokenIndex === 0 ? 0 : 2,
assetIndex: tokenIndex
};
}
// libs/utils.ts
var import_format4 = require("@crypto-dex-sdk/format");
function isNativeCurrency(currency) {
const { assetType, assetIndex } = (0, import_format4.addressToZenlinkAssetId)(currency.wrapped.address);
return assetType === 0 && assetIndex === 0;
}
// SwapRouter.ts
var import_format5 = require("@crypto-dex-sdk/format");
var SwapRouter = class {
/**
* Cannot be constructed.
*/
constructor() {
}
static swapCallParameters(trade, options) {
const methodName = "swapExactAssetsForAssets";
const args = [
trade.inputAmount.quotient.toString(),
trade.minimumAmountOut(options.allowedSlippage).quotient.toString(),
trade.route.tokenPath.map((token) => (0, import_format5.addressToZenlinkAssetId)(token.address)),
options.recipient,
options.deadline
];
return {
extrinsic: [
options.api.tx.zenlinkProtocol[methodName](...args)
]
};
}
};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
NodeCurrencyId,
NodeCurrencyIdType,
NodeTokenSymbol,
NodeTokenSymbolIndex,
PAIR_ADDRESSES,
SwapRouter,
TokenType2,
addressToNodeCurrency,
isNativeCurrency,
nodePrimitiveCurrencyToZenlinkProtocolPrimitivesAssetId,
pairAddressToAssets,
parseNodePrimitivesCurrency,
parseSymbolOrIndexToIndex
});