From 66e21732a160b1c2708bf6e2f650c5344ae41574 Mon Sep 17 00:00:00 2001 From: dd Date: Sat, 12 Jun 2021 11:35:14 -0400 Subject: [PATCH] updated collateral calculations with referrer rebates --- src/client.ts | 11 +++++------ src/tests.ts | 38 ++++++++++++++++++-------------------- 2 files changed, 23 insertions(+), 26 deletions(-) diff --git a/src/client.ts b/src/client.ts index 768999b..b88f04c 100644 --- a/src/client.ts +++ b/src/client.ts @@ -268,7 +268,7 @@ export class MarginAccount { const oos = this.openOrdersAccounts[i] if (oos != undefined) { value += nativeToUi(oos.baseTokenTotal.toNumber(), mangoGroup.mintDecimals[i]) * prices[i] - value += nativeToUi(oos.quoteTokenTotal.toNumber(), mangoGroup.mintDecimals[NUM_TOKENS-1]) + value += nativeToUi(oos.quoteTokenTotal.toNumber() + oos['referrerRebatesAccrued'].toNumber(), mangoGroup.mintDecimals[NUM_TOKENS-1]) } } @@ -306,10 +306,9 @@ export class MarginAccount { } assets[i] += nativeToUi(openOrdersAccount.baseTokenTotal.toNumber(), mangoGroup.mintDecimals[i]) - assets[NUM_TOKENS-1] += nativeToUi(openOrdersAccount.quoteTokenTotal.toNumber(), mangoGroup.mintDecimals[NUM_TOKENS-1]) + assets[NUM_TOKENS-1] += nativeToUi(openOrdersAccount.quoteTokenTotal.toNumber() + openOrdersAccount['referrerRebatesAccrued'].toNumber(), mangoGroup.mintDecimals[NUM_TOKENS-1]) } - return assets } @@ -335,7 +334,7 @@ export class MarginAccount { } assetsVal += nativeToUi(openOrdersAccount.baseTokenTotal.toNumber(), mangoGroup.mintDecimals[i]) * prices[i] - assetsVal += nativeToUi(openOrdersAccount.quoteTokenTotal.toNumber(), mangoGroup.mintDecimals[NUM_TOKENS-1]) + assetsVal += nativeToUi(openOrdersAccount.quoteTokenTotal.toNumber() + openOrdersAccount['referrerRebatesAccrued'].toNumber(), mangoGroup.mintDecimals[NUM_TOKENS-1]) } return assetsVal @@ -755,12 +754,12 @@ export class MangoClient { const openOrdersAccount = marginAccount.openOrdersAccounts[i] if (openOrdersAccount === undefined) { continue - } else if (openOrdersAccount.quoteTokenFree.toNumber() === 0 && openOrdersAccount.baseTokenFree.toNumber() === 0) { + } else if (openOrdersAccount.quoteTokenFree.toNumber() + openOrdersAccount['referrerRebatesAccrued'].toNumber() === 0 && openOrdersAccount.baseTokenFree.toNumber() === 0) { continue } assetGains[i] += openOrdersAccount.baseTokenFree.toNumber() - assetGains[NUM_TOKENS-1] += openOrdersAccount.quoteTokenFree.toNumber() + assetGains[NUM_TOKENS-1] += openOrdersAccount.quoteTokenFree.toNumber() + openOrdersAccount['referrerRebatesAccrued'].toNumber() const spotMarket = markets[i] const dexSigner = await PublicKey.createProgramAddress( diff --git a/src/tests.ts b/src/tests.ts index 87555df..ab92d79 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -13,7 +13,7 @@ import { parseTokenAccountData, sleep } from './utils' -import { NUM_TOKENS } from './layout'; +import { NUM_MARKETS, NUM_TOKENS } from './layout'; async function tests() { const cluster = "mainnet-beta"; @@ -55,7 +55,7 @@ async function tests() { async function getMarginAccountDetails() { const mangoGroup = await client.getMangoGroup(connection, mangoGroupPk); - const marginAccountPk = new PublicKey("Ga6xNLmkq3Mw95kUWPip2xnUGGEWnFmeiYFxjaZ1GFse") + const marginAccountPk = new PublicKey("AoqCcazWgh1VyDhDmvUEt36UHKt3ujJv57c9YEvaDZLj") const marginAccount = await client.getMarginAccount(connection, marginAccountPk, mangoGroup.dexProgramId) const prices = await mangoGroup.getPrices(connection) @@ -66,24 +66,22 @@ async function tests() { for (let i = 0; i < NUM_TOKENS; i++) { console.log(marginAccount.getUiDeposit(mangoGroup, i), marginAccount.getUiBorrow(mangoGroup, i)) } - // for (let i = 0; i < NUM_MARKETS; i++) { - // let openOrdersAccount = marginAccount.openOrdersAccounts[i] - // if (openOrdersAccount === undefined) { - // continue - // } - // - // for (const oid of openOrdersAccount.orders) { - // console.log(oid.toString()) - // } - // console.log(i, - // nativeToUi(openOrdersAccount.quoteTokenTotal.toNumber(), mangoGroup.mintDecimals[NUM_MARKETS]), - // nativeToUi(openOrdersAccount.quoteTokenFree.toNumber(), mangoGroup.mintDecimals[NUM_MARKETS]), - // - // nativeToUi(openOrdersAccount.baseTokenTotal.toNumber(), mangoGroup.mintDecimals[i]), - // nativeToUi(openOrdersAccount.baseTokenFree.toNumber(), mangoGroup.mintDecimals[i]) - // - // ) - // } + for (let i = 0; i < NUM_MARKETS; i++) { + let openOrdersAccount = marginAccount.openOrdersAccounts[i] + if (openOrdersAccount === undefined) { + continue + } + + console.log('referrer rebates', i, openOrdersAccount['referrerRebatesAccrued'].toNumber()) + console.log(i, + nativeToUi(openOrdersAccount.quoteTokenTotal.toNumber() + openOrdersAccount['referrerRebatesAccrued'].toNumber(), mangoGroup.mintDecimals[NUM_MARKETS]), + nativeToUi(openOrdersAccount.quoteTokenFree.toNumber(), mangoGroup.mintDecimals[NUM_MARKETS]), + + nativeToUi(openOrdersAccount.baseTokenTotal.toNumber(), mangoGroup.mintDecimals[i]), + nativeToUi(openOrdersAccount.baseTokenFree.toNumber(), mangoGroup.mintDecimals[i]) + + ) + } }