hm-aftermath-ts-sdk
Version:
Aftermath TypeScript SDK
93 lines (92 loc) • 4.67 kB
JavaScript
;
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,
};
};