@okxweb3/coin-stellar
Version:
@ok/coin-stellar is a Stellar SDK for building Web3 wallets and applications. It supports Stellar and PI blockchains, enabling private key management, address generation, transaction signing, trustline creation, and asset transfers
38 lines • 1.63 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getLiquidityPoolId = exports.LiquidityPoolFeeV18 = void 0;
const xdr_1 = __importDefault(require("./xdr"));
const asset_1 = require("./asset");
const hashing_1 = require("./hashing");
exports.LiquidityPoolFeeV18 = 30;
function getLiquidityPoolId(liquidityPoolType, liquidityPoolParameters = {}) {
if (liquidityPoolType !== 'constant_product') {
throw new Error('liquidityPoolType is invalid');
}
const { assetA, assetB, fee } = liquidityPoolParameters;
if (!assetA || !(assetA instanceof asset_1.Asset)) {
throw new Error('assetA is invalid');
}
if (!assetB || !(assetB instanceof asset_1.Asset)) {
throw new Error('assetB is invalid');
}
if (!fee || fee !== exports.LiquidityPoolFeeV18) {
throw new Error('fee is invalid');
}
if (asset_1.Asset.compare(assetA, assetB) !== -1) {
throw new Error('Assets are not in lexicographic order');
}
const lpTypeData = xdr_1.default.LiquidityPoolType.liquidityPoolConstantProduct().toXDR();
const lpParamsData = new xdr_1.default.LiquidityPoolConstantProductParameters({
assetA: assetA.toXDRObject(),
assetB: assetB.toXDRObject(),
fee
}).toXDR();
const payload = Buffer.concat([lpTypeData, lpParamsData]);
return (0, hashing_1.hash)(payload);
}
exports.getLiquidityPoolId = getLiquidityPoolId;
//# sourceMappingURL=get_liquidity_pool_id.js.map