77 lines
2.1 KiB
TypeScript
77 lines
2.1 KiB
TypeScript
///
|
|
/// debugging
|
|
///
|
|
|
|
import { AccountMeta, PublicKey } from '@solana/web3.js';
|
|
import { Bank } from './accounts/bank';
|
|
import { Group } from './accounts/group';
|
|
import { MangoAccount, Serum3Orders } from './accounts/mangoAccount';
|
|
import { PerpMarket } from './accounts/perp';
|
|
|
|
export function debugAccountMetas(ams: AccountMeta[]): void {
|
|
for (const am of ams) {
|
|
console.log(
|
|
`${am.pubkey.toBase58()}, isSigner: ${am.isSigner
|
|
.toString()
|
|
.padStart(5, ' ')}, isWritable - ${am.isWritable
|
|
.toString()
|
|
.padStart(5, ' ')}`,
|
|
);
|
|
}
|
|
}
|
|
|
|
export function debugHealthAccounts(
|
|
group: Group,
|
|
mangoAccount: MangoAccount,
|
|
publicKeys: PublicKey[],
|
|
): void {
|
|
const banks = new Map(
|
|
Array.from(group.banksMapByName.values()).map((banks: Bank[]) => [
|
|
banks[0].publicKey.toBase58(),
|
|
`${banks[0].name} bank`,
|
|
]),
|
|
);
|
|
const oracles = new Map(
|
|
Array.from(group.banksMapByName.values()).map((banks: Bank[]) => [
|
|
banks[0].oracle.toBase58(),
|
|
`${banks[0].name} oracle`,
|
|
]),
|
|
);
|
|
const serum3 = new Map(
|
|
mangoAccount.serum3Active().map((serum3: Serum3Orders) => {
|
|
const serum3Market = Array.from(
|
|
group.serum3MarketsMapByExternal.values(),
|
|
).find((serum3Market) => serum3Market.marketIndex === serum3.marketIndex);
|
|
if (!serum3Market) {
|
|
throw new Error(
|
|
`Serum3Orders for non existent market with market index ${serum3.marketIndex}`,
|
|
);
|
|
}
|
|
return [serum3.openOrders.toBase58(), `${serum3Market.name} spot oo`];
|
|
}),
|
|
);
|
|
const perps = new Map(
|
|
Array.from(group.perpMarketsMapByName.values()).map(
|
|
(perpMarket: PerpMarket) => [
|
|
perpMarket.publicKey.toBase58(),
|
|
`${perpMarket.name} perp market`,
|
|
],
|
|
),
|
|
);
|
|
|
|
publicKeys.map((pk) => {
|
|
if (banks.get(pk.toBase58())) {
|
|
console.log(banks.get(pk.toBase58()));
|
|
}
|
|
if (oracles.get(pk.toBase58())) {
|
|
console.log(oracles.get(pk.toBase58()));
|
|
}
|
|
if (serum3.get(pk.toBase58())) {
|
|
console.log(serum3.get(pk.toBase58()));
|
|
}
|
|
if (perps.get(pk.toBase58())) {
|
|
console.log(perps.get(pk.toBase58()));
|
|
}
|
|
});
|
|
}
|