@0dotxyz/p0-ts-sdk 2.2.3-alpha.0 → 2.2.3-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -246,12 +246,20 @@ function makeEndFlashLoanIx(mfiProgram, accounts, remainingAccounts = []) {
246
246
  }).accountsPartial(optionalAccounts).remainingAccounts(remainingAccounts).instruction();
247
247
  }
248
248
  async function makeAccountTransferToNewAccountIx(mfProgram, accounts) {
249
- const { oldMarginfiAccount, newMarginfiAccount, newAuthority, feePayer, ...optionalAccounts } = accounts;
249
+ const {
250
+ oldMarginfiAccount,
251
+ newMarginfiAccount,
252
+ newAuthority,
253
+ globalFeeWallet,
254
+ feePayer,
255
+ ...optionalAccounts
256
+ } = accounts;
250
257
  return mfProgram.methods.transferToNewAccount().accounts({
251
258
  oldMarginfiAccount,
252
259
  newMarginfiAccount,
253
260
  newAuthority,
254
- globalFeeWallet: feePayer
261
+ globalFeeWallet,
262
+ feePayer
255
263
  }).accountsPartial(optionalAccounts).instruction();
256
264
  }
257
265
  async function makeGroupInitIx(mfProgram, accounts) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/vendor/spl/constants.ts","../src/instructions.ts"],"names":["PublicKey","BN"],"mappings":";;;;;;;;;;AAE0C,IAAIA,iBAAA;AAAA,EAC5C;AACF;AAGsD,IAAIA,iBAAA;AAAA,EACxD;AACF;AAEO,IAAM,gBAAA,GAAmB,IAAIA,iBAAA,CAAU,6CAA6C,CAAA;AACtD,IAAIA,iBAAA,CAAU,6CAA6C;;;ACLhG,eAAe,yBAAA,CACb,WACA,QAAA,EAMA;AACA,EAAA,OAAO,UAAU,OAAA,CAAQ,yBAAA,GAA4B,QAAA,CAAS,QAAQ,EAAE,WAAA,EAAY;AACtF;AAEA,eAAe,4BAAA,CACb,SAAA,EACA,QAAA,EAMA,IAAA,EAIA;AACA,EAAA,OAAO,SAAA,CAAU,QACd,4BAAA,CAA6B,IAAA,CAAK,cAAc,IAAA,CAAK,YAAA,IAAgB,IAAI,CAAA,CACzE,eAAA,CAAgB;AAAA,IACf,eAAe,QAAA,CAAS,aAAA;AAAA,IACxB,iBAAiB,QAAA,CAAS,eAAA;AAAA,IAC1B,WAAW,QAAA,CAAS,SAAA;AAAA,IACpB,UAAU,QAAA,CAAS;AAAA,GACpB,EACA,WAAA,EAAY;AACjB;AAEA,eAAe,qBACb,SAAA,EACA,QAAA,EAwBA,IAAA,EAGA,iBAAA,GAAmC,EAAC,EACpC;AACA,EAAA,MAAM;AAAA,IACJ,eAAA;AAAA,IACA,IAAA;AAAA,IACA,kBAAA;AAAA,IACA,YAAA;AAAA,IACA,4BAAA;AAAA,IACA,gCAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,YAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,QAAA;AAEJ,EAAA,OAAO,SAAA,CAAU,OAAA,CACd,cAAA,CAAe,IAAA,CAAK,MAAM,CAAA,CAC1B,QAAA,CAAS,QAAQ,CAAA,CACjB,gBAAgB,gBAAgB,CAAA,CAChC,iBAAA,CAAkB,iBAAiB,EACnC,WAAA,EAAY;AACjB;AAEA,eAAe,sBACb,SAAA,EACA,QAAA,EAwBA,IAAA,EAIA,iBAAA,GAAmC,EAAC,EACpC;AACA,EAAA,MAAM;AAAA,IACJ,eAAA;AAAA,IACA,IAAA;AAAA,IACA,uBAAA;AAAA,IACA,YAAA;AAAA,IACA,4BAAA;AAAA,IACA,gCAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,YAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,QAAA;AAEJ,EAAA,OAAO,UAAU,OAAA,CACd,eAAA,CAAgB,KAAK,MAAA,EAAQ,IAAA,CAAK,eAAe,IAAI,CAAA,CACrD,QAAA,CAAS,QAAQ,EACjB,eAAA,CAAgB,gBAAgB,EAChC,iBAAA,CAAkB,iBAAiB,EACnC,WAAA,EAAY;AACjB;AAEA,eAAe,oBACb,SAAA,EACA,QAAA,EAuBA,IAAA,EAGA,iBAAA,GAAmC,EAAC,EACpC;AACA,EAAA,MAAM;AAAA,IACJ,eAAA;AAAA,IACA,IAAA;AAAA,IACA,kBAAA;AAAA,IACA,aAAA;AAAA,IACA,sBAAA;AAAA,IACA,sBAAA;AAAA,IACA,qBAAA;AAAA,IACA,mCAAA;AAAA,IACA,qBAAA;AAAA,IACA,uBAAA;AAAA,IACA,gBAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,QAAA;AAEJ,EAAA,OAAO,SAAA,CAAU,OAAA,CACd,aAAA,CAAc,IAAA,CAAK,MAAM,CAAA,CACzB,QAAA,CAAS,QAAQ,CAAA,CACjB,gBAAgB,gBAAgB,CAAA,CAChC,iBAAA,CAAkB,iBAAiB,EACnC,WAAA,EAAY;AACjB;AAkBA,eAAe,kBAAA,CACb,SAAA,EACA,QAAA,EAoBA,IAAA,EAGA;AACA,EAAA,MAAM;AAAA,IACJ,eAAA;AAAA,IACA,IAAA;AAAA,IACA,kBAAA;AAAA,IACA,UAAA;AAAA,IACA,oBAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,QAAA;AAEJ,EAAA,OAAO,UAAU,OAAA,CACd,YAAA,CAAa,IAAA,CAAK,MAAM,EACxB,QAAA,CAAS;AAAA,IACR,eAAA;AAAA,IACA,IAAA;AAAA,IACA,kBAAA;AAAA,IACA,UAAA;AAAA,IACA,oBAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACD,CAAA,CACA,eAAA,CAAgB,gBAAgB,EAChC,WAAA,EAAY;AACjB;AAEA,eAAe,cACb,SAAA,EACA,QAAA,EAWA,IAAA,EAIA,iBAAA,GAAmC,EAAC,EACpC;AACA,EAAA,MAAM,EAAE,eAAA,EAAiB,kBAAA,EAAoB,MAAM,YAAA,EAAc,GAAG,kBAAiB,GAAI,QAAA;AAEzF,EAAA,OAAO,SAAA,CAAU,QACd,qBAAA,CAAsB,IAAA,CAAK,QAAQ,IAAA,CAAK,gBAAA,IAAoB,IAAI,CAAA,CAChE,QAAA,CAAS;AAAA,IACR,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACD,EACA,eAAA,CAAgB,gBAAgB,EAChC,iBAAA,CAAkB,iBAAiB,EACnC,WAAA,EAAY;AACjB;AAEA,eAAe,YACb,SAAA,EACA,QAAA,EAWA,IAAA,EAIA,iBAAA,GAAmC,EAAC,EACpC;AACA,EAAA,MAAM,EAAE,eAAA,EAAiB,kBAAA,EAAoB,MAAM,YAAA,EAAc,GAAG,kBAAiB,GAAI,QAAA;AAEzF,EAAA,OAAO,SAAA,CAAU,QACd,mBAAA,CAAoB,IAAA,CAAK,QAAQ,IAAA,CAAK,QAAA,IAAY,IAAI,CAAA,CACtD,QAAA,CAAS;AAAA,IACR,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACD,EACA,eAAA,CAAgB,gBAAgB,EAChC,iBAAA,CAAkB,iBAAiB,EACnC,WAAA,EAAY;AACjB;AAEA,eAAe,oBACb,SAAA,EACA,QAAA,EAsBA,IAAA,EAIA,iBAAA,GAAmC,EAAC,EACpC;AACA,EAAA,MAAM;AAAA,IACJ,eAAA;AAAA,IACA,IAAA;AAAA,IACA,uBAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,qBAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,sBAAA;AAAA,IACA,gBAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,QAAA;AAEJ,EAAA,OAAO,SAAA,CAAU,QACd,aAAA,CAAc,IAAA,CAAK,QAAQ,IAAA,CAAK,WAAW,EAC3C,QAAA,CAAS;AAAA,IACR,eAAA;AAAA,IACA,IAAA;AAAA,IACA,uBAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,qBAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,sBAAA;AAAA,IACA;AAAA,GACD,EACA,eAAA,CAAgB,gBAAgB,EAChC,iBAAA,CAAkB,iBAAiB,EACnC,WAAA,EAAY;AACjB;AAEA,eAAe,qBACb,SAAA,EACA,QAAA,EAoBA,IAAA,EAIA,iBAAA,GAAmC,EAAC,EACpC;AACA,EAAA,MAAM;AAAA,IACJ,eAAA;AAAA,IACA,IAAA;AAAA,IACA,uBAAA;AAAA,IACA,aAAA;AAAA,IACA,sBAAA;AAAA,IACA,sBAAA;AAAA,IACA,qBAAA;AAAA,IACA,uBAAA;AAAA,IACA,qBAAA;AAAA,IACA,uBAAA;AAAA,IACA,gBAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,QAAA;AAEJ,EAAA,OAAO,SAAA,CAAU,QACd,cAAA,CAAe,IAAA,CAAK,QAAQ,IAAA,CAAK,iBAAiB,EAClD,QAAA,CAAS;AAAA,IACR,eAAA;AAAA,IACA,IAAA;AAAA,IACA,uBAAA;AAAA,IACA,aAAA;AAAA,IACA,sBAAA;AAAA,IACA,sBAAA;AAAA,IACA,qBAAA;AAAA,IACA,uBAAA;AAAA,IACA,qBAAA;AAAA,IACA,uBAAA;AAAA,IACA;AAAA,GACD,EACA,eAAA,CAAgB,gBAAgB,EAChC,iBAAA,CAAkB,iBAAiB,EACnC,WAAA,EAAY;AACjB;AAEA,eAAe,eACb,SAAA,EACA,QAAA,EAUA,IAAA,EAIA,iBAAA,GAAmC,EAAC,EACpC;AACA,EAAA,MAAM,EAAE,eAAA,EAAiB,IAAA,EAAM,yBAAyB,YAAA,EAAc,GAAG,kBAAiB,GACxF,QAAA;AAEF,EAAA,OAAO,SAAA,CAAU,QACd,sBAAA,CAAuB,IAAA,CAAK,QAAQ,IAAA,CAAK,WAAA,IAAe,IAAI,CAAA,CAC5D,QAAA,CAAS;AAAA,IACR,eAAA;AAAA,IACA,uBAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACD,EACA,eAAA,CAAgB,gBAAgB,EAChC,iBAAA,CAAkB,iBAAiB,EACnC,WAAA,EAAY;AACjB;AAEA,eAAe,aACb,SAAA,EACA,QAAA,EAUA,IAAA,EAGA,iBAAA,GAAmC,EAAC,EACpC;AACA,EAAA,MAAM,EAAE,eAAA,EAAiB,IAAA,EAAM,yBAAyB,YAAA,EAAc,GAAG,kBAAiB,GACxF,QAAA;AAEF,EAAA,OAAO,UAAU,OAAA,CACd,oBAAA,CAAqB,IAAA,CAAK,MAAM,EAChC,QAAA,CAAS;AAAA,IACR,eAAA;AAAA,IACA,uBAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACD,EACA,eAAA,CAAgB,gBAAgB,EAChC,iBAAA,CAAkB,iBAAiB,EACnC,WAAA,EAAY;AACjB;AAEA,SAAS,8BACP,UAAA,EACA,QAAA,EAWA,IAAA,EAKA,iBAAA,GAAmC,EAAC,EACpC;AACA,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,QAAA;AAAA,IACA,yBAAA;AAAA,IACA,yBAAA;AAAA,IACA,YAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,QAAA;AAEJ,EAAA,OAAO,UAAA,CAAW,OAAA,CACf,uBAAA,CAAwB,IAAA,CAAK,WAAA,EAAa,KAAK,kBAAA,EAAoB,IAAA,CAAK,kBAAkB,CAAA,CAC1F,QAAA,CAAS;AAAA,IACR,SAAA;AAAA,IACA,QAAA;AAAA,IACA,yBAAA;AAAA,IACA,yBAAA;AAAA,IACA;AAAA,GACD,EACA,eAAA,CAAgB,gBAAgB,EAChC,iBAAA,CAAkB,iBAAiB,EACnC,WAAA,EAAY;AACjB;AAEA,SAAS,kCAAA,CACP,YACA,QAAA,EAIA;AACA,EAAA,OAAO,UAAA,CAAW,OAAA,CACf,4BAAA,EAA6B,CAC7B,QAAA,CAAS;AAAA,IACR,iBAAiB,QAAA,CAAS,eAAA;AAAA,IAC1B,MAAM,QAAA,CAAS;AAAA,GAChB,EACA,WAAA,EAAY;AACjB;AAEA,SAAS,uBAAA,CACP,UAAA,EACA,QAAA,EAOA,IAAA,EAGA;AACA,EAAA,MAAM,EAAE,IAAA,EAAM,GAAG,gBAAA,EAAiB,GAAI,QAAA;AAEtC,EAAA,OAAO,WAAW,OAAA,CACf,wBAAA,CAAyB,IAAA,CAAK,aAAa,EAC3C,QAAA,CAAS;AAAA,IACR;AAAA,GACD,CAAA,CACA,eAAA,CAAgB,gBAAgB,EAChC,WAAA,EAAY;AACjB;AAEA,SAAS,oBAAA,CACP,UAAA,EACA,QAAA,EAOA,IAAA,EAGA;AACA,EAAA,MAAM,EAAE,eAAA,EAAiB,GAAG,gBAAA,EAAiB,GAAI,QAAA;AAEjD,EAAA,OAAO,WAAW,OAAA,CACf,4BAAA,CAA6B,IAAA,CAAK,QAAQ,EAC1C,QAAA,CAAS;AAAA,IACR;AAAA,GACD,CAAA,CACA,eAAA,CAAgB,gBAAgB,EAChC,WAAA,EAAY;AACjB;AAEA,SAAS,kBAAA,CACP,UAAA,EACA,QAAA,EAMA,iBAAA,GAAmC,EAAC,EACpC;AACA,EAAA,MAAM,EAAE,eAAA,EAAiB,GAAG,gBAAA,EAAiB,GAAI,QAAA;AAEjD,EAAA,OAAO,UAAA,CAAW,OAAA,CACf,0BAAA,EAA2B,CAC3B,QAAA,CAAS;AAAA,IACR;AAAA,GACD,EACA,eAAA,CAAgB,gBAAgB,EAChC,iBAAA,CAAkB,iBAAiB,EACnC,WAAA,EAAY;AACjB;AAEA,eAAe,iCAAA,CACb,WACA,QAAA,EAUA;AACA,EAAA,MAAM,EAAE,kBAAA,EAAoB,kBAAA,EAAoB,cAAc,QAAA,EAAU,GAAG,kBAAiB,GAC1F,QAAA;AAEF,EAAA,OAAO,SAAA,CAAU,OAAA,CACd,oBAAA,EAAqB,CACrB,QAAA,CAAS;AAAA,IACR,kBAAA;AAAA,IACA,kBAAA;AAAA,IACA,YAAA;AAAA,IACA,eAAA,EAAiB;AAAA,GAClB,CAAA,CACA,eAAA,CAAgB,gBAAgB,EAChC,WAAA,EAAY;AACjB;AAEA,eAAe,eAAA,CACb,WACA,QAAA,EAIA;AACA,EAAA,OAAO,SAAA,CAAU,OAAA,CACd,uBAAA,EAAwB,CACxB,QAAA,CAAS;AAAA,IACR,eAAe,QAAA,CAAS,aAAA;AAAA,IACxB,OAAO,QAAA,CAAS;AAAA,GACjB,EACA,WAAA,EAAY;AACjB;AASA,eAAe,qCACb,SAAA,EACA,QAAA,EAOA,IAAA,EAaA,iBAAA,GAAmC,EAAC,EACpC;AACA,EAAA,MAAM,EAAE,IAAA,EAAM,GAAG,gBAAA,EAAiB,GAAI,QAAA;AAEtC,EAAA,OAAO,SAAA,CAAU,QACd,8BAAA,CAA+B,IAAA,CAAK,OAAO,IAAA,CAAK,MAAM,EACtD,QAAA,CAAS;AAAA,IACR;AAAA,GACD,EACA,eAAA,CAAgB,gBAAgB,EAChC,iBAAA,CAAkB,iBAAiB,EACnC,WAAA,EAAY;AACjB;AASA,eAAe,sCACb,SAAA,EACA,QAAA,EAoBA,iBAAA,GAAmC,IACnC,IAAA,EASA;AACA,EAAA,MAAM;AAAA,IACJ,cAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA,GAAe,gBAAA;AAAA,IACf,GAAG;AAAA,GACL,GAAI,QAAA;AAEJ,EAAA,OAAO,SAAA,CAAU,OAAA,CACd,gCAAA,CAAiC,IAAA,CAAK,IAAA,IAAQ,IAAIC,mBAAA,CAAG,CAAC,CAAC,CAAA,CACvD,QAAA,CAAS;AAAA,IACR,cAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACD,EACA,eAAA,CAAgB,gBAAgB,EAChC,iBAAA,CAAkB,iBAAiB,EACnC,WAAA,EAAY;AACjB;AAEA,eAAe,iBAAA,CACb,SAAA,EACA,QAAA,EAWA,IAAA,EAGA;AACA,EAAA,MAAM,EAAE,eAAe,QAAA,EAAU,QAAA,EAAU,MAAM,YAAA,EAAc,GAAG,kBAAiB,GAAI,QAAA;AAEvF,EAAA,OAAO,SAAA,CAAU,QACd,kBAAA,CAAmB;AAAA,IAClB,GAAG,IAAA,CAAK,UAAA;AAAA,IACR,WAAA,EAAa,CAAA;AAAA,IACb,IAAA,EAAM,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC;AAAA,GAC9B,EACA,QAAA,CAAS;AAAA,IACR,aAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACD,CAAA,CACA,eAAA,CAAgB,gBAAgB,EAChC,WAAA,EAAY;AACjB;AAEA,eAAe,kBAAA,CACb,WACA,QAAA,EAOA;AACA,EAAA,MAAM,EAAE,eAAA,EAAiB,QAAA,EAAU,GAAG,kBAAiB,GAAI,QAAA;AAC3D,EAAA,OAAO,SAAA,CAAU,OAAA,CACd,oBAAA,EAAqB,CACrB,QAAA,CAAS;AAAA,IACR,eAAA;AAAA,IACA;AAAA,GACD,CAAA,CACA,eAAA,CAAgB,gBAAgB,EAChC,WAAA,EAAY;AACjB;AAiBA,eAAe,iBAAA,CACb,SAAA,EACA,QAAA,EAOA,iBAAA,GAAmC,EAAC,EACpC;AACA,EAAA,OAAO,SAAA,CAAU,OAAA,CACd,yBAAA,EAA0B,CAC1B,QAAA,CAAS;AAAA,IACR,iBAAiB,QAAA,CAAS;AAAA,GAC3B,CAAA,CACA,iBAAA,CAAkB,iBAAiB,EACnC,WAAA,EAAY;AACjB;AAEA,IAAM,YAAA,GAAe;AAAA,EACnB,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,qBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,YAAA;AAAA,EACA,yBAAA;AAAA,EACA,4BAAA;AAAA,EACA,6BAAA;AAAA,EACA,kCAAA;AAAA,EACA,iBAAA;AAAA,EACA,uBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iCAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,qCAAA;AAAA,EACA,oCAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAO,oBAAA,GAAQ","file":"instructions.cjs","sourcesContent":["import { PublicKey } from \"@solana/web3.js\";\n\nexport const MEMO_PROGRAM_ID: PublicKey = new PublicKey(\n \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\"\n);\n\n/** Address of the SPL Associated Token Account program */\nexport const ASSOCIATED_TOKEN_PROGRAM_ID: PublicKey = new PublicKey(\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n);\n\nexport const TOKEN_PROGRAM_ID = new PublicKey(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\");\nexport const TOKEN_2022_PROGRAM_ID = new PublicKey(\"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\");\n","import { AccountMeta, PublicKey } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\n\nimport { MarginfiProgram } from \"./types\";\nimport type { BankConfigCompactRaw, BankConfigOptRaw } from \"./services\";\nimport { TOKEN_PROGRAM_ID } from \"./vendor/spl\";\n\nasync function makeInitMarginfiAccountIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiGroup: PublicKey;\n marginfiAccount: PublicKey;\n authority: PublicKey;\n feePayer: PublicKey;\n }\n) {\n return mfProgram.methods.marginfiAccountInitialize().accounts(accounts).instruction();\n}\n\nasync function makeInitMarginfiAccountPdaIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiGroup: PublicKey;\n marginfiAccount: PublicKey;\n authority: PublicKey;\n feePayer: PublicKey;\n },\n args: {\n accountIndex: number;\n thirdPartyId?: number;\n }\n) {\n return mfProgram.methods\n .marginfiAccountInitializePda(args.accountIndex, args.thirdPartyId ?? null)\n .accountsPartial({\n marginfiGroup: accounts.marginfiGroup,\n marginfiAccount: accounts.marginfiAccount,\n authority: accounts.authority,\n feePayer: accounts.feePayer,\n })\n .instruction();\n}\n\nasync function makeJuplendDepositIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n signerTokenAccount: PublicKey;\n\n lendingAdmin: PublicKey;\n supplyTokenReservesLiquidity: PublicKey;\n lendingSupplyPositionOnLiquidity: PublicKey;\n rateModel: PublicKey;\n vault: PublicKey;\n liquidity: PublicKey;\n liquidityProgram: PublicKey;\n rewardsRateModel: PublicKey;\n tokenProgram: PublicKey;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n fTokenMint?: PublicKey;\n integrationAcc1?: PublicKey;\n integrationAcc2?: PublicKey;\n mint?: PublicKey;\n },\n args: {\n amount: BN;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n signerTokenAccount,\n lendingAdmin,\n supplyTokenReservesLiquidity,\n lendingSupplyPositionOnLiquidity,\n rateModel,\n vault,\n liquidity,\n liquidityProgram,\n rewardsRateModel,\n tokenProgram,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .juplendDeposit(args.amount)\n .accounts(accounts)\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeJuplendWithdrawIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n lendingAdmin: PublicKey;\n supplyTokenReservesLiquidity: PublicKey;\n lendingSupplyPositionOnLiquidity: PublicKey;\n rateModel: PublicKey;\n vault: PublicKey;\n claimAccount: PublicKey;\n liquidity: PublicKey;\n liquidityProgram: PublicKey;\n rewardsRateModel: PublicKey;\n tokenProgram: PublicKey;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n mint?: PublicKey;\n integrationAcc1?: PublicKey;\n fTokenMint?: PublicKey;\n integrationAcc2?: PublicKey;\n integrationAcc3?: PublicKey;\n },\n args: {\n amount: BN;\n withdrawAll?: boolean | null;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n destinationTokenAccount,\n lendingAdmin,\n supplyTokenReservesLiquidity,\n lendingSupplyPositionOnLiquidity,\n rateModel,\n vault,\n claimAccount,\n liquidity,\n liquidityProgram,\n rewardsRateModel,\n tokenProgram,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .juplendWithdraw(args.amount, args.withdrawAll ?? null)\n .accounts(accounts)\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeKaminoDepositIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n signerTokenAccount: PublicKey;\n lendingMarket: PublicKey;\n\n lendingMarketAuthority: PublicKey;\n reserveLiquiditySupply: PublicKey;\n reserveCollateralMint: PublicKey;\n reserveDestinationDepositCollateral: PublicKey;\n liquidityTokenProgram: PublicKey;\n\n obligationFarmUserState: PublicKey | null;\n reserveFarmState: PublicKey | null;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n integrationAcc1?: PublicKey;\n integrationAcc2?: PublicKey;\n mint?: PublicKey;\n },\n args: {\n amount: BN;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n signerTokenAccount,\n lendingMarket,\n lendingMarketAuthority,\n reserveLiquiditySupply,\n reserveCollateralMint,\n reserveDestinationDepositCollateral,\n liquidityTokenProgram,\n obligationFarmUserState,\n reserveFarmState,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .kaminoDeposit(args.amount)\n .accounts(accounts)\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\n/**\n * Create a Drift deposit instruction\n * Deposits tokens into a Drift spot market through a marginfi bank account\n *\n * @param mfProgram - The marginfi program instance\n * @param accounts - Required and optional accounts for the instruction\n * @param accounts.marginfiAccount - The marginfi account depositing funds\n * @param accounts.bank - The marginfi bank account for the asset\n * @param accounts.signerTokenAccount - The signer's token account (source of funds)\n * @param accounts.driftState - The Drift program state account\n * @param accounts.driftSpotMarketVault - The Drift spot market vault receiving tokens\n * @param accounts.tokenProgram - The SPL token program\n * @param accounts.driftOracle - (Optional) Oracle account for the asset\n * @param args - Instruction arguments\n * @param args.amount - Amount to deposit in native token decimals\n */\nasync function makeDriftDepositIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n signerTokenAccount: PublicKey;\n driftState: PublicKey;\n driftSpotMarketVault: PublicKey;\n tokenProgram: PublicKey;\n driftOracle: PublicKey | null;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n integrationAcc2?: PublicKey;\n integrationAcc3?: PublicKey;\n integrationAcc1?: PublicKey;\n mint?: PublicKey;\n driftProgram?: PublicKey;\n systemProgram?: PublicKey;\n },\n args: {\n amount: BN;\n }\n) {\n const {\n marginfiAccount,\n bank,\n signerTokenAccount,\n driftState,\n driftSpotMarketVault,\n tokenProgram,\n driftOracle,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .driftDeposit(args.amount)\n .accounts({\n marginfiAccount,\n bank,\n signerTokenAccount,\n driftState,\n driftSpotMarketVault,\n tokenProgram,\n driftOracle,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nasync function makeDepositIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n signerTokenAccount: PublicKey;\n bank: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n },\n args: {\n amount: BN;\n depositUpToLimit?: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, signerTokenAccount, bank, tokenProgram, ...optionalAccounts } = accounts;\n\n return mfProgram.methods\n .lendingAccountDeposit(args.amount, args.depositUpToLimit ?? null)\n .accounts({\n marginfiAccount,\n signerTokenAccount,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeRepayIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n signerTokenAccount: PublicKey;\n bank: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n },\n args: {\n amount: BN;\n repayAll?: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, signerTokenAccount, bank, tokenProgram, ...optionalAccounts } = accounts;\n\n return mfProgram.methods\n .lendingAccountRepay(args.amount, args.repayAll ?? null)\n .accounts({\n marginfiAccount,\n signerTokenAccount,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeDriftWithdrawIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n\n driftState: PublicKey;\n driftSigner: PublicKey;\n driftSpotMarketVault: PublicKey;\n tokenProgram: PublicKey;\n\n driftOracle: PublicKey | null;\n driftRewardOracle: PublicKey | null;\n driftRewardSpotMarket: PublicKey | null;\n driftRewardMint: PublicKey | null;\n driftRewardOracle2: PublicKey | null;\n driftRewardSpotMarket2: PublicKey | null;\n driftRewardMint2: PublicKey | null;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n amount: BN;\n withdrawAll: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n destinationTokenAccount,\n driftState,\n driftSigner,\n driftSpotMarketVault,\n tokenProgram,\n driftOracle,\n driftRewardOracle,\n driftRewardSpotMarket,\n driftRewardMint,\n driftRewardOracle2,\n driftRewardSpotMarket2,\n driftRewardMint2,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .driftWithdraw(args.amount, args.withdrawAll)\n .accounts({\n marginfiAccount,\n bank,\n destinationTokenAccount,\n driftState,\n driftSigner,\n driftSpotMarketVault,\n tokenProgram,\n driftOracle,\n driftRewardOracle,\n driftRewardSpotMarket,\n driftRewardMint,\n driftRewardOracle2,\n driftRewardSpotMarket2,\n driftRewardMint2,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeKaminoWithdrawIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n lendingMarket: PublicKey;\n mint: PublicKey;\n\n lendingMarketAuthority: PublicKey;\n reserveLiquiditySupply: PublicKey;\n reserveCollateralMint: PublicKey;\n reserveSourceCollateral: PublicKey;\n liquidityTokenProgram: PublicKey;\n\n obligationFarmUserState: PublicKey | null;\n reserveFarmState: PublicKey | null;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n amount: BN;\n isFinalWithdrawal: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n destinationTokenAccount,\n lendingMarket,\n lendingMarketAuthority,\n reserveLiquiditySupply,\n reserveCollateralMint,\n reserveSourceCollateral,\n liquidityTokenProgram,\n obligationFarmUserState,\n reserveFarmState,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .kaminoWithdraw(args.amount, args.isFinalWithdrawal)\n .accounts({\n marginfiAccount,\n bank,\n destinationTokenAccount,\n lendingMarket,\n lendingMarketAuthority,\n reserveLiquiditySupply,\n reserveCollateralMint,\n reserveSourceCollateral,\n liquidityTokenProgram,\n obligationFarmUserState,\n reserveFarmState,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeWithdrawIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n amount: BN;\n withdrawAll?: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, bank, destinationTokenAccount, tokenProgram, ...optionalAccounts } =\n accounts;\n\n return mfProgram.methods\n .lendingAccountWithdraw(args.amount, args.withdrawAll ?? null)\n .accounts({\n marginfiAccount,\n destinationTokenAccount,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeBorrowIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n amount: BN;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, bank, destinationTokenAccount, tokenProgram, ...optionalAccounts } =\n accounts;\n\n return mfProgram.methods\n .lendingAccountBorrow(args.amount)\n .accounts({\n marginfiAccount,\n destinationTokenAccount,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nfunction makeLendingAccountLiquidateIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n assetBank: PublicKey;\n liabBank: PublicKey;\n liquidatorMarginfiAccount: PublicKey;\n liquidateeMarginfiAccount: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n assetAmount: BN;\n liquidateeAccounts: number;\n liquidatorAccounts: number;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n assetBank,\n liabBank,\n liquidatorMarginfiAccount,\n liquidateeMarginfiAccount,\n tokenProgram,\n ...optionalAccounts\n } = accounts;\n\n return mfiProgram.methods\n .lendingAccountLiquidate(args.assetAmount, args.liquidateeAccounts, args.liquidatorAccounts)\n .accounts({\n assetBank,\n liabBank,\n liquidatorMarginfiAccount,\n liquidateeMarginfiAccount,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nfunction makeLendingAccountClearEmissionsIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n }\n) {\n return mfiProgram.methods\n .lendingAccountClearEmissions()\n .accounts({\n marginfiAccount: accounts.marginfiAccount,\n bank: accounts.bank,\n })\n .instruction();\n}\n\nfunction makePoolConfigureBankIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n bank: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n admin?: PublicKey;\n },\n args: {\n bankConfigOpt: BankConfigOptRaw;\n }\n) {\n const { bank, ...optionalAccounts } = accounts;\n\n return mfiProgram.methods\n .lendingPoolConfigureBank(args.bankConfigOpt)\n .accounts({\n bank,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nfunction makeBeginFlashLoanIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n // Optional accounts - to override inference\n authority?: PublicKey;\n ixsSysvar?: PublicKey;\n },\n args: {\n endIndex: BN;\n }\n) {\n const { marginfiAccount, ...optionalAccounts } = accounts;\n\n return mfiProgram.methods\n .lendingAccountStartFlashloan(args.endIndex)\n .accounts({\n marginfiAccount,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nfunction makeEndFlashLoanIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n // Optional accounts - to override inference\n authority?: PublicKey;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, ...optionalAccounts } = accounts;\n\n return mfiProgram.methods\n .lendingAccountEndFlashloan()\n .accounts({\n marginfiAccount,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeAccountTransferToNewAccountIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n oldMarginfiAccount: PublicKey;\n newMarginfiAccount: PublicKey;\n newAuthority: PublicKey;\n feePayer: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n }\n) {\n const { oldMarginfiAccount, newMarginfiAccount, newAuthority, feePayer, ...optionalAccounts } =\n accounts;\n\n return mfProgram.methods\n .transferToNewAccount()\n .accounts({\n oldMarginfiAccount,\n newMarginfiAccount,\n newAuthority,\n globalFeeWallet: feePayer,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nasync function makeGroupInitIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiGroup: PublicKey;\n admin: PublicKey;\n }\n) {\n return mfProgram.methods\n .marginfiGroupInitialize()\n .accounts({\n marginfiGroup: accounts.marginfiGroup,\n admin: accounts.admin,\n })\n .instruction();\n}\n\n/**\n * Configure the oracle for a bank\n * @param mfProgram The marginfi program\n * @param accounts The accounts required for this instruction\n * @param args The oracle setup index and feed id\n * @param remainingAccounts The remaining accounts required for this instruction, should include the feed oracle key\n */\nasync function makeLendingPoolConfigureBankOracleIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n bank: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n admin?: PublicKey;\n },\n args: {\n /**\n * The oracle setup index, see {@link serializeOracleSetupToIndex}\n */\n setup: number;\n /**\n * The oracle feed id\n */\n feedId: PublicKey;\n },\n /**\n * The remaining accounts required for this instruction, should include the feed oracle key (non writable & signable)\n */\n remainingAccounts: AccountMeta[] = []\n) {\n const { bank, ...optionalAccounts } = accounts;\n\n return mfProgram.methods\n .lendingPoolConfigureBankOracle(args.setup, args.feedId)\n .accounts({\n bank,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\n/**\n * Creates an instruction to add a permissionless staked bank to a lending pool.\n * @param mfProgram - The marginfi program instance\n * @param accounts - The accounts required for this instruction\n * @param remainingAccounts - The remaining accounts required for this instruction, including pythOracle, solPool and bankMint\n * @param args - Optional arguments for this instruction\n */\nasync function makePoolAddPermissionlessStakedBankIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n stakedSettings: PublicKey;\n feePayer: PublicKey;\n bankMint: PublicKey;\n solPool: PublicKey;\n stakePool: PublicKey;\n // Optional accounts - to override inference\n marginfiGroup?: PublicKey;\n /**\n * The token program to use for this instruction, defaults to the SPL token program\n */\n tokenProgram?: PublicKey;\n },\n /**\n * The remaining accounts required for this instruction. Should include:\n * - pythOracle: The pyth oracle key (non writable & non signer)\n * - solPool: The sol pool key (non writable & non signer)\n * - bankMint: The bank mint key (non writable & non signer)\n */\n remainingAccounts: AccountMeta[] = [],\n args: {\n /**\n * The seed to use for the bank account. Defaults to 0 (new BN(0)).\n * If the seed is not specified, the seed is set to 0, and the bank account\n * will be created at the address {@link findPoolAddress} with the default\n * bump.\n */\n seed?: BN;\n }\n) {\n const {\n stakedSettings,\n feePayer,\n bankMint,\n solPool,\n stakePool,\n tokenProgram = TOKEN_PROGRAM_ID,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .lendingPoolAddBankPermissionless(args.seed ?? new BN(0))\n .accounts({\n stakedSettings,\n feePayer,\n bankMint,\n solPool,\n stakePool,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makePoolAddBankIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiGroup: PublicKey;\n feePayer: PublicKey;\n bankMint: PublicKey;\n bank: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n admin?: PublicKey;\n globalFeeWallet?: PublicKey;\n },\n args: {\n bankConfig: BankConfigCompactRaw;\n }\n) {\n const { marginfiGroup, feePayer, bankMint, bank, tokenProgram, ...optionalAccounts } = accounts;\n\n return mfProgram.methods\n .lendingPoolAddBank({\n ...args.bankConfig,\n configFlags: 0,\n pad0: [0, 0, 0, 0, 0, 0, 0, 0],\n })\n .accounts({\n marginfiGroup,\n feePayer,\n bankMint,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nasync function makeCloseAccountIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n feePayer: PublicKey;\n // Optional accounts - to override inference\n authority?: PublicKey;\n }\n) {\n const { marginfiAccount, feePayer, ...optionalAccounts } = accounts;\n return mfProgram.methods\n .marginfiAccountClose()\n .accounts({\n marginfiAccount,\n feePayer,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\n// Deprecated\n// async function makeLendingAccountSortBalancesIx(\n// mfProgram: MarginfiProgram,\n// accounts: {\n// marginfiAccount: PublicKey;\n// }\n// ) {\n// return mfProgram.methods\n// .lendingAccountSortBalances()\n// .accounts({\n// marginfiAccount: accounts.marginfiAccount,\n// })\n// .instruction();\n// }\n\nasync function makePulseHealthIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n },\n /**\n * The remaining accounts required for this instruction. Should include:\n * - For each balance the user has, pass bank and oracle: <bank1, oracle1, bank2, oracle2>\n */\n remainingAccounts: AccountMeta[] = []\n) {\n return mfProgram.methods\n .lendingAccountPulseHealth()\n .accounts({\n marginfiAccount: accounts.marginfiAccount,\n })\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nconst instructions = {\n makeDepositIx,\n makeJuplendDepositIx,\n makeDriftDepositIx,\n makeKaminoDepositIx,\n makeRepayIx,\n makeWithdrawIx,\n makeJuplendWithdrawIx,\n makeDriftWithdrawIx,\n makeKaminoWithdrawIx,\n makeBorrowIx,\n makeInitMarginfiAccountIx,\n makeInitMarginfiAccountPdaIx,\n makeLendingAccountLiquidateIx,\n makeLendingAccountClearEmissionsIx,\n makePoolAddBankIx,\n makePoolConfigureBankIx,\n makeBeginFlashLoanIx,\n makeEndFlashLoanIx,\n makeAccountTransferToNewAccountIx,\n makeGroupInitIx,\n makeCloseAccountIx,\n makePoolAddPermissionlessStakedBankIx,\n makeLendingPoolConfigureBankOracleIx,\n makePulseHealthIx,\n};\n\nexport default instructions;\n"]}
