From 797e0bf91b11078e9cfe525fe82ae98b449faece Mon Sep 17 00:00:00 2001 From: microwavedcola1 Date: Wed, 22 Mar 2023 14:30:25 +0100 Subject: [PATCH] extend script, fix util function Signed-off-by: microwavedcola1 --- ts/client/scripts/mb-create-gov-ix.ts | 72 +++++++++++++++++++++++++++ ts/client/src/utils.ts | 4 +- 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/ts/client/scripts/mb-create-gov-ix.ts b/ts/client/scripts/mb-create-gov-ix.ts index 991cc87eb..c10f21a97 100644 --- a/ts/client/scripts/mb-create-gov-ix.ts +++ b/ts/client/scripts/mb-create-gov-ix.ts @@ -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 { console.log(serializeInstructionToBase64(ix)); } +async function perpEdit(): Promise { + 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 { const client = await buildClient(); @@ -297,13 +350,32 @@ async function ixDisable(): Promise { console.log(await serializeInstructionToBase64(ix)); } +async function createMangoAccount(): Promise { + 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 { try { // await tokenRegister(); // await tokenEdit(); // await perpCreate(); + await perpEdit(); // await serum3Register(); // await ixDisable(); + // await createMangoAccount(); } catch (error) { console.log(error); } diff --git a/ts/client/src/utils.ts b/ts/client/src/utils.ts index 7ed7ae5f2..f59fb728a 100644 --- a/ts/client/src/utils.ts +++ b/ts/client/src/utils.ts @@ -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 {