mango-v4/ts/client/scripts/template.ts

46 lines
1.2 KiB
TypeScript

import { PublicKey } from '@solana/web3.js';
import { MangoClient } from '../src/client';
async function main(): Promise<void> {
const client = await MangoClient.connectDefault(process.env.MB_CLUSTER_URL!);
const group = await client.getGroup(
new PublicKey('78b8f4cGCwmZ9ysPFMWLaLTkkaYnUjwMJYStWe5RTSSX'),
);
const allOracles = Array.from(group.banksMapByName.values())
.flat()
.map((b) => [b.name, b.oracle])
.concat(
Array.from(group.banksMapByName.values())
.flat()
.map((b) => [b.name, b.fallbackOracle])
.filter(
(item) =>
item[1] instanceof PublicKey && !item[1].equals(PublicKey.default),
),
)
.concat(
Array.from(group.perpMarketsMapByName.values())
.flat()
.map((pm) => [pm.name, pm.oracle]),
);
const oraclePublicKeys = allOracles.map((item) => item[1] as PublicKey);
const ais =
await client.program.provider.connection.getMultipleAccountsInfo(
oraclePublicKeys,
);
const result = ais
.map((ai, idx) => {
return [ai!.data.readUInt32LE(0) === 2712847316, allOracles[idx]];
})
.filter((item) => item[0])
.map((item) => item[1].toString());
console.log(result);
}
main();