1
+ {"version":3,"sources":["../src/vendor/spl/constants.ts","../src/instructions.ts"],"names":["PublicKey","BN"],"mappings":"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","file":"instructions.cjs","sourcesContent":["import { PublicKey } from \"@solana/web3.js\";\n\nexport const MEMO_PROGRAM_ID: PublicKey = new PublicKey(\n \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\"\n);\n\n/** Address of the SPL Associated Token Account program */\nexport const ASSOCIATED_TOKEN_PROGRAM_ID: PublicKey = new PublicKey(\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n);\n\nexport const TOKEN_PROGRAM_ID = new PublicKey(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\");\nexport const TOKEN_2022_PROGRAM_ID = new PublicKey(\"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\");\n","import { AccountMeta, PublicKey } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\n\nimport { MarginfiProgram } from \"./types\";\nimport type { BankConfigCompactRaw, BankConfigOptRaw } from \"./services\";\nimport { TOKEN_PROGRAM_ID } from \"./vendor/spl\";\n\nasync function makeInitMarginfiAccountIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiGroup: PublicKey;\n marginfiAccount: PublicKey;\n authority: PublicKey;\n feePayer: PublicKey;\n }\n) {\n return mfProgram.methods.marginfiAccountInitialize().accounts(accounts).instruction();\n}\n\nasync function makeInitMarginfiAccountPdaIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiGroup: PublicKey;\n marginfiAccount: PublicKey;\n authority: PublicKey;\n feePayer: PublicKey;\n },\n args: {\n accountIndex: number;\n thirdPartyId?: number;\n }\n) {\n return mfProgram.methods\n .marginfiAccountInitializePda(args.accountIndex, args.thirdPartyId ?? null)\n .accountsPartial({\n marginfiGroup: accounts.marginfiGroup,\n marginfiAccount: accounts.marginfiAccount,\n authority: accounts.authority,\n feePayer: accounts.feePayer,\n })\n .instruction();\n}\n\nasync function makeJuplendDepositIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n signerTokenAccount: PublicKey;\n\n lendingAdmin: PublicKey;\n supplyTokenReservesLiquidity: PublicKey;\n lendingSupplyPositionOnLiquidity: PublicKey;\n rateModel: PublicKey;\n vault: PublicKey;\n liquidity: PublicKey;\n liquidityProgram: PublicKey;\n rewardsRateModel: PublicKey;\n tokenProgram: PublicKey;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n fTokenMint?: PublicKey;\n integrationAcc1?: PublicKey;\n integrationAcc2?: PublicKey;\n mint?: PublicKey;\n },\n args: {\n amount: BN;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n signerTokenAccount,\n lendingAdmin,\n supplyTokenReservesLiquidity,\n lendingSupplyPositionOnLiquidity,\n rateModel,\n vault,\n liquidity,\n liquidityProgram,\n rewardsRateModel,\n tokenProgram,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .juplendDeposit(args.amount)\n .accounts(accounts)\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeJuplendWithdrawIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n lendingAdmin: PublicKey;\n supplyTokenReservesLiquidity: PublicKey;\n lendingSupplyPositionOnLiquidity: PublicKey;\n rateModel: PublicKey;\n vault: PublicKey;\n claimAccount: PublicKey;\n liquidity: PublicKey;\n liquidityProgram: PublicKey;\n rewardsRateModel: PublicKey;\n tokenProgram: PublicKey;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n mint?: PublicKey;\n integrationAcc1?: PublicKey;\n fTokenMint?: PublicKey;\n integrationAcc2?: PublicKey;\n integrationAcc3?: PublicKey;\n },\n args: {\n amount: BN;\n withdrawAll?: boolean | null;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n destinationTokenAccount,\n lendingAdmin,\n supplyTokenReservesLiquidity,\n lendingSupplyPositionOnLiquidity,\n rateModel,\n vault,\n claimAccount,\n liquidity,\n liquidityProgram,\n rewardsRateModel,\n tokenProgram,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .juplendWithdraw(args.amount, args.withdrawAll ?? null)\n .accounts(accounts)\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeKaminoDepositIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n signerTokenAccount: PublicKey;\n lendingMarket: PublicKey;\n\n lendingMarketAuthority: PublicKey;\n reserveLiquiditySupply: PublicKey;\n reserveCollateralMint: PublicKey;\n reserveDestinationDepositCollateral: PublicKey;\n liquidityTokenProgram: PublicKey;\n\n obligationFarmUserState: PublicKey | null;\n reserveFarmState: PublicKey | null;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n integrationAcc1?: PublicKey;\n integrationAcc2?: PublicKey;\n mint?: PublicKey;\n },\n args: {\n amount: BN;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n signerTokenAccount,\n lendingMarket,\n lendingMarketAuthority,\n reserveLiquiditySupply,\n reserveCollateralMint,\n reserveDestinationDepositCollateral,\n liquidityTokenProgram,\n obligationFarmUserState,\n reserveFarmState,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .kaminoDeposit(args.amount)\n .accounts(accounts)\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\n/**\n * Create a Drift deposit instruction\n * Deposits tokens into a Drift spot market through a marginfi bank account\n *\n * @param mfProgram - The marginfi program instance\n * @param accounts - Required and optional accounts for the instruction\n * @param accounts.marginfiAccount - The marginfi account depositing funds\n * @param accounts.bank - The marginfi bank account for the asset\n * @param accounts.signerTokenAccount - The signer's token account (source of funds)\n * @param accounts.driftState - The Drift program state account\n * @param accounts.driftSpotMarketVault - The Drift spot market vault receiving tokens\n * @param accounts.tokenProgram - The SPL token program\n * @param accounts.driftOracle - (Optional) Oracle account for the asset\n * @param args - Instruction arguments\n * @param args.amount - Amount to deposit in native token decimals\n */\nasync function makeDriftDepositIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n signerTokenAccount: PublicKey;\n driftState: PublicKey;\n driftSpotMarketVault: PublicKey;\n tokenProgram: PublicKey;\n driftOracle: PublicKey | null;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n integrationAcc2?: PublicKey;\n integrationAcc3?: PublicKey;\n integrationAcc1?: PublicKey;\n mint?: PublicKey;\n driftProgram?: PublicKey;\n systemProgram?: PublicKey;\n },\n args: {\n amount: BN;\n }\n) {\n const {\n marginfiAccount,\n bank,\n signerTokenAccount,\n driftState,\n driftSpotMarketVault,\n tokenProgram,\n driftOracle,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .driftDeposit(args.amount)\n .accounts({\n marginfiAccount,\n bank,\n signerTokenAccount,\n driftState,\n driftSpotMarketVault,\n tokenProgram,\n driftOracle,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nasync function makeDepositIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n signerTokenAccount: PublicKey;\n bank: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n },\n args: {\n amount: BN;\n depositUpToLimit?: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, signerTokenAccount, bank, tokenProgram, ...optionalAccounts } = accounts;\n\n return mfProgram.methods\n .lendingAccountDeposit(args.amount, args.depositUpToLimit ?? null)\n .accounts({\n marginfiAccount,\n signerTokenAccount,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeRepayIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n signerTokenAccount: PublicKey;\n bank: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n },\n args: {\n amount: BN;\n repayAll?: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, signerTokenAccount, bank, tokenProgram, ...optionalAccounts } = accounts;\n\n return mfProgram.methods\n .lendingAccountRepay(args.amount, args.repayAll ?? null)\n .accounts({\n marginfiAccount,\n signerTokenAccount,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeDriftWithdrawIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n\n driftState: PublicKey;\n driftSigner: PublicKey;\n driftSpotMarketVault: PublicKey;\n tokenProgram: PublicKey;\n\n driftOracle: PublicKey | null;\n driftRewardOracle: PublicKey | null;\n driftRewardSpotMarket: PublicKey | null;\n driftRewardMint: PublicKey | null;\n driftRewardOracle2: PublicKey | null;\n driftRewardSpotMarket2: PublicKey | null;\n driftRewardMint2: PublicKey | null;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n amount: BN;\n withdrawAll: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n destinationTokenAccount,\n driftState,\n driftSigner,\n driftSpotMarketVault,\n tokenProgram,\n driftOracle,\n driftRewardOracle,\n driftRewardSpotMarket,\n driftRewardMint,\n driftRewardOracle2,\n driftRewardSpotMarket2,\n driftRewardMint2,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .driftWithdraw(args.amount, args.withdrawAll)\n .accounts({\n marginfiAccount,\n bank,\n destinationTokenAccount,\n driftState,\n driftSigner,\n driftSpotMarketVault,\n tokenProgram,\n driftOracle,\n driftRewardOracle,\n driftRewardSpotMarket,\n driftRewardMint,\n driftRewardOracle2,\n driftRewardSpotMarket2,\n driftRewardMint2,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeKaminoWithdrawIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n lendingMarket: PublicKey;\n mint: PublicKey;\n\n lendingMarketAuthority: PublicKey;\n reserveLiquiditySupply: PublicKey;\n reserveCollateralMint: PublicKey;\n reserveSourceCollateral: PublicKey;\n liquidityTokenProgram: PublicKey;\n\n obligationFarmUserState: PublicKey | null;\n reserveFarmState: PublicKey | null;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n amount: BN;\n isFinalWithdrawal: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n destinationTokenAccount,\n lendingMarket,\n lendingMarketAuthority,\n reserveLiquiditySupply,\n reserveCollateralMint,\n reserveSourceCollateral,\n liquidityTokenProgram,\n obligationFarmUserState,\n reserveFarmState,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .kaminoWithdraw(args.amount, args.isFinalWithdrawal)\n .accounts({\n marginfiAccount,\n bank,\n destinationTokenAccount,\n lendingMarket,\n lendingMarketAuthority,\n reserveLiquiditySupply,\n reserveCollateralMint,\n reserveSourceCollateral,\n liquidityTokenProgram,\n obligationFarmUserState,\n reserveFarmState,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeWithdrawIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n amount: BN;\n withdrawAll?: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, bank, destinationTokenAccount, tokenProgram, ...optionalAccounts } =\n accounts;\n\n return mfProgram.methods\n .lendingAccountWithdraw(args.amount, args.withdrawAll ?? null)\n .accounts({\n marginfiAccount,\n destinationTokenAccount,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeBorrowIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n amount: BN;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, bank, destinationTokenAccount, tokenProgram, ...optionalAccounts } =\n accounts;\n\n return mfProgram.methods\n .lendingAccountBorrow(args.amount)\n .accounts({\n marginfiAccount,\n destinationTokenAccount,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nfunction makeLendingAccountLiquidateIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n assetBank: PublicKey;\n liabBank: PublicKey;\n liquidatorMarginfiAccount: PublicKey;\n liquidateeMarginfiAccount: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n assetAmount: BN;\n liquidateeAccounts: number;\n liquidatorAccounts: number;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n assetBank,\n liabBank,\n liquidatorMarginfiAccount,\n liquidateeMarginfiAccount,\n tokenProgram,\n ...optionalAccounts\n } = accounts;\n\n return mfiProgram.methods\n .lendingAccountLiquidate(args.assetAmount, args.liquidateeAccounts, args.liquidatorAccounts)\n .accounts({\n assetBank,\n liabBank,\n liquidatorMarginfiAccount,\n liquidateeMarginfiAccount,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nfunction makeLendingAccountClearEmissionsIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n }\n) {\n return mfiProgram.methods\n .lendingAccountClearEmissions()\n .accounts({\n marginfiAccount: accounts.marginfiAccount,\n bank: accounts.bank,\n })\n .instruction();\n}\n\nfunction makePoolConfigureBankIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n bank: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n admin?: PublicKey;\n },\n args: {\n bankConfigOpt: BankConfigOptRaw;\n }\n) {\n const { bank, ...optionalAccounts } = accounts;\n\n return mfiProgram.methods\n .lendingPoolConfigureBank(args.bankConfigOpt)\n .accounts({\n bank,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nfunction makeBeginFlashLoanIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n // Optional accounts - to override inference\n authority?: PublicKey;\n ixsSysvar?: PublicKey;\n },\n args: {\n endIndex: BN;\n }\n) {\n const { marginfiAccount, ...optionalAccounts } = accounts;\n\n return mfiProgram.methods\n .lendingAccountStartFlashloan(args.endIndex)\n .accounts({\n marginfiAccount,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nfunction makeEndFlashLoanIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n // Optional accounts - to override inference\n authority?: PublicKey;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, ...optionalAccounts } = accounts;\n\n return mfiProgram.methods\n .lendingAccountEndFlashloan()\n .accounts({\n marginfiAccount,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeAccountTransferToNewAccountIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n oldMarginfiAccount: PublicKey;\n newMarginfiAccount: PublicKey;\n newAuthority: PublicKey;\n globalFeeWallet: PublicKey;\n feePayer: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n }\n) {\n const {\n oldMarginfiAccount,\n newMarginfiAccount,\n newAuthority,\n globalFeeWallet,\n feePayer,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .transferToNewAccount()\n .accounts({\n oldMarginfiAccount,\n newMarginfiAccount,\n newAuthority,\n globalFeeWallet,\n feePayer,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nasync function makeGroupInitIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiGroup: PublicKey;\n admin: PublicKey;\n }\n) {\n return mfProgram.methods\n .marginfiGroupInitialize()\n .accounts({\n marginfiGroup: accounts.marginfiGroup,\n admin: accounts.admin,\n })\n .instruction();\n}\n\n/**\n * Configure the oracle for a bank\n * @param mfProgram The marginfi program\n * @param accounts The accounts required for this instruction\n * @param args The oracle setup index and feed id\n * @param remainingAccounts The remaining accounts required for this instruction, should include the feed oracle key\n */\nasync function makeLendingPoolConfigureBankOracleIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n bank: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n admin?: PublicKey;\n },\n args: {\n /**\n * The oracle setup index, see {@link serializeOracleSetupToIndex}\n */\n setup: number;\n /**\n * The oracle feed id\n */\n feedId: PublicKey;\n },\n /**\n * The remaining accounts required for this instruction, should include the feed oracle key (non writable & signable)\n */\n remainingAccounts: AccountMeta[] = []\n) {\n const { bank, ...optionalAccounts } = accounts;\n\n return mfProgram.methods\n .lendingPoolConfigureBankOracle(args.setup, args.feedId)\n .accounts({\n bank,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\n/**\n * Creates an instruction to add a permissionless staked bank to a lending pool.\n * @param mfProgram - The marginfi program instance\n * @param accounts - The accounts required for this instruction\n * @param remainingAccounts - The remaining accounts required for this instruction, including pythOracle, solPool and bankMint\n * @param args - Optional arguments for this instruction\n */\nasync function makePoolAddPermissionlessStakedBankIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n stakedSettings: PublicKey;\n feePayer: PublicKey;\n bankMint: PublicKey;\n solPool: PublicKey;\n stakePool: PublicKey;\n // Optional accounts - to override inference\n marginfiGroup?: PublicKey;\n /**\n * The token program to use for this instruction, defaults to the SPL token program\n */\n tokenProgram?: PublicKey;\n },\n /**\n * The remaining accounts required for this instruction. Should include:\n * - pythOracle: The pyth oracle key (non writable & non signer)\n * - solPool: The sol pool key (non writable & non signer)\n * - bankMint: The bank mint key (non writable & non signer)\n */\n remainingAccounts: AccountMeta[] = [],\n args: {\n /**\n * The seed to use for the bank account. Defaults to 0 (new BN(0)).\n * If the seed is not specified, the seed is set to 0, and the bank account\n * will be created at the address {@link findPoolAddress} with the default\n * bump.\n */\n seed?: BN;\n }\n) {\n const {\n stakedSettings,\n feePayer,\n bankMint,\n solPool,\n stakePool,\n tokenProgram = TOKEN_PROGRAM_ID,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .lendingPoolAddBankPermissionless(args.seed ?? new BN(0))\n .accounts({\n stakedSettings,\n feePayer,\n bankMint,\n solPool,\n stakePool,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makePoolAddBankIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiGroup: PublicKey;\n feePayer: PublicKey;\n bankMint: PublicKey;\n bank: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n admin?: PublicKey;\n globalFeeWallet?: PublicKey;\n },\n args: {\n bankConfig: BankConfigCompactRaw;\n }\n) {\n const { marginfiGroup, feePayer, bankMint, bank, tokenProgram, ...optionalAccounts } = accounts;\n\n return mfProgram.methods\n .lendingPoolAddBank({\n ...args.bankConfig,\n configFlags: 0,\n pad0: [0, 0, 0, 0, 0, 0, 0, 0],\n })\n .accounts({\n marginfiGroup,\n feePayer,\n bankMint,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nasync function makeCloseAccountIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n feePayer: PublicKey;\n // Optional accounts - to override inference\n authority?: PublicKey;\n }\n) {\n const { marginfiAccount, feePayer, ...optionalAccounts } = accounts;\n return mfProgram.methods\n .marginfiAccountClose()\n .accounts({\n marginfiAccount,\n feePayer,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\n// Deprecated\n// async function makeLendingAccountSortBalancesIx(\n// mfProgram: MarginfiProgram,\n// accounts: {\n// marginfiAccount: PublicKey;\n// }\n// ) {\n// return mfProgram.methods\n// .lendingAccountSortBalances()\n// .accounts({\n// marginfiAccount: accounts.marginfiAccount,\n// })\n// .instruction();\n// }\n\nasync function makePulseHealthIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n },\n /**\n * The remaining accounts required for this instruction. Should include:\n * - For each balance the user has, pass bank and oracle: <bank1, oracle1, bank2, oracle2>\n */\n remainingAccounts: AccountMeta[] = []\n) {\n return mfProgram.methods\n .lendingAccountPulseHealth()\n .accounts({\n marginfiAccount: accounts.marginfiAccount,\n })\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nconst instructions = {\n makeDepositIx,\n makeJuplendDepositIx,\n makeDriftDepositIx,\n makeKaminoDepositIx,\n makeRepayIx,\n makeWithdrawIx,\n makeJuplendWithdrawIx,\n makeDriftWithdrawIx,\n makeKaminoWithdrawIx,\n makeBorrowIx,\n makeInitMarginfiAccountIx,\n makeInitMarginfiAccountPdaIx,\n makeLendingAccountLiquidateIx,\n makeLendingAccountClearEmissionsIx,\n makePoolAddBankIx,\n makePoolConfigureBankIx,\n makeBeginFlashLoanIx,\n makeEndFlashLoanIx,\n makeAccountTransferToNewAccountIx,\n makeGroupInitIx,\n makeCloseAccountIx,\n makePoolAddPermissionlessStakedBankIx,\n makeLendingPoolConfigureBankOracleIx,\n makePulseHealthIx,\n};\n\nexport default instructions;\n"]}
@@ -250,6 +250,7 @@ declare function makeAccountTransferToNewAccountIx(mfProgram: MarginfiProgram, a
250
250
  oldMarginfiAccount: PublicKey;
251
251
  newMarginfiAccount: PublicKey;
252
252
  newAuthority: PublicKey;
253
+ globalFeeWallet: PublicKey;
253
254
  feePayer: PublicKey;
254
255
  group?: PublicKey;
255
256
  authority?: PublicKey;
@@ -250,6 +250,7 @@ declare function makeAccountTransferToNewAccountIx(mfProgram: MarginfiProgram, a
250
250
  oldMarginfiAccount: PublicKey;
251
251
  newMarginfiAccount: PublicKey;
252
252
  newAuthority: PublicKey;
253
+ globalFeeWallet: PublicKey;
253
254
  feePayer: PublicKey;
254
255
  group?: PublicKey;
255
256
  authority?: PublicKey;
@@ -240,12 +240,20 @@ function makeEndFlashLoanIx(mfiProgram, accounts, remainingAccounts = []) {
240
240
  }).accountsPartial(optionalAccounts).remainingAccounts(remainingAccounts).instruction();
241
241
  }
