extend script, fix util function

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
This commit is contained in:
microwavedcola1 2023-03-22 14:30:25 +01:00
parent 258d95d035
commit 797e0bf91b
2 changed files with 74 additions and 2 deletions

View File

@ -11,9 +11,11 @@ import {
} from '@solana/web3.js';
import fs from 'fs';
import { TokenIndex } from '../src/accounts/bank';
import { PerpMarketIndex } from '../src/accounts/perp';
import { Builder } from '../src/builder';
import { MangoClient } from '../src/client';
import {
NullPerpEditParams,
NullTokenEditParams,
TrueIxGateParams,
buildIxGate,
@ -279,6 +281,57 @@ async function perpCreate(): Promise<void> {
console.log(serializeInstructionToBase64(ix));
}
async function perpEdit(): Promise<void> {
const client = await buildClient();
const group = await client.getGroup(new PublicKey(GROUP_PK));
const perpMarket = group.getPerpMarketByMarketIndex(0 as PerpMarketIndex);
const params = Builder(NullPerpEditParams)
.positivePnlLiquidationFee(bpsToDecimal(250))
.build();
const ix = await client.program.methods
.perpEditMarket(
params.oracle,
params.oracleConfig,
params.baseDecimals,
params.maintBaseAssetWeight,
params.initBaseAssetWeight,
params.maintBaseLiabWeight,
params.initBaseLiabWeight,
params.maintOverallAssetWeight,
params.initOverallAssetWeight,
params.baseLiquidationFee,
params.makerFee,
params.takerFee,
params.minFunding,
params.maxFunding,
params.impactQuantity !== null ? new BN(params.impactQuantity) : null,
params.groupInsuranceFund,
params.feePenalty,
params.settleFeeFlat,
params.settleFeeAmountThreshold,
params.settleFeeFractionLowHealth,
params.stablePriceDelayIntervalSeconds,
params.stablePriceDelayGrowthLimit,
params.stablePriceGrowthLimit,
params.settlePnlLimitFactor,
params.settlePnlLimitWindowSize !== null
? new BN(params.settlePnlLimitWindowSize)
: null,
params.reduceOnly,
params.resetStablePrice ?? false,
params.positivePnlLiquidationFee,
params.name,
)
.accounts({
group: group.publicKey,
oracle: params.oracle ?? perpMarket.oracle,
admin: group.admin,
perpMarket: perpMarket.publicKey,
})
.instruction();
console.log(serializeInstructionToBase64(ix));
}
async function ixDisable(): Promise<void> {
const client = await buildClient();
@ -297,13 +350,32 @@ async function ixDisable(): Promise<void> {
console.log(await serializeInstructionToBase64(ix));
}
async function createMangoAccount(): Promise<void> {
const client = await buildClient();
const group = await client.getGroup(new PublicKey(GROUP_PK));
const ix = await client.program.methods
.accountCreate(0, 8, 8, 8, 32, 'Mango DAO 0')
.accounts({
group: group.publicKey,
owner: new PublicKey('5tgfd6XgwiXB9otEnzFpXK11m7Q7yZUaAJzWK4oT5UGF'),
payer: new PublicKey('5tgfd6XgwiXB9otEnzFpXK11m7Q7yZUaAJzWK4oT5UGF'),
})
.instruction();
console.log(await serializeInstructionToBase64(ix));
}
async function main(): Promise<void> {
try {
// await tokenRegister();
// await tokenEdit();
// await perpCreate();
await perpEdit();
// await serum3Register();
// await ixDisable();
// await createMangoAccount();
} catch (error) {
console.log(error);
}

View File

@ -1,5 +1,4 @@
import { AnchorProvider } from '@coral-xyz/anchor';
import { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from './utils/spl';
import {
AddressLookupTableAccount,
MessageV0,
@ -11,6 +10,7 @@ import {
} from '@solana/web3.js';
import BN from 'bn.js';
import { I80F48 } from './numbers/I80F48';
import { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from './utils/spl';
///
/// numeric helpers
@ -19,7 +19,7 @@ export const U64_MAX_BN = new BN('18446744073709551615');
export const I64_MAX_BN = new BN('9223372036854775807').toTwos(64);
export function bpsToDecimal(bps: number): number {
return bps / 1000;
return bps / 10000;
}
export function percentageToDecimal(percentage: number): number {