UNPKG

hm-aftermath-ts-sdk

Version:
93 lines (92 loc) 4.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PoolsApiCasting = void 0; const coin_1 = require("../../coin"); const utils_1 = require("../../../general/utils"); class PoolsApiCasting { } exports.PoolsApiCasting = PoolsApiCasting; // ========================================================================= // Objects // ========================================================================= PoolsApiCasting.poolObjectFromSuiObject = (suiObject) => { const objectId = utils_1.Helpers.getObjectId(suiObject); const objectType = utils_1.Helpers.getObjectType(suiObject); const poolFieldsOnChain = utils_1.Helpers.getObjectFields(suiObject); const lpCoinType = utils_1.Helpers.addLeadingZeroesToType(new coin_1.Coin(poolFieldsOnChain.lp_supply.type).innerCoinType); const coins = poolFieldsOnChain.type_names.reduce((acc, cur, index) => (Object.assign(Object.assign({}, acc), { [utils_1.Helpers.addLeadingZeroesToType("0x" + cur)]: Object.assign({ weight: BigInt(poolFieldsOnChain.weights[index]), balance: BigInt(poolFieldsOnChain.normalized_balances[index]) / BigInt(poolFieldsOnChain.decimal_scalars[index]), tradeFeeIn: BigInt(poolFieldsOnChain.fees_swap_in[index]), tradeFeeOut: BigInt(poolFieldsOnChain.fees_swap_out[index]), depositFee: BigInt(poolFieldsOnChain.fees_deposit[index]), withdrawFee: BigInt(poolFieldsOnChain.fees_withdraw[index]), normalizedBalance: BigInt(poolFieldsOnChain.normalized_balances[index]), decimalsScalar: BigInt(poolFieldsOnChain.decimal_scalars[index]) }, (poolFieldsOnChain.coin_decimals ? { decimals: Number(poolFieldsOnChain.coin_decimals[index]), } : {})) })), {}); return { objectType, objectId, lpCoinType, name: poolFieldsOnChain.name, creator: poolFieldsOnChain.creator, lpCoinSupply: BigInt(poolFieldsOnChain.lp_supply.fields.value), illiquidLpCoinSupply: BigInt(poolFieldsOnChain.illiquid_lp_supply), flatness: BigInt(poolFieldsOnChain.flatness), lpCoinDecimals: Number(poolFieldsOnChain.lp_decimals), coins, }; }; PoolsApiCasting.daoFeePoolOwnerCapObjectFromSuiObjectResponse = (data) => { const objectType = utils_1.Helpers.getObjectType(data); const fields = utils_1.Helpers.getObjectFields(data); return { objectType, objectId: utils_1.Helpers.getObjectId(data), daoFeePoolId: utils_1.Helpers.addLeadingZeroesToType(fields.dao_fee_pool_id), }; }; // ========================================================================= // Events // ========================================================================= PoolsApiCasting.poolObjectIdfromPoolCreateEventOnChain = (eventOnChain) => { const fields = eventOnChain.parsedJson; return fields.pool_id; }; PoolsApiCasting.poolTradeEventFromOnChain = (eventOnChain) => { const fields = eventOnChain.parsedJson; return { poolId: fields.pool_id, trader: fields.issuer, typesIn: fields.types_in.map((type) => utils_1.Helpers.addLeadingZeroesToType("0x" + type)), amountsIn: fields.amounts_in.map((amount) => BigInt(amount)), typesOut: fields.types_out.map((type) => utils_1.Helpers.addLeadingZeroesToType("0x" + type)), amountsOut: fields.amounts_out.map((amount) => BigInt(amount)), timestamp: eventOnChain.timestampMs, txnDigest: eventOnChain.id.txDigest, type: eventOnChain.type, }; }; PoolsApiCasting.poolDepositEventFromOnChain = (eventOnChain) => { const fields = eventOnChain.parsedJson; return { poolId: fields.pool_id, depositor: fields.issuer, // TODO: create a function for all this 0x nonsense types: fields.types.map((type) => utils_1.Helpers.addLeadingZeroesToType("0x" + type)), deposits: fields.deposits.map((deposit) => BigInt(deposit)), lpMinted: BigInt(fields.lp_coins_minted), timestamp: eventOnChain.timestampMs, txnDigest: eventOnChain.id.txDigest, type: eventOnChain.type, }; }; PoolsApiCasting.poolWithdrawEventFromOnChain = (eventOnChain) => { const fields = eventOnChain.parsedJson; return { poolId: fields.pool_id, withdrawer: fields.issuer, types: fields.types.map((type) => utils_1.Helpers.addLeadingZeroesToType("0x" + type)), withdrawn: fields.withdrawn.map((withdraw) => BigInt(withdraw)), lpBurned: BigInt(fields.lp_coins_burned), timestamp: eventOnChain.timestampMs, txnDigest: eventOnChain.id.txDigest, type: eventOnChain.type, }; };