242
242
  async function makeAccountTransferToNewAccountIx(mfProgram, accounts) {
243
- const { oldMarginfiAccount, newMarginfiAccount, newAuthority, feePayer, ...optionalAccounts } = accounts;
243
+ const {
244
+ oldMarginfiAccount,
245
+ newMarginfiAccount,
246
+ newAuthority,
247
+ globalFeeWallet,
248
+ feePayer,
249
+ ...optionalAccounts
250
+ } = accounts;
244
251
  return mfProgram.methods.transferToNewAccount().accounts({
245
252
  oldMarginfiAccount,
246
253
  newMarginfiAccount,
247
254
  newAuthority,
248
- globalFeeWallet: feePayer
255
+ globalFeeWallet,
256
+ feePayer
249
257
  }).accountsPartial(optionalAccounts).instruction();
250
258
  }
251
259
  async function makeGroupInitIx(mfProgram, accounts) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/vendor/spl/constants.ts","../src/instructions.ts"],"names":[],"mappings":"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","file":"instructions.js","sourcesContent":["import { PublicKey } from \"@solana/web3.js\";\n\nexport const MEMO_PROGRAM_ID: PublicKey = new PublicKey(\n \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\"\n);\n\n/** Address of the SPL Associated Token Account program */\nexport const ASSOCIATED_TOKEN_PROGRAM_ID: PublicKey = new PublicKey(\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n);\n\nexport const TOKEN_PROGRAM_ID = new PublicKey(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\");\nexport const TOKEN_2022_PROGRAM_ID = new PublicKey(\"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\");\n","import { AccountMeta, PublicKey } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\n\nimport { MarginfiProgram } from \"./types\";\nimport type { BankConfigCompactRaw, BankConfigOptRaw } from \"./services\";\nimport { TOKEN_PROGRAM_ID } from \"./vendor/spl\";\n\nasync function makeInitMarginfiAccountIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiGroup: PublicKey;\n marginfiAccount: PublicKey;\n authority: PublicKey;\n feePayer: PublicKey;\n }\n) {\n return mfProgram.methods.marginfiAccountInitialize().accounts(accounts).instruction();\n}\n\nasync function makeInitMarginfiAccountPdaIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiGroup: PublicKey;\n marginfiAccount: PublicKey;\n authority: PublicKey;\n feePayer: PublicKey;\n },\n args: {\n accountIndex: number;\n thirdPartyId?: number;\n }\n) {\n return mfProgram.methods\n .marginfiAccountInitializePda(args.accountIndex, args.thirdPartyId ?? null)\n .accountsPartial({\n marginfiGroup: accounts.marginfiGroup,\n marginfiAccount: accounts.marginfiAccount,\n authority: accounts.authority,\n feePayer: accounts.feePayer,\n })\n .instruction();\n}\n\nasync function makeJuplendDepositIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n signerTokenAccount: PublicKey;\n\n lendingAdmin: PublicKey;\n supplyTokenReservesLiquidity: PublicKey;\n lendingSupplyPositionOnLiquidity: PublicKey;\n rateModel: PublicKey;\n vault: PublicKey;\n liquidity: PublicKey;\n liquidityProgram: PublicKey;\n rewardsRateModel: PublicKey;\n tokenProgram: PublicKey;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n fTokenMint?: PublicKey;\n integrationAcc1?: PublicKey;\n integrationAcc2?: PublicKey;\n mint?: PublicKey;\n },\n args: {\n amount: BN;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n signerTokenAccount,\n lendingAdmin,\n supplyTokenReservesLiquidity,\n lendingSupplyPositionOnLiquidity,\n rateModel,\n vault,\n liquidity,\n liquidityProgram,\n rewardsRateModel,\n tokenProgram,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .juplendDeposit(args.amount)\n .accounts(accounts)\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeJuplendWithdrawIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n lendingAdmin: PublicKey;\n supplyTokenReservesLiquidity: PublicKey;\n lendingSupplyPositionOnLiquidity: PublicKey;\n rateModel: PublicKey;\n vault: PublicKey;\n claimAccount: PublicKey;\n liquidity: PublicKey;\n liquidityProgram: PublicKey;\n rewardsRateModel: PublicKey;\n tokenProgram: PublicKey;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n mint?: PublicKey;\n integrationAcc1?: PublicKey;\n fTokenMint?: PublicKey;\n integrationAcc2?: PublicKey;\n integrationAcc3?: PublicKey;\n },\n args: {\n amount: BN;\n withdrawAll?: boolean | null;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n destinationTokenAccount,\n lendingAdmin,\n supplyTokenReservesLiquidity,\n lendingSupplyPositionOnLiquidity,\n rateModel,\n vault,\n claimAccount,\n liquidity,\n liquidityProgram,\n rewardsRateModel,\n tokenProgram,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .juplendWithdraw(args.amount, args.withdrawAll ?? null)\n .accounts(accounts)\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeKaminoDepositIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n signerTokenAccount: PublicKey;\n lendingMarket: PublicKey;\n\n lendingMarketAuthority: PublicKey;\n reserveLiquiditySupply: PublicKey;\n reserveCollateralMint: PublicKey;\n reserveDestinationDepositCollateral: PublicKey;\n liquidityTokenProgram: PublicKey;\n\n obligationFarmUserState: PublicKey | null;\n reserveFarmState: PublicKey | null;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n integrationAcc1?: PublicKey;\n integrationAcc2?: PublicKey;\n mint?: PublicKey;\n },\n args: {\n amount: BN;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n signerTokenAccount,\n lendingMarket,\n lendingMarketAuthority,\n reserveLiquiditySupply,\n reserveCollateralMint,\n reserveDestinationDepositCollateral,\n liquidityTokenProgram,\n obligationFarmUserState,\n reserveFarmState,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .kaminoDeposit(args.amount)\n .accounts(accounts)\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\n/**\n * Create a Drift deposit instruction\n * Deposits tokens into a Drift spot market through a marginfi bank account\n *\n * @param mfProgram - The marginfi program instance\n * @param accounts - Required and optional accounts for the instruction\n * @param accounts.marginfiAccount - The marginfi account depositing funds\n * @param accounts.bank - The marginfi bank account for the asset\n * @param accounts.signerTokenAccount - The signer's token account (source of funds)\n * @param accounts.driftState - The Drift program state account\n * @param accounts.driftSpotMarketVault - The Drift spot market vault receiving tokens\n * @param accounts.tokenProgram - The SPL token program\n * @param accounts.driftOracle - (Optional) Oracle account for the asset\n * @param args - Instruction arguments\n * @param args.amount - Amount to deposit in native token decimals\n */\nasync function makeDriftDepositIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n signerTokenAccount: PublicKey;\n driftState: PublicKey;\n driftSpotMarketVault: PublicKey;\n tokenProgram: PublicKey;\n driftOracle: PublicKey | null;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n integrationAcc2?: PublicKey;\n integrationAcc3?: PublicKey;\n integrationAcc1?: PublicKey;\n mint?: PublicKey;\n driftProgram?: PublicKey;\n systemProgram?: PublicKey;\n },\n args: {\n amount: BN;\n }\n) {\n const {\n marginfiAccount,\n bank,\n signerTokenAccount,\n driftState,\n driftSpotMarketVault,\n tokenProgram,\n driftOracle,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .driftDeposit(args.amount)\n .accounts({\n marginfiAccount,\n bank,\n signerTokenAccount,\n driftState,\n driftSpotMarketVault,\n tokenProgram,\n driftOracle,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nasync function makeDepositIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n signerTokenAccount: PublicKey;\n bank: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n },\n args: {\n amount: BN;\n depositUpToLimit?: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, signerTokenAccount, bank, tokenProgram, ...optionalAccounts } = accounts;\n\n return mfProgram.methods\n .lendingAccountDeposit(args.amount, args.depositUpToLimit ?? null)\n .accounts({\n marginfiAccount,\n signerTokenAccount,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeRepayIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n signerTokenAccount: PublicKey;\n bank: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n },\n args: {\n amount: BN;\n repayAll?: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, signerTokenAccount, bank, tokenProgram, ...optionalAccounts } = accounts;\n\n return mfProgram.methods\n .lendingAccountRepay(args.amount, args.repayAll ?? null)\n .accounts({\n marginfiAccount,\n signerTokenAccount,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeDriftWithdrawIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n\n driftState: PublicKey;\n driftSigner: PublicKey;\n driftSpotMarketVault: PublicKey;\n tokenProgram: PublicKey;\n\n driftOracle: PublicKey | null;\n driftRewardOracle: PublicKey | null;\n driftRewardSpotMarket: PublicKey | null;\n driftRewardMint: PublicKey | null;\n driftRewardOracle2: PublicKey | null;\n driftRewardSpotMarket2: PublicKey | null;\n driftRewardMint2: PublicKey | null;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n amount: BN;\n withdrawAll: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n destinationTokenAccount,\n driftState,\n driftSigner,\n driftSpotMarketVault,\n tokenProgram,\n driftOracle,\n driftRewardOracle,\n driftRewardSpotMarket,\n driftRewardMint,\n driftRewardOracle2,\n driftRewardSpotMarket2,\n driftRewardMint2,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .driftWithdraw(args.amount, args.withdrawAll)\n .accounts({\n marginfiAccount,\n bank,\n destinationTokenAccount,\n driftState,\n driftSigner,\n driftSpotMarketVault,\n tokenProgram,\n driftOracle,\n driftRewardOracle,\n driftRewardSpotMarket,\n driftRewardMint,\n driftRewardOracle2,\n driftRewardSpotMarket2,\n driftRewardMint2,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeKaminoWithdrawIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n lendingMarket: PublicKey;\n mint: PublicKey;\n\n lendingMarketAuthority: PublicKey;\n reserveLiquiditySupply: PublicKey;\n reserveCollateralMint: PublicKey;\n reserveSourceCollateral: PublicKey;\n liquidityTokenProgram: PublicKey;\n\n obligationFarmUserState: PublicKey | null;\n reserveFarmState: PublicKey | null;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n amount: BN;\n isFinalWithdrawal: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n destinationTokenAccount,\n lendingMarket,\n lendingMarketAuthority,\n reserveLiquiditySupply,\n reserveCollateralMint,\n reserveSourceCollateral,\n liquidityTokenProgram,\n obligationFarmUserState,\n reserveFarmState,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .kaminoWithdraw(args.amount, args.isFinalWithdrawal)\n .accounts({\n marginfiAccount,\n bank,\n destinationTokenAccount,\n lendingMarket,\n lendingMarketAuthority,\n reserveLiquiditySupply,\n reserveCollateralMint,\n reserveSourceCollateral,\n liquidityTokenProgram,\n obligationFarmUserState,\n reserveFarmState,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeWithdrawIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n amount: BN;\n withdrawAll?: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, bank, destinationTokenAccount, tokenProgram, ...optionalAccounts } =\n accounts;\n\n return mfProgram.methods\n .lendingAccountWithdraw(args.amount, args.withdrawAll ?? null)\n .accounts({\n marginfiAccount,\n destinationTokenAccount,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeBorrowIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n amount: BN;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, bank, destinationTokenAccount, tokenProgram, ...optionalAccounts } =\n accounts;\n\n return mfProgram.methods\n .lendingAccountBorrow(args.amount)\n .accounts({\n marginfiAccount,\n destinationTokenAccount,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nfunction makeLendingAccountLiquidateIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n assetBank: PublicKey;\n liabBank: PublicKey;\n liquidatorMarginfiAccount: PublicKey;\n liquidateeMarginfiAccount: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n assetAmount: BN;\n liquidateeAccounts: number;\n liquidatorAccounts: number;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n assetBank,\n liabBank,\n liquidatorMarginfiAccount,\n liquidateeMarginfiAccount,\n tokenProgram,\n ...optionalAccounts\n } = accounts;\n\n return mfiProgram.methods\n .lendingAccountLiquidate(args.assetAmount, args.liquidateeAccounts, args.liquidatorAccounts)\n .accounts({\n assetBank,\n liabBank,\n liquidatorMarginfiAccount,\n liquidateeMarginfiAccount,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nfunction makeLendingAccountClearEmissionsIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n }\n) {\n return mfiProgram.methods\n .lendingAccountClearEmissions()\n .accounts({\n marginfiAccount: accounts.marginfiAccount,\n bank: accounts.bank,\n })\n .instruction();\n}\n\nfunction makePoolConfigureBankIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n bank: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n admin?: PublicKey;\n },\n args: {\n bankConfigOpt: BankConfigOptRaw;\n }\n) {\n const { bank, ...optionalAccounts } = accounts;\n\n return mfiProgram.methods\n .lendingPoolConfigureBank(args.bankConfigOpt)\n .accounts({\n bank,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nfunction makeBeginFlashLoanIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n // Optional accounts - to override inference\n authority?: PublicKey;\n ixsSysvar?: PublicKey;\n },\n args: {\n endIndex: BN;\n }\n) {\n const { marginfiAccount, ...optionalAccounts } = accounts;\n\n return mfiProgram.methods\n .lendingAccountStartFlashloan(args.endIndex)\n .accounts({\n marginfiAccount,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nfunction makeEndFlashLoanIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n // Optional accounts - to override inference\n authority?: PublicKey;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, ...optionalAccounts } = accounts;\n\n return mfiProgram.methods\n .lendingAccountEndFlashloan()\n .accounts({\n marginfiAccount,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeAccountTransferToNewAccountIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n oldMarginfiAccount: PublicKey;\n newMarginfiAccount: PublicKey;\n newAuthority: PublicKey;\n feePayer: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n }\n) {\n const { oldMarginfiAccount, newMarginfiAccount, newAuthority, feePayer, ...optionalAccounts } =\n accounts;\n\n return mfProgram.methods\n .transferToNewAccount()\n .accounts({\n oldMarginfiAccount,\n newMarginfiAccount,\n newAuthority,\n globalFeeWallet: feePayer,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nasync function makeGroupInitIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiGroup: PublicKey;\n admin: PublicKey;\n }\n) {\n return mfProgram.methods\n .marginfiGroupInitialize()\n .accounts({\n marginfiGroup: accounts.marginfiGroup,\n admin: accounts.admin,\n })\n .instruction();\n}\n\n/**\n * Configure the oracle for a bank\n * @param mfProgram The marginfi program\n * @param accounts The accounts required for this instruction\n * @param args The oracle setup index and feed id\n * @param remainingAccounts The remaining accounts required for this instruction, should include the feed oracle key\n */\nasync function makeLendingPoolConfigureBankOracleIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n bank: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n admin?: PublicKey;\n },\n args: {\n /**\n * The oracle setup index, see {@link serializeOracleSetupToIndex}\n */\n setup: number;\n /**\n * The oracle feed id\n */\n feedId: PublicKey;\n },\n /**\n * The remaining accounts required for this instruction, should include the feed oracle key (non writable & signable)\n */\n remainingAccounts: AccountMeta[] = []\n) {\n const { bank, ...optionalAccounts } = accounts;\n\n return mfProgram.methods\n .lendingPoolConfigureBankOracle(args.setup, args.feedId)\n .accounts({\n bank,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\n/**\n * Creates an instruction to add a permissionless staked bank to a lending pool.\n * @param mfProgram - The marginfi program instance\n * @param accounts - The accounts required for this instruction\n * @param remainingAccounts - The remaining accounts required for this instruction, including pythOracle, solPool and bankMint\n * @param args - Optional arguments for this instruction\n */\nasync function makePoolAddPermissionlessStakedBankIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n stakedSettings: PublicKey;\n feePayer: PublicKey;\n bankMint: PublicKey;\n solPool: PublicKey;\n stakePool: PublicKey;\n // Optional accounts - to override inference\n marginfiGroup?: PublicKey;\n /**\n * The token program to use for this instruction, defaults to the SPL token program\n */\n tokenProgram?: PublicKey;\n },\n /**\n * The remaining accounts required for this instruction. Should include:\n * - pythOracle: The pyth oracle key (non writable & non signer)\n * - solPool: The sol pool key (non writable & non signer)\n * - bankMint: The bank mint key (non writable & non signer)\n */\n remainingAccounts: AccountMeta[] = [],\n args: {\n /**\n * The seed to use for the bank account. Defaults to 0 (new BN(0)).\n * If the seed is not specified, the seed is set to 0, and the bank account\n * will be created at the address {@link findPoolAddress} with the default\n * bump.\n */\n seed?: BN;\n }\n) {\n const {\n stakedSettings,\n feePayer,\n bankMint,\n solPool,\n stakePool,\n tokenProgram = TOKEN_PROGRAM_ID,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .lendingPoolAddBankPermissionless(args.seed ?? new BN(0))\n .accounts({\n stakedSettings,\n feePayer,\n bankMint,\n solPool,\n stakePool,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makePoolAddBankIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiGroup: PublicKey;\n feePayer: PublicKey;\n bankMint: PublicKey;\n bank: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n admin?: PublicKey;\n globalFeeWallet?: PublicKey;\n },\n args: {\n bankConfig: BankConfigCompactRaw;\n }\n) {\n const { marginfiGroup, feePayer, bankMint, bank, tokenProgram, ...optionalAccounts } = accounts;\n\n return mfProgram.methods\n .lendingPoolAddBank({\n ...args.bankConfig,\n configFlags: 0,\n pad0: [0, 0, 0, 0, 0, 0, 0, 0],\n })\n .accounts({\n marginfiGroup,\n feePayer,\n bankMint,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nasync function makeCloseAccountIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n feePayer: PublicKey;\n // Optional accounts - to override inference\n authority?: PublicKey;\n }\n) {\n const { marginfiAccount, feePayer, ...optionalAccounts } = accounts;\n return mfProgram.methods\n .marginfiAccountClose()\n .accounts({\n marginfiAccount,\n feePayer,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\n// Deprecated\n// async function makeLendingAccountSortBalancesIx(\n// mfProgram: MarginfiProgram,\n// accounts: {\n// marginfiAccount: PublicKey;\n// }\n// ) {\n// return mfProgram.methods\n// .lendingAccountSortBalances()\n// .accounts({\n// marginfiAccount: accounts.marginfiAccount,\n// })\n// .instruction();\n// }\n\nasync function makePulseHealthIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n },\n /**\n * The remaining accounts required for this instruction. Should include:\n * - For each balance the user has, pass bank and oracle: <bank1, oracle1, bank2, oracle2>\n */\n remainingAccounts: AccountMeta[] = []\n) {\n return mfProgram.methods\n .lendingAccountPulseHealth()\n .accounts({\n marginfiAccount: accounts.marginfiAccount,\n })\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nconst instructions = {\n makeDepositIx,\n makeJuplendDepositIx,\n makeDriftDepositIx,\n makeKaminoDepositIx,\n makeRepayIx,\n makeWithdrawIx,\n makeJuplendWithdrawIx,\n makeDriftWithdrawIx,\n makeKaminoWithdrawIx,\n makeBorrowIx,\n makeInitMarginfiAccountIx,\n makeInitMarginfiAccountPdaIx,\n makeLendingAccountLiquidateIx,\n makeLendingAccountClearEmissionsIx,\n makePoolAddBankIx,\n makePoolConfigureBankIx,\n makeBeginFlashLoanIx,\n makeEndFlashLoanIx,\n makeAccountTransferToNewAccountIx,\n makeGroupInitIx,\n makeCloseAccountIx,\n makePoolAddPermissionlessStakedBankIx,\n makeLendingPoolConfigureBankOracleIx,\n makePulseHealthIx,\n};\n\nexport default instructions;\n"]}
