2022-06-11 04:49:45 -07:00
|
|
|
import { Cluster, PublicKey } from '@solana/web3.js';
|
|
|
|
import ids from '../ids.json';
|
|
|
|
|
|
|
|
export class Id {
|
|
|
|
constructor(
|
2022-06-21 11:04:21 -07:00
|
|
|
public cluster: Cluster,
|
|
|
|
public name: string,
|
|
|
|
public publicKey: string,
|
|
|
|
public serum3ProgramId: string,
|
|
|
|
public mangoProgramId: string,
|
|
|
|
public banks: { name: string; publicKey: string }[],
|
|
|
|
public stubOracles: { name: string; publicKey: string }[],
|
|
|
|
public mintInfos: { name: string; publicKey: string }[],
|
|
|
|
public serum3Markets: {
|
|
|
|
name: string;
|
|
|
|
publicKey: string;
|
|
|
|
marketExternal: string;
|
|
|
|
}[],
|
|
|
|
public perpMarkets: { name: string; publicKey: string }[],
|
2022-06-11 04:49:45 -07:00
|
|
|
) {}
|
|
|
|
|
|
|
|
public getBanks(): PublicKey[] {
|
2022-06-21 11:04:21 -07:00
|
|
|
return Array.from(this.banks.map((bank) => new PublicKey(bank.publicKey)));
|
2022-06-11 04:49:45 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
public getStubOracles(): PublicKey[] {
|
2022-06-21 11:04:21 -07:00
|
|
|
return Array.from(
|
|
|
|
this.stubOracles.map((stubOracle) => new PublicKey(stubOracle.publicKey)),
|
|
|
|
);
|
2022-06-11 04:49:45 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
public getMintInfos(): PublicKey[] {
|
2022-06-21 11:04:21 -07:00
|
|
|
return Array.from(
|
|
|
|
this.mintInfos.map((mintInfo) => new PublicKey(mintInfo.publicKey)),
|
|
|
|
);
|
2022-06-11 04:49:45 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
public getSerum3Markets(): PublicKey[] {
|
2022-06-21 11:04:21 -07:00
|
|
|
return Array.from(
|
|
|
|
this.serum3Markets.map(
|
|
|
|
(serum3Market) => new PublicKey(serum3Market.publicKey),
|
|
|
|
),
|
|
|
|
);
|
2022-06-11 04:49:45 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
public getPerpMarkets(): PublicKey[] {
|
2022-06-21 11:04:21 -07:00
|
|
|
return Array.from(
|
|
|
|
this.perpMarkets.map((perpMarket) => new PublicKey(perpMarket.publicKey)),
|
|
|
|
);
|
2022-06-11 04:49:45 -07:00
|
|
|
}
|
|
|
|
|
2022-06-21 11:04:21 -07:00
|
|
|
static fromIds(name: string): Id {
|
|
|
|
let groupConfig = ids.groups.find((id) => id['name'] === name);
|
2022-06-11 04:49:45 -07:00
|
|
|
return new Id(
|
2022-06-21 11:04:21 -07:00
|
|
|
groupConfig.cluster as Cluster,
|
|
|
|
name,
|
|
|
|
groupConfig.publicKey,
|
|
|
|
groupConfig.serum3ProgramId,
|
|
|
|
groupConfig.mangoProgramId,
|
|
|
|
groupConfig['banks'],
|
|
|
|
groupConfig['stubOracles'],
|
|
|
|
groupConfig['mintInfos'],
|
|
|
|
groupConfig['serum3Markets'],
|
|
|
|
groupConfig['perpMarkets'],
|
2022-06-11 04:49:45 -07:00
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|