@bayswap/sdk
Version:
SDK for BaySwap smart contract
69 lines • 2.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isCoinOrderSorted = exports.buildPoolName = exports.getTypeFromSupply = exports.sortCoin = exports.unwrapCoinType = exports.wrapCoinType = exports.getSymbolFromFullType = exports.getSymbolFromType = exports.getCoinTypeFromFullType = void 0;
const SUPPLY_TYPE_ARG_REGEX = /^0x2::balance::Supply<(.+)>$/;
const getCoinTypeFromFullType = (fullType) => {
return fullType.substring(fullType.lastIndexOf('<') + 1, fullType.lastIndexOf('>'));
};
exports.getCoinTypeFromFullType = getCoinTypeFromFullType;
const getSymbolFromType = (type) => {
const temp = type.split('::');
if (temp.length > 2) {
return temp[2];
}
return '';
};
exports.getSymbolFromType = getSymbolFromType;
const getSymbolFromFullType = (fullType) => {
const coinType = (0, exports.getCoinTypeFromFullType)(fullType);
return (0, exports.getSymbolFromType)(coinType);
};
exports.getSymbolFromFullType = getSymbolFromFullType;
// 0x2::sui::Sui => 0x2::coin::Coin<0x2::sui::Sui>
const wrapCoinType = (type) => {
return '0x2::coin::Coin<' + type + '>';
};
exports.wrapCoinType = wrapCoinType;
// 0x2::coin::Coin<0x2::sui::Sui> => 0x2::sui::Sui
const unwrapCoinType = (fullType) => {
return fullType.substring(fullType.lastIndexOf('<') + 1, fullType.lastIndexOf('>'));
};
exports.unwrapCoinType = unwrapCoinType;
const sortCoin = (coinX, coinY) => {
if (coinY < coinX) {
return [coinY, coinX];
}
return [coinX, coinY];
};
exports.sortCoin = sortCoin;
const getTypeFromSupply = (supply) => {
if (supply.length == 0) {
return '';
}
const [, res] = supply.match(SUPPLY_TYPE_ARG_REGEX) ?? [];
return res;
};
exports.getTypeFromSupply = getTypeFromSupply;
const buildPoolName = (coin1, coin2) => {
return `${(0, exports.getSymbolFromType)(coin1)}-${(0, exports.getSymbolFromType)(coin2)}`;
};
exports.buildPoolName = buildPoolName;
const isCoinOrderSorted = (coin1, coin2) => {
if (coin1.length < coin2.length) {
return true;
}
else if (coin1.length > coin2.length) {
return false;
}
for (let i = 0; i < coin1.length; i++) {
const chr1 = coin1.charAt(i);
const chr2 = coin2.charAt(i);
if (chr1 == chr2) {
continue;
}
return chr1 < chr2;
}
return true;
};
exports.isCoinOrderSorted = isCoinOrderSorted;
//# sourceMappingURL=coin.js.map