1
+ {"version":3,"sources":["../src/vendor/spl/constants.ts","../src/instructions.ts"],"names":[],"mappings":"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","file":"instructions.js","sourcesContent":["import { PublicKey } from \"@solana/web3.js\";\n\nexport const MEMO_PROGRAM_ID: PublicKey = new PublicKey(\n \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\"\n);\n\n/** Address of the SPL Associated Token Account program */\nexport const ASSOCIATED_TOKEN_PROGRAM_ID: PublicKey = new PublicKey(\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n);\n\nexport const TOKEN_PROGRAM_ID = new PublicKey(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\");\nexport const TOKEN_2022_PROGRAM_ID = new PublicKey(\"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\");\n","import { AccountMeta, PublicKey } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\n\nimport { MarginfiProgram } from \"./types\";\nimport type { BankConfigCompactRaw, BankConfigOptRaw } from \"./services\";\nimport { TOKEN_PROGRAM_ID } from \"./vendor/spl\";\n\nasync function makeInitMarginfiAccountIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiGroup: PublicKey;\n marginfiAccount: PublicKey;\n authority: PublicKey;\n feePayer: PublicKey;\n }\n) {\n return mfProgram.methods.marginfiAccountInitialize().accounts(accounts).instruction();\n}\n\nasync function makeInitMarginfiAccountPdaIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiGroup: PublicKey;\n marginfiAccount: PublicKey;\n authority: PublicKey;\n feePayer: PublicKey;\n },\n args: {\n accountIndex: number;\n thirdPartyId?: number;\n }\n) {\n return mfProgram.methods\n .marginfiAccountInitializePda(args.accountIndex, args.thirdPartyId ?? null)\n .accountsPartial({\n marginfiGroup: accounts.marginfiGroup,\n marginfiAccount: accounts.marginfiAccount,\n authority: accounts.authority,\n feePayer: accounts.feePayer,\n })\n .instruction();\n}\n\nasync function makeJuplendDepositIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n signerTokenAccount: PublicKey;\n\n lendingAdmin: PublicKey;\n supplyTokenReservesLiquidity: PublicKey;\n lendingSupplyPositionOnLiquidity: PublicKey;\n rateModel: PublicKey;\n vault: PublicKey;\n liquidity: PublicKey;\n liquidityProgram: PublicKey;\n rewardsRateModel: PublicKey;\n tokenProgram: PublicKey;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n fTokenMint?: PublicKey;\n integrationAcc1?: PublicKey;\n integrationAcc2?: PublicKey;\n mint?: PublicKey;\n },\n args: {\n amount: BN;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n signerTokenAccount,\n lendingAdmin,\n supplyTokenReservesLiquidity,\n lendingSupplyPositionOnLiquidity,\n rateModel,\n vault,\n liquidity,\n liquidityProgram,\n rewardsRateModel,\n tokenProgram,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .juplendDeposit(args.amount)\n .accounts(accounts)\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeJuplendWithdrawIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n lendingAdmin: PublicKey;\n supplyTokenReservesLiquidity: PublicKey;\n lendingSupplyPositionOnLiquidity: PublicKey;\n rateModel: PublicKey;\n vault: PublicKey;\n claimAccount: PublicKey;\n liquidity: PublicKey;\n liquidityProgram: PublicKey;\n rewardsRateModel: PublicKey;\n tokenProgram: PublicKey;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n mint?: PublicKey;\n integrationAcc1?: PublicKey;\n fTokenMint?: PublicKey;\n integrationAcc2?: PublicKey;\n integrationAcc3?: PublicKey;\n },\n args: {\n amount: BN;\n withdrawAll?: boolean | null;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n destinationTokenAccount,\n lendingAdmin,\n supplyTokenReservesLiquidity,\n lendingSupplyPositionOnLiquidity,\n rateModel,\n vault,\n claimAccount,\n liquidity,\n liquidityProgram,\n rewardsRateModel,\n tokenProgram,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .juplendWithdraw(args.amount, args.withdrawAll ?? null)\n .accounts(accounts)\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeKaminoDepositIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n signerTokenAccount: PublicKey;\n lendingMarket: PublicKey;\n\n lendingMarketAuthority: PublicKey;\n reserveLiquiditySupply: PublicKey;\n reserveCollateralMint: PublicKey;\n reserveDestinationDepositCollateral: PublicKey;\n liquidityTokenProgram: PublicKey;\n\n obligationFarmUserState: PublicKey | null;\n reserveFarmState: PublicKey | null;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n integrationAcc1?: PublicKey;\n integrationAcc2?: PublicKey;\n mint?: PublicKey;\n },\n args: {\n amount: BN;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n signerTokenAccount,\n lendingMarket,\n lendingMarketAuthority,\n reserveLiquiditySupply,\n reserveCollateralMint,\n reserveDestinationDepositCollateral,\n liquidityTokenProgram,\n obligationFarmUserState,\n reserveFarmState,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .kaminoDeposit(args.amount)\n .accounts(accounts)\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\n/**\n * Create a Drift deposit instruction\n * Deposits tokens into a Drift spot market through a marginfi bank account\n *\n * @param mfProgram - The marginfi program instance\n * @param accounts - Required and optional accounts for the instruction\n * @param accounts.marginfiAccount - The marginfi account depositing funds\n * @param accounts.bank - The marginfi bank account for the asset\n * @param accounts.signerTokenAccount - The signer's token account (source of funds)\n * @param accounts.driftState - The Drift program state account\n * @param accounts.driftSpotMarketVault - The Drift spot market vault receiving tokens\n * @param accounts.tokenProgram - The SPL token program\n * @param accounts.driftOracle - (Optional) Oracle account for the asset\n * @param args - Instruction arguments\n * @param args.amount - Amount to deposit in native token decimals\n */\nasync function makeDriftDepositIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n signerTokenAccount: PublicKey;\n driftState: PublicKey;\n driftSpotMarketVault: PublicKey;\n tokenProgram: PublicKey;\n driftOracle: PublicKey | null;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n integrationAcc2?: PublicKey;\n integrationAcc3?: PublicKey;\n integrationAcc1?: PublicKey;\n mint?: PublicKey;\n driftProgram?: PublicKey;\n systemProgram?: PublicKey;\n },\n args: {\n amount: BN;\n }\n) {\n const {\n marginfiAccount,\n bank,\n signerTokenAccount,\n driftState,\n driftSpotMarketVault,\n tokenProgram,\n driftOracle,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .driftDeposit(args.amount)\n .accounts({\n marginfiAccount,\n bank,\n signerTokenAccount,\n driftState,\n driftSpotMarketVault,\n tokenProgram,\n driftOracle,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nasync function makeDepositIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n signerTokenAccount: PublicKey;\n bank: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n },\n args: {\n amount: BN;\n depositUpToLimit?: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, signerTokenAccount, bank, tokenProgram, ...optionalAccounts } = accounts;\n\n return mfProgram.methods\n .lendingAccountDeposit(args.amount, args.depositUpToLimit ?? null)\n .accounts({\n marginfiAccount,\n signerTokenAccount,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeRepayIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n signerTokenAccount: PublicKey;\n bank: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n liquidityVault?: PublicKey;\n },\n args: {\n amount: BN;\n repayAll?: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, signerTokenAccount, bank, tokenProgram, ...optionalAccounts } = accounts;\n\n return mfProgram.methods\n .lendingAccountRepay(args.amount, args.repayAll ?? null)\n .accounts({\n marginfiAccount,\n signerTokenAccount,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeDriftWithdrawIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n\n driftState: PublicKey;\n driftSigner: PublicKey;\n driftSpotMarketVault: PublicKey;\n tokenProgram: PublicKey;\n\n driftOracle: PublicKey | null;\n driftRewardOracle: PublicKey | null;\n driftRewardSpotMarket: PublicKey | null;\n driftRewardMint: PublicKey | null;\n driftRewardOracle2: PublicKey | null;\n driftRewardSpotMarket2: PublicKey | null;\n driftRewardMint2: PublicKey | null;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n amount: BN;\n withdrawAll: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n destinationTokenAccount,\n driftState,\n driftSigner,\n driftSpotMarketVault,\n tokenProgram,\n driftOracle,\n driftRewardOracle,\n driftRewardSpotMarket,\n driftRewardMint,\n driftRewardOracle2,\n driftRewardSpotMarket2,\n driftRewardMint2,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .driftWithdraw(args.amount, args.withdrawAll)\n .accounts({\n marginfiAccount,\n bank,\n destinationTokenAccount,\n driftState,\n driftSigner,\n driftSpotMarketVault,\n tokenProgram,\n driftOracle,\n driftRewardOracle,\n driftRewardSpotMarket,\n driftRewardMint,\n driftRewardOracle2,\n driftRewardSpotMarket2,\n driftRewardMint2,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeKaminoWithdrawIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n lendingMarket: PublicKey;\n mint: PublicKey;\n\n lendingMarketAuthority: PublicKey;\n reserveLiquiditySupply: PublicKey;\n reserveCollateralMint: PublicKey;\n reserveSourceCollateral: PublicKey;\n liquidityTokenProgram: PublicKey;\n\n obligationFarmUserState: PublicKey | null;\n reserveFarmState: PublicKey | null;\n\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n amount: BN;\n isFinalWithdrawal: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n marginfiAccount,\n bank,\n destinationTokenAccount,\n lendingMarket,\n lendingMarketAuthority,\n reserveLiquiditySupply,\n reserveCollateralMint,\n reserveSourceCollateral,\n liquidityTokenProgram,\n obligationFarmUserState,\n reserveFarmState,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .kaminoWithdraw(args.amount, args.isFinalWithdrawal)\n .accounts({\n marginfiAccount,\n bank,\n destinationTokenAccount,\n lendingMarket,\n lendingMarketAuthority,\n reserveLiquiditySupply,\n reserveCollateralMint,\n reserveSourceCollateral,\n liquidityTokenProgram,\n obligationFarmUserState,\n reserveFarmState,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeWithdrawIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n amount: BN;\n withdrawAll?: boolean;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, bank, destinationTokenAccount, tokenProgram, ...optionalAccounts } =\n accounts;\n\n return mfProgram.methods\n .lendingAccountWithdraw(args.amount, args.withdrawAll ?? null)\n .accounts({\n marginfiAccount,\n destinationTokenAccount,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeBorrowIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n bank: PublicKey;\n destinationTokenAccount: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n amount: BN;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, bank, destinationTokenAccount, tokenProgram, ...optionalAccounts } =\n accounts;\n\n return mfProgram.methods\n .lendingAccountBorrow(args.amount)\n .accounts({\n marginfiAccount,\n destinationTokenAccount,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nfunction makeLendingAccountLiquidateIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n assetBank: PublicKey;\n liabBank: PublicKey;\n liquidatorMarginfiAccount: PublicKey;\n liquidateeMarginfiAccount: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n },\n args: {\n assetAmount: BN;\n liquidateeAccounts: number;\n liquidatorAccounts: number;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const {\n assetBank,\n liabBank,\n liquidatorMarginfiAccount,\n liquidateeMarginfiAccount,\n tokenProgram,\n ...optionalAccounts\n } = accounts;\n\n return mfiProgram.methods\n .lendingAccountLiquidate(args.assetAmount, args.liquidateeAccounts, args.liquidatorAccounts)\n .accounts({\n assetBank,\n liabBank,\n liquidatorMarginfiAccount,\n liquidateeMarginfiAccount,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nfunction makeLendingAccountClearEmissionsIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n bank: PublicKey;\n }\n) {\n return mfiProgram.methods\n .lendingAccountClearEmissions()\n .accounts({\n marginfiAccount: accounts.marginfiAccount,\n bank: accounts.bank,\n })\n .instruction();\n}\n\nfunction makePoolConfigureBankIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n bank: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n admin?: PublicKey;\n },\n args: {\n bankConfigOpt: BankConfigOptRaw;\n }\n) {\n const { bank, ...optionalAccounts } = accounts;\n\n return mfiProgram.methods\n .lendingPoolConfigureBank(args.bankConfigOpt)\n .accounts({\n bank,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nfunction makeBeginFlashLoanIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n // Optional accounts - to override inference\n authority?: PublicKey;\n ixsSysvar?: PublicKey;\n },\n args: {\n endIndex: BN;\n }\n) {\n const { marginfiAccount, ...optionalAccounts } = accounts;\n\n return mfiProgram.methods\n .lendingAccountStartFlashloan(args.endIndex)\n .accounts({\n marginfiAccount,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nfunction makeEndFlashLoanIx(\n mfiProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n // Optional accounts - to override inference\n authority?: PublicKey;\n },\n remainingAccounts: AccountMeta[] = []\n) {\n const { marginfiAccount, ...optionalAccounts } = accounts;\n\n return mfiProgram.methods\n .lendingAccountEndFlashloan()\n .accounts({\n marginfiAccount,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makeAccountTransferToNewAccountIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n oldMarginfiAccount: PublicKey;\n newMarginfiAccount: PublicKey;\n newAuthority: PublicKey;\n globalFeeWallet: PublicKey;\n feePayer: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n authority?: PublicKey;\n }\n) {\n const {\n oldMarginfiAccount,\n newMarginfiAccount,\n newAuthority,\n globalFeeWallet,\n feePayer,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .transferToNewAccount()\n .accounts({\n oldMarginfiAccount,\n newMarginfiAccount,\n newAuthority,\n globalFeeWallet,\n feePayer,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nasync function makeGroupInitIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiGroup: PublicKey;\n admin: PublicKey;\n }\n) {\n return mfProgram.methods\n .marginfiGroupInitialize()\n .accounts({\n marginfiGroup: accounts.marginfiGroup,\n admin: accounts.admin,\n })\n .instruction();\n}\n\n/**\n * Configure the oracle for a bank\n * @param mfProgram The marginfi program\n * @param accounts The accounts required for this instruction\n * @param args The oracle setup index and feed id\n * @param remainingAccounts The remaining accounts required for this instruction, should include the feed oracle key\n */\nasync function makeLendingPoolConfigureBankOracleIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n bank: PublicKey;\n // Optional accounts - to override inference\n group?: PublicKey;\n admin?: PublicKey;\n },\n args: {\n /**\n * The oracle setup index, see {@link serializeOracleSetupToIndex}\n */\n setup: number;\n /**\n * The oracle feed id\n */\n feedId: PublicKey;\n },\n /**\n * The remaining accounts required for this instruction, should include the feed oracle key (non writable & signable)\n */\n remainingAccounts: AccountMeta[] = []\n) {\n const { bank, ...optionalAccounts } = accounts;\n\n return mfProgram.methods\n .lendingPoolConfigureBankOracle(args.setup, args.feedId)\n .accounts({\n bank,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\n/**\n * Creates an instruction to add a permissionless staked bank to a lending pool.\n * @param mfProgram - The marginfi program instance\n * @param accounts - The accounts required for this instruction\n * @param remainingAccounts - The remaining accounts required for this instruction, including pythOracle, solPool and bankMint\n * @param args - Optional arguments for this instruction\n */\nasync function makePoolAddPermissionlessStakedBankIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n stakedSettings: PublicKey;\n feePayer: PublicKey;\n bankMint: PublicKey;\n solPool: PublicKey;\n stakePool: PublicKey;\n // Optional accounts - to override inference\n marginfiGroup?: PublicKey;\n /**\n * The token program to use for this instruction, defaults to the SPL token program\n */\n tokenProgram?: PublicKey;\n },\n /**\n * The remaining accounts required for this instruction. Should include:\n * - pythOracle: The pyth oracle key (non writable & non signer)\n * - solPool: The sol pool key (non writable & non signer)\n * - bankMint: The bank mint key (non writable & non signer)\n */\n remainingAccounts: AccountMeta[] = [],\n args: {\n /**\n * The seed to use for the bank account. Defaults to 0 (new BN(0)).\n * If the seed is not specified, the seed is set to 0, and the bank account\n * will be created at the address {@link findPoolAddress} with the default\n * bump.\n */\n seed?: BN;\n }\n) {\n const {\n stakedSettings,\n feePayer,\n bankMint,\n solPool,\n stakePool,\n tokenProgram = TOKEN_PROGRAM_ID,\n ...optionalAccounts\n } = accounts;\n\n return mfProgram.methods\n .lendingPoolAddBankPermissionless(args.seed ?? new BN(0))\n .accounts({\n stakedSettings,\n feePayer,\n bankMint,\n solPool,\n stakePool,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nasync function makePoolAddBankIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiGroup: PublicKey;\n feePayer: PublicKey;\n bankMint: PublicKey;\n bank: PublicKey;\n tokenProgram: PublicKey;\n // Optional accounts - to override inference\n admin?: PublicKey;\n globalFeeWallet?: PublicKey;\n },\n args: {\n bankConfig: BankConfigCompactRaw;\n }\n) {\n const { marginfiGroup, feePayer, bankMint, bank, tokenProgram, ...optionalAccounts } = accounts;\n\n return mfProgram.methods\n .lendingPoolAddBank({\n ...args.bankConfig,\n configFlags: 0,\n pad0: [0, 0, 0, 0, 0, 0, 0, 0],\n })\n .accounts({\n marginfiGroup,\n feePayer,\n bankMint,\n bank,\n tokenProgram,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\nasync function makeCloseAccountIx(\n mfProgram: MarginfiProgram,\n accounts: {\n // Required accounts\n marginfiAccount: PublicKey;\n feePayer: PublicKey;\n // Optional accounts - to override inference\n authority?: PublicKey;\n }\n) {\n const { marginfiAccount, feePayer, ...optionalAccounts } = accounts;\n return mfProgram.methods\n .marginfiAccountClose()\n .accounts({\n marginfiAccount,\n feePayer,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n}\n\n// Deprecated\n// async function makeLendingAccountSortBalancesIx(\n// mfProgram: MarginfiProgram,\n// accounts: {\n// marginfiAccount: PublicKey;\n// }\n// ) {\n// return mfProgram.methods\n// .lendingAccountSortBalances()\n// .accounts({\n// marginfiAccount: accounts.marginfiAccount,\n// })\n// .instruction();\n// }\n\nasync function makePulseHealthIx(\n mfProgram: MarginfiProgram,\n accounts: {\n marginfiAccount: PublicKey;\n },\n /**\n * The remaining accounts required for this instruction. Should include:\n * - For each balance the user has, pass bank and oracle: <bank1, oracle1, bank2, oracle2>\n */\n remainingAccounts: AccountMeta[] = []\n) {\n return mfProgram.methods\n .lendingAccountPulseHealth()\n .accounts({\n marginfiAccount: accounts.marginfiAccount,\n })\n .remainingAccounts(remainingAccounts)\n .instruction();\n}\n\nconst instructions = {\n makeDepositIx,\n makeJuplendDepositIx,\n makeDriftDepositIx,\n makeKaminoDepositIx,\n makeRepayIx,\n makeWithdrawIx,\n makeJuplendWithdrawIx,\n makeDriftWithdrawIx,\n makeKaminoWithdrawIx,\n makeBorrowIx,\n makeInitMarginfiAccountIx,\n makeInitMarginfiAccountPdaIx,\n makeLendingAccountLiquidateIx,\n makeLendingAccountClearEmissionsIx,\n makePoolAddBankIx,\n makePoolConfigureBankIx,\n makeBeginFlashLoanIx,\n makeEndFlashLoanIx,\n makeAccountTransferToNewAccountIx,\n makeGroupInitIx,\n makeCloseAccountIx,\n makePoolAddPermissionlessStakedBankIx,\n makeLendingPoolConfigureBankOracleIx,\n makePulseHealthIx,\n};\n\nexport default instructions;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0dotxyz/p0-ts-sdk",
3
- "version": "2.2.3-alpha.0",
3
+ "version": "2.2.3-alpha.1",
4
4
  "packageManager": "pnpm@10.32.1",
5
5
  "description": "TypeScript SDK for P0 Protocol - A Solana DeFi lending protocol",
6
6
  "type": "module",