UNPKG

@subwallet/invariant-vara-sdk

Version:

<div align="center"> <h1>⚡Invariant protocol⚡</h1> <p> <a href="https://invariant.app/math-spec-vara.pdf">MATH SPEC 📄</a> | <a href="https://discord.gg/VzS3C9wR">DISCORD 🌐</a> | </p> </div>

208 lines (207 loc) 7.55 kB
function copyObject(obj) { if (obj === null || typeof obj !== 'object') { return obj; } if (Array.isArray(obj)) { return obj.map(copyObject); } const copiedObject = {}; for (const key in obj) { copiedObject[key] = copyObject(obj[key]); } return copiedObject; } export const decodeU256FromU64Array = (value) => { return BigInt(value); }; export const decodeU128FromU64Array = (value) => { return BigInt(value); }; export const encodeU256ToU64Array = (value) => { return value.toString(); }; export const encodeU128ToU64Array = (value) => { return value.toString(); }; export const encodeLiquidity = encodeU256ToU64Array; export const encodeTokenAmount = encodeU256ToU64Array; export const decodeLiquidity = decodeU256FromU64Array; export const decodeTokenAmount = decodeU256FromU64Array; export const encodeTick = (value) => { const newVal = copyObject(value); newVal.liquidityChange = encodeLiquidity(value.liquidityChange); newVal.liquidityGross = encodeLiquidity(value.liquidityGross); return newVal; }; export const encodeLiquidityTick = (value) => { const newVal = copyObject(value); newVal.liquidityChange = encodeLiquidity(value.liquidityChange); return newVal; }; export const encodePool = (value) => { const newVal = copyObject(value); newVal.liquidity = encodeLiquidity(value.liquidity); newVal.feeProtocolTokenX = encodeTokenAmount(value.feeProtocolTokenX); newVal.feeProtocolTokenY = encodeTokenAmount(value.feeProtocolTokenY); return newVal; }; export const encodeLiquidityResult = (value) => { const newVal = copyObject(value); newVal.x = encodeTokenAmount(value.x); newVal.y = encodeTokenAmount(value.y); newVal.l = encodeTokenAmount(value.l); return newVal; }; export const encodeSingleTokenLiquidity = (value) => { const newVal = copyObject(value); newVal.amount = encodeTokenAmount(value.amount); newVal.l = encodeLiquidity(value.l); return newVal; }; export const encodeQuoteResult = (value) => { const newVal = copyObject(value); newVal.amountIn = encodeTokenAmount(value.amountIn); newVal.amountOut = encodeTokenAmount(value.amountOut); newVal.ticks = value.ticks.map(encodeTick); return newVal; }; export const encodeTokenAmounts = (value) => { const newVal = copyObject(value); newVal.x = encodeTokenAmount(value.x); newVal.y = encodeTokenAmount(value.y); return newVal; }; export const encodeCalculateFeeResult = (value) => { const newVal = copyObject(value); newVal[0] = encodeTokenAmount(value[0]); newVal[1] = encodeTokenAmount(value[1]); return newVal; }; export const encodeAmountDeltaResult = (value) => { const newVal = copyObject(value); newVal.x = encodeTokenAmount(value.x); newVal.y = encodeTokenAmount(value.y); return newVal; }; export const encodeSwapResult = (value) => { const newVal = copyObject(value); newVal.amountIn = encodeTokenAmount(value.amountIn); newVal.amountOut = encodeTokenAmount(value.amountOut); newVal.feeAmount = encodeTokenAmount(value.feeAmount); return newVal; }; export const encodeCalculateSwapResult = (value) => { const newVal = copyObject(value); newVal.amountIn = encodeTokenAmount(value.amountIn); newVal.amountOut = encodeTokenAmount(value.amountOut); newVal.fee = encodeTokenAmount(value.fee); newVal.pool = encodePool(value.pool); newVal.ticks = value.ticks.map(encodeTick); return newVal; }; export const encodeCalculateAmountDeltaResult = (value) => { const newVal = copyObject(value); newVal[0] = encodeTokenAmount(value[0]); newVal[1] = encodeTokenAmount(value[1]); return newVal; }; export const encodePosition = (value) => { const newVal = copyObject(value); newVal.liquidity = encodeLiquidity(value.liquidity); newVal.tokensOwedX = encodeTokenAmount(value.tokensOwedX); newVal.tokensOwedY = encodeTokenAmount(value.tokensOwedY); return newVal; }; export const decodeTick = (value) => { const newVal = copyObject(value); newVal.liquidityChange = decodeLiquidity(value.liquidityChange); newVal.liquidityGross = decodeLiquidity(value.liquidityGross); return newVal; }; export const decodeLiquidityTick = (value) => { const newVal = copyObject(value); newVal.liquidityChange = decodeLiquidity(value.liquidityChange); return newVal; }; export const decodePool = (value) => { const newVal = copyObject(value); newVal.liquidity = decodeLiquidity(value.liquidity); newVal.feeProtocolTokenX = decodeTokenAmount(value.feeProtocolTokenX); newVal.feeProtocolTokenY = decodeTokenAmount(value.feeProtocolTokenY); return newVal; }; export const decodeLiquidityResult = (value) => { const newVal = copyObject(value); newVal.x = decodeTokenAmount(value.x); newVal.y = decodeTokenAmount(value.y); newVal.l = decodeTokenAmount(value.l); return newVal; }; export const decodeSingleTokenLiquidity = (value) => { const newVal = copyObject(value); newVal.amount = decodeTokenAmount(value.amount); newVal.l = decodeLiquidity(value.l); return newVal; }; export const decodeQuoteResult = (value) => { const newVal = copyObject(value); newVal.amountIn = decodeTokenAmount(value.amountIn); newVal.amountOut = decodeTokenAmount(value.amountOut); newVal.ticks = value.ticks.map(decodeTick); return newVal; }; export const decodeTokenAmounts = (value) => { const newVal = copyObject(value); newVal.x = decodeTokenAmount(value.x); newVal.y = decodeTokenAmount(value.y); return newVal; }; export const decodeCalculateFeeResult = (value) => { const newVal = copyObject(value); newVal[0] = decodeTokenAmount(value[0]); newVal[1] = decodeTokenAmount(value[1]); return newVal; }; export const decodeAmountDeltaResult = (value) => { const newVal = copyObject(value); newVal.x = decodeTokenAmount(value.x); newVal.y = decodeTokenAmount(value.y); return newVal; }; export const decodeSwapResult = (value) => { const newVal = copyObject(value); newVal.amountIn = decodeTokenAmount(value.amountIn); newVal.amountOut = decodeTokenAmount(value.amountOut); newVal.feeAmount = decodeTokenAmount(value.feeAmount); return newVal; }; export const decodeCalculateSwapResult = (value) => { const newVal = copyObject(value); newVal.amountIn = decodeTokenAmount(value.amountIn); newVal.amountOut = decodeTokenAmount(value.amountOut); newVal.fee = decodeTokenAmount(value.fee); newVal.pool = decodePool(value.pool); newVal.ticks = value.ticks.map(decodeTick); return newVal; }; export const decodeCalculateAmountDeltaResult = (value) => { const newVal = copyObject(value); newVal[0] = decodeTokenAmount(value[0]); newVal[1] = decodeTokenAmount(value[1]); return newVal; }; export const decodePosition = (value) => { const newVal = copyObject(value); newVal.liquidity = decodeLiquidity(value.liquidity); newVal.tokensOwedX = decodeTokenAmount(value.tokensOwedX); newVal.tokensOwedY = decodeTokenAmount(value.tokensOwedY); return newVal; }; export const decodeSimulateSwapResult = (value) => { const newVal = copyObject(value); newVal.amountIn = decodeTokenAmount(value.amountIn); newVal.amountOut = decodeTokenAmount(value.amountOut); newVal.fee = decodeTokenAmount(value.fee); newVal.crossedTicks = value.crossedTicks.map(decodeLiquidityTick); return newVal; };