From 5733c70c7bdcdc328091d59a920bfeb40d42537b Mon Sep 17 00:00:00 2001 From: Kobe Leenders Date: Fri, 19 Jan 2024 14:18:19 +0100 Subject: [PATCH 1/2] feat: added configure bank ix --- .../marginfi-client-v2/src/instructions.ts | 24 ++++++++++++++++++ .../marginfi-client-v2/src/models/bank.ts | 25 ++++++++++++++++++- .../marginfi-client-v2/src/models/group.ts | 23 +++++++++++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) diff --git a/packages/marginfi-client-v2/src/instructions.ts b/packages/marginfi-client-v2/src/instructions.ts index e71c586c36..524913620f 100644 --- a/packages/marginfi-client-v2/src/instructions.ts +++ b/packages/marginfi-client-v2/src/instructions.ts @@ -1,6 +1,7 @@ import { AccountMeta, PublicKey, SystemProgram } from "@solana/web3.js"; import BN from "bn.js"; import { MarginfiProgram } from "./types"; +import { BankConfigOpt } from "./models/bank"; async function makeInitMarginfiAccountIx( mfProgram: MarginfiProgram, @@ -227,6 +228,28 @@ function makeUnsetAccountFlagIx( }) .instruction(); } + +function makePoolConfigureBankIx( + mfiProgram: MarginfiProgram, + accounts: { + marginfiGroup: PublicKey; + admin: PublicKey; + bank: PublicKey; + }, + args: { + bankConfigOpt: BankConfigOpt; + } +) { + return mfiProgram.methods + .lendingPoolConfigureBank(args.bankConfigOpt) + .accounts({ + marginfiGroup: accounts.marginfiGroup, + admin: accounts.admin, + bank: accounts.bank, + }) + .instruction(); +} + const instructions = { makeDepositIx, makeRepayIx, @@ -237,6 +260,7 @@ const instructions = { makelendingAccountWithdrawEmissionIx, makeSetAccountFlagIx, makeUnsetAccountFlagIx, + makePoolConfigureBankIx, }; export default instructions; diff --git a/packages/marginfi-client-v2/src/models/bank.ts b/packages/marginfi-client-v2/src/models/bank.ts index 4ecfc03a91..0ca1fd5777 100644 --- a/packages/marginfi-client-v2/src/models/bank.ts +++ b/packages/marginfi-client-v2/src/models/bank.ts @@ -676,6 +676,29 @@ enum OracleSetup { SwitchboardV2 = 2, } +// BankConfigOpt Args +interface BankConfigOpt { + assetWeightInit: WrappedI80F48; + assetWeightMaint: WrappedI80F48; + + liabilityWeightInit: WrappedI80F48; + liabilityWeightMaint: WrappedI80F48; + + depositLimit: BN; + borrowLimit: BN; + riskTier: { collateral: {} } | { isolated: {} }; + totalAssetValueInitLimit: BN; + + interestRateConfig: InterestRateConfigRaw; + operationalState: { paused: {} } | { operational: {} } | { reduceOnly: {} }; + + oracle: { + setup: { none: {} } | { pythEma: {} } | { switchboardV2: {} }; + keys: PublicKey[]; + } +} + + function parseRiskTier(riskTierRaw: RiskTierRaw): RiskTier { switch (Object.keys(riskTierRaw)[0].toLowerCase()) { case "collateral": @@ -713,7 +736,7 @@ function parseOracleSetup(oracleSetupRaw: OracleSetupRaw): OracleSetup { } } -export type { InterestRateConfig }; +export type { InterestRateConfig, BankConfigOpt }; export { Bank, BankConfig, RiskTier, OperationalState, OracleSetup, parseRiskTier, parseOracleSetup }; // ---------------------------------------------------------------------------- diff --git a/packages/marginfi-client-v2/src/models/group.ts b/packages/marginfi-client-v2/src/models/group.ts index eadf6008ca..c7868b6f73 100644 --- a/packages/marginfi-client-v2/src/models/group.ts +++ b/packages/marginfi-client-v2/src/models/group.ts @@ -6,6 +6,7 @@ import { AccountType, MarginfiProgram } from "../types"; import { InstructionsWrapper } from "@mrgnlabs/mrgn-common"; import instructions from "../instructions"; import { FLASHLOAN_ENABLED_FLAG } from "../constants"; +import { BankConfigOpt } from "./bank"; // ---------------------------------------------------------------------------- // On-chain types @@ -101,6 +102,28 @@ class MarginfiGroup { keys: [], }; } + + public async makePoolConfigureBankIxb( + program: MarginfiProgram, + bank: PublicKey, + args: BankConfigOpt + ): Promise { + const ix = await instructions.makePoolConfigureBankIx( + program, + { + marginfiGroup: this.address, + + admin: this.admin, + bank: bank, + }, + { bankConfigOpt: args } + ); + + return { + instructions: [ix], + keys: [], + }; + } } export { MarginfiGroup }; From 4ad04ca877b421cf672dfe353cce4d21f0e31d3b Mon Sep 17 00:00:00 2001 From: Kobe Leenders Date: Fri, 19 Jan 2024 14:38:03 +0100 Subject: [PATCH 2/2] fix: added null type --- .../marginfi-client-v2/src/models/bank.ts | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/marginfi-client-v2/src/models/bank.ts b/packages/marginfi-client-v2/src/models/bank.ts index 0ca1fd5777..6dd8229522 100644 --- a/packages/marginfi-client-v2/src/models/bank.ts +++ b/packages/marginfi-client-v2/src/models/bank.ts @@ -678,24 +678,24 @@ enum OracleSetup { // BankConfigOpt Args interface BankConfigOpt { - assetWeightInit: WrappedI80F48; - assetWeightMaint: WrappedI80F48; + assetWeightInit: WrappedI80F48 | null; + assetWeightMaint: WrappedI80F48 | null; - liabilityWeightInit: WrappedI80F48; - liabilityWeightMaint: WrappedI80F48; + liabilityWeightInit: WrappedI80F48 | null; + liabilityWeightMaint: WrappedI80F48 | null; - depositLimit: BN; - borrowLimit: BN; - riskTier: { collateral: {} } | { isolated: {} }; - totalAssetValueInitLimit: BN; + depositLimit: BN | null; + borrowLimit: BN | null; + riskTier: { collateral: {} } | { isolated: {} } | null; + totalAssetValueInitLimit: BN | null; - interestRateConfig: InterestRateConfigRaw; - operationalState: { paused: {} } | { operational: {} } | { reduceOnly: {} }; + interestRateConfig: InterestRateConfigRaw | null; + operationalState: { paused: {} } | { operational: {} } | { reduceOnly: {} } | null; oracle: { - setup: { none: {} } | { pythEma: {} } | { switchboardV2: {} }; - keys: PublicKey[]; - } + setup: { none: {} } | { pythEma: {} } | { switchboardV2: {} } ; + keys: PublicKey[] ; + } | null }