@0dotxyz/p0-ts-sdk 2.7.3 → 2.7.4
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.
- package/dist/{dto-rate-model.types-IT8wckYH.d.cts → dto-rate-model.types-DnQmHIO6.d.cts} +27 -1
- package/dist/{dto-rate-model.types-IT8wckYH.d.ts → dto-rate-model.types-DnQmHIO6.d.ts} +27 -1
- package/dist/index.cjs +25818 -25831
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -25
- package/dist/index.d.ts +4 -25
- package/dist/index.js +25819 -25830
- package/dist/index.js.map +1 -1
- package/dist/instructions.cjs +3 -20
- package/dist/instructions.cjs.map +1 -1
- package/dist/instructions.d.cts +2 -2
- package/dist/instructions.d.ts +2 -2
- package/dist/instructions.js +3 -20
- package/dist/instructions.js.map +1 -1
- package/dist/{types-B5SGXpex.d.ts → types-DJqANTTA.d.cts} +1 -1
- package/dist/{types-BFLi0Ozl.d.cts → types-sisv3J7l.d.ts} +1 -1
- package/dist/vendor.cjs +70 -15
- package/dist/vendor.cjs.map +1 -1
- package/dist/vendor.d.cts +71 -21
- package/dist/vendor.d.ts +71 -21
- package/dist/vendor.js +66 -16
- package/dist/vendor.js.map +1 -1
- package/package.json +1 -1
package/dist/instructions.cjs
CHANGED
|
@@ -8,17 +8,6 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
|
8
8
|
var BN__default = /*#__PURE__*/_interopDefault(BN);
|
|
9
9
|
|
|
10
10
|
// src/instructions.ts
|
|
11
|
-
|
|
12
|
-
// src/dialect.ts
|
|
13
|
-
var MARGINFI_V0_1_10_ACTIVATION = {
|
|
14
|
-
// mainnet — upgrades Tuesday 2026-08-25 17:00 CEST (15:00 UTC)
|
|
15
|
-
MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA: 178767e4,
|
|
16
|
-
// staging — running 0.1.10 since 2026-08-03
|
|
17
|
-
stag8sTKds2h4KzjUw3zKTsxbqvT4XKHdaR9X9E6Rct: 0
|
|
18
|
-
};
|
|
19
|
-
function isMarginfiV0110Live(programId, atUnixSeconds = Math.floor(Date.now() / 1e3)) {
|
|
20
|
-
return atUnixSeconds >= (MARGINFI_V0_1_10_ACTIVATION[programId.toBase58()] ?? 0);
|
|
21
|
-
}
|
|
22
11
|
new web3_js.PublicKey(
|
|
23
12
|
"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"
|
|
24
13
|
);
|
|
@@ -247,11 +236,9 @@ function makeBeginFlashLoanIx(mfiProgram, accounts, args) {
|
|
|
247
236
|
}
|
|
248
237
|
async function makeEndFlashLoanIx(mfiProgram, accounts, remainingAccounts = []) {
|
|
249
238
|
const { marginfiAccount, ...optionalAccounts } = accounts;
|
|
250
|
-
|
|
239
|
+
return mfiProgram.methods.lendingAccountEndFlashloan().accounts({
|
|
251
240
|
marginfiAccount
|
|
252
241
|
}).accountsPartial(optionalAccounts).remainingAccounts(remainingAccounts).instruction();
|
|
253
|
-
if (!isMarginfiV0110Live(mfiProgram.programId)) ix.keys.splice(1, 1);
|
|
254
|
-
return ix;
|
|
255
242
|
}
|
|
256
243
|
async function makeAccountTransferToNewAccountIx(mfProgram, accounts) {
|
|
257
244
|
const {
|
|
@@ -262,15 +249,13 @@ async function makeAccountTransferToNewAccountIx(mfProgram, accounts) {
|
|
|
262
249
|
feePayer,
|
|
263
250
|
...optionalAccounts
|
|
264
251
|
} = accounts;
|
|
265
|
-
|
|
252
|
+
return mfProgram.methods.transferToNewAccount().accounts({
|
|
266
253
|
oldMarginfiAccount,
|
|
267
254
|
newMarginfiAccount,
|
|
268
255
|
newAuthority,
|
|
269
256
|
globalFeeWallet,
|
|
270
257
|
feePayer
|
|
271
258
|
}).accountsPartial(optionalAccounts).instruction();
|
|
272
|
-
if (!isMarginfiV0110Live(mfProgram.programId)) ix.keys.splice(7, 1);
|
|
273
|
-
return ix;
|
|
274
259
|
}
|
|
275
260
|
async function makeGroupInitIx(mfProgram, accounts) {
|
|
276
261
|
return mfProgram.methods.marginfiGroupInitialize().accounts({
|
|
@@ -329,11 +314,9 @@ async function makeCloseAccountIx(mfProgram, accounts) {
|
|
|
329
314
|
}).accountsPartial(optionalAccounts).instruction();
|
|
330
315
|
}
|
|
331
316
|
async function makePulseHealthIx(mfProgram, accounts, remainingAccounts = []) {
|
|
332
|
-
|
|
317
|
+
return mfProgram.methods.lendingAccountPulseHealth().accounts({
|
|
333
318
|
marginfiAccount: accounts.marginfiAccount
|
|
334
319
|
}).remainingAccounts(remainingAccounts).instruction();
|
|
335
|
-
if (!isMarginfiV0110Live(mfProgram.programId)) ix.keys.splice(1, 1);
|
|
336
|
-
return ix;
|
|
337
320
|
}
|
|
338
321
|
var instructions = {
|
|
339
322
|
makeDepositIx,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dialect.ts","../src/vendor/spl/constants.ts","../src/instructions.ts"],"names":["PublicKey","BN"],"mappings":";;;;;;;;;;;;AAoBO,IAAM,2BAAA,GAAsD;AAAA;AAAA,EAEjE,2CAAA,EAA6C,QAAA;AAAA;AAAA,EAE7C,2CAAA,EAA6C;AAC/C,CAAA;AAGO,SAAS,mBAAA,CACd,WACA,aAAA,GAAwB,IAAA,CAAK,MAAM,IAAA,CAAK,GAAA,EAAI,GAAI,GAAI,CAAA,EAC3C;AACT,EAAA,OAAO,aAAA,KAAkB,2BAAA,CAA4B,SAAA,CAAU,QAAA,EAAU,CAAA,IAAK,CAAA,CAAA;AAChF;AC/B0C,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;;;ACJhG,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,EAKA,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,UAAU,OAAA,CACd,aAAA,CAAc,KAAK,MAAA,EAAQ,IAAA,CAAK,kBAAkB,IAAI,CAAA,CACtD,QAAA,CAAS,QAAQ,EACjB,eAAA,CAAgB,gBAAgB,EAChC,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,EASA,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;AAKJ,EAAA,MAAM,SAAS,IAAA,CAAK,iBAAA,GAAoB,IAAI,CAAA,KAAM,IAAA,CAAK,iBAAiB,CAAA,GAAI,CAAA,CAAA;AAE5E,EAAA,OAAO,SAAA,CAAU,OAAA,CACd,cAAA,CAAe,IAAA,CAAK,MAAA,EAAQ,UAAU,CAAA,GAAI,IAAA,GAAO,KAAK,CAAA,CACtD,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,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,eAAe,kBAAA,CACb,UAAA,EACA,QAAA,EAMA,iBAAA,GAAmC,EAAC,EACpC;AACA,EAAA,MAAM,EAAE,eAAA,EAAiB,GAAG,gBAAA,EAAiB,GAAI,QAAA;AAEjD,EAAA,MAAM,KAAK,MAAM,UAAA,CAAW,OAAA,CACzB,0BAAA,GACA,QAAA,CAAS;AAAA,IACR;AAAA,GACD,EACA,eAAA,CAAgB,gBAAgB,EAChC,iBAAA,CAAkB,iBAAiB,EACnC,WAAA,EAAY;AAEf,EAAA,IAAI,CAAC,oBAAoB,UAAA,CAAW,SAAS,GAAG,EAAA,CAAG,IAAA,CAAK,MAAA,CAAO,CAAA,EAAG,CAAC,CAAA;AACnE,EAAA,OAAO,EAAA;AACT;AAEA,eAAe,iCAAA,CACb,WACA,QAAA,EAWA;AACA,EAAA,MAAM;AAAA,IACJ,kBAAA;AAAA,IACA,kBAAA;AAAA,IACA,YAAA;AAAA,IACA,eAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,QAAA;AAEJ,EAAA,MAAM,KAAK,MAAM,SAAA,CAAU,OAAA,CACxB,oBAAA,GACA,QAAA,CAAS;AAAA,IACR,kBAAA;AAAA,IACA,kBAAA;AAAA,IACA,YAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACD,CAAA,CACA,eAAA,CAAgB,gBAAgB,EAChC,WAAA,EAAY;AAGf,EAAA,IAAI,CAAC,oBAAoB,SAAA,CAAU,SAAS,GAAG,EAAA,CAAG,IAAA,CAAK,MAAA,CAAO,CAAA,EAAG,CAAC,CAAA;AAClE,EAAA,OAAO,EAAA;AACT;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,EAwBA,iBAAA,GAAmC,IACnC,IAAA,EASA;AACA,EAAA,MAAM;AAAA,IACJ,cAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,oBAAA;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,UAAA;AAAA,IACA,SAAA;AAAA,IACA,oBAAA;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,MAAM,KAAK,MAAM,SAAA,CAAU,OAAA,CACxB,yBAAA,GACA,QAAA,CAAS;AAAA,IACR,iBAAiB,QAAA,CAAS;AAAA,GAC3B,CAAA,CACA,iBAAA,CAAkB,iBAAiB,EACnC,WAAA,EAAY;AAEf,EAAA,IAAI,CAAC,oBAAoB,SAAA,CAAU,SAAS,GAAG,EAAA,CAAG,IAAA,CAAK,MAAA,CAAO,CAAA,EAAG,CAAC,CAAA;AAClE,EAAA,OAAO,EAAA;AACT;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,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\n/**\n * TEMPORARY: 0.1.9 → 0.1.10 program upgrade switch. See UPGRADE-0.1.10.md.\n *\n * 0.1.10 inserts required accounts into six instructions (positional wire\n * break, both directions). For the three the SDK executes or simulates\n * (end-flashloan, transfer, pulse-health), the builders in `instructions.ts`\n * AND their duplicates in `sync-instructions.ts` build 0.1.10-style and\n * inline-remove the inserted account while the target program still runs\n * 0.1.9 — decided by the announced upgrade time below.\n *\n * TODO(upgrade): delete this file (and the six inline checks) once the\n * upgrade is final.\n */\n\n/**\n * Unix seconds (per program id) at which that deployment runs program 0.1.10.\n * `0` = already upgraded; unlisted programs count as already upgraded.\n */\nexport const MARGINFI_V0_1_10_ACTIVATION: Record<string, number> = {\n // mainnet — upgrades Tuesday 2026-08-25 17:00 CEST (15:00 UTC)\n MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA: 1787670000,\n // staging — running 0.1.10 since 2026-08-03\n stag8sTKds2h4KzjUw3zKTsxbqvT4XKHdaR9X9E6Rct: 0,\n};\n\n/** Whether `programId` runs program 0.1.10 at `atUnixSeconds` (default: now). */\nexport function isMarginfiV0110Live(\n programId: PublicKey,\n atUnixSeconds: number = Math.floor(Date.now() / 1000)\n): boolean {\n return atUnixSeconds >= (MARGINFI_V0_1_10_ACTIVATION[programId.toBase58()] ?? 0);\n}\n","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 { isMarginfiV0110Live } from \"./dialect\";\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 /** 0.1.9-only: refresh the reserve in-instruction. Ignored by the 1.8 program. */\n refreshReserve?: boolean;\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, args.refreshReserve ?? null)\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 * 0.1.9-only: refresh the reserve via batch refresh (flags bit 1). Do NOT set while the\n * 1.8 program is deployed — its `Option<bool>` decoder rejects flag bytes above 1.\n */\n refreshReserve?: 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 // flags bit 0 = withdraw all, bit 1 = batch refresh. `isFinalWithdrawal ? 1 : null` is\n // byte-identical to the pre-0.1.9 `withdrawAll: Option<bool>` encoding, so it lands on\n // both the 1.8 and 1.9 programs.\n const flags = (args.isFinalWithdrawal ? 1 : 0) | (args.refreshReserve ? 2 : 0);\n\n return mfProgram.methods\n .kaminoWithdraw(args.amount, flags === 0 ? null : flags)\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 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\nasync function 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 const ix = await mfiProgram.methods\n .lendingAccountEndFlashloan()\n .accounts({\n marginfiAccount,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n // TEMPORARY (0.1.10 upgrade): 0.1.9 has no `group` account (index 1).\n if (!isMarginfiV0110Live(mfiProgram.programId)) ix.keys.splice(1, 1);\n return ix;\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 const ix = await mfProgram.methods\n .transferToNewAccount()\n .accounts({\n oldMarginfiAccount,\n newMarginfiAccount,\n newAuthority,\n globalFeeWallet,\n feePayer,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n // TEMPORARY (0.1.10 upgrade): 0.1.9 has no `fee_state` account (index 7,\n // between global_fee_wallet and system_program).\n if (!isMarginfiV0110Live(mfProgram.programId)) ix.keys.splice(7, 1);\n return ix;\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 /** The SVSP on-ramp account, derived from the stake pool (0.1.9+ program only) */\n poolOnramp: PublicKey;\n stakePool: PublicKey;\n /** The validator vote account backing the stake pool (0.1.9+ program only) */\n validatorVoteAccount: 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 poolOnramp,\n stakePool,\n validatorVoteAccount,\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 poolOnramp,\n stakePool,\n validatorVoteAccount,\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 const ix = await mfProgram.methods\n .lendingAccountPulseHealth()\n .accounts({\n marginfiAccount: accounts.marginfiAccount,\n })\n .remainingAccounts(remainingAccounts)\n .instruction();\n // TEMPORARY (0.1.10 upgrade): 0.1.9 has no `group` account (index 1).\n if (!isMarginfiV0110Live(mfProgram.programId)) ix.keys.splice(1, 1);\n return ix;\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 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 /** 0.1.9-only: refresh the reserve in-instruction. Ignored by the 1.8 program. */\n refreshReserve?: boolean;\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, args.refreshReserve ?? null)\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 * 0.1.9-only: refresh the reserve via batch refresh (flags bit 1). Do NOT set while the\n * 1.8 program is deployed — its `Option<bool>` decoder rejects flag bytes above 1.\n */\n refreshReserve?: 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 // flags bit 0 = withdraw all, bit 1 = batch refresh. `isFinalWithdrawal ? 1 : null` is\n // byte-identical to the pre-0.1.9 `withdrawAll: Option<bool>` encoding, so it lands on\n // both the 1.8 and 1.9 programs.\n const flags = (args.isFinalWithdrawal ? 1 : 0) | (args.refreshReserve ? 2 : 0);\n\n return mfProgram.methods\n .kaminoWithdraw(args.amount, flags === 0 ? null : flags)\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 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\nasync function 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 /** The SVSP on-ramp account, derived from the stake pool (0.1.9+ program only) */\n poolOnramp: PublicKey;\n stakePool: PublicKey;\n /** The validator vote account backing the stake pool (0.1.9+ program only) */\n validatorVoteAccount: 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 poolOnramp,\n stakePool,\n validatorVoteAccount,\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 poolOnramp,\n stakePool,\n validatorVoteAccount,\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 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/dist/instructions.d.cts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as _solana_web3_js from '@solana/web3.js';
|
|
2
2
|
import { PublicKey, AccountMeta } from '@solana/web3.js';
|
|
3
3
|
import BN from 'bn.js';
|
|
4
|
-
import { M as MarginfiProgram, B as BankConfigCompactRaw, a as BankConfigOptRaw } from './types-
|
|
4
|
+
import { M as MarginfiProgram, B as BankConfigCompactRaw, a as BankConfigOptRaw } from './types-DJqANTTA.cjs';
|
|
5
5
|
import '@coral-xyz/anchor';
|
|
6
6
|
import 'bignumber.js';
|
|
7
|
-
import './dto-rate-model.types-
|
|
7
|
+
import './dto-rate-model.types-DnQmHIO6.cjs';
|
|
8
8
|
|
|
9
9
|
declare function makeInitMarginfiAccountIx(mfProgram: MarginfiProgram, accounts: {
|
|
10
10
|
marginfiGroup: PublicKey;
|
package/dist/instructions.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as _solana_web3_js from '@solana/web3.js';
|
|
2
2
|
import { PublicKey, AccountMeta } from '@solana/web3.js';
|
|
3
3
|
import BN from 'bn.js';
|
|
4
|
-
import { M as MarginfiProgram, B as BankConfigCompactRaw, a as BankConfigOptRaw } from './types-
|
|
4
|
+
import { M as MarginfiProgram, B as BankConfigCompactRaw, a as BankConfigOptRaw } from './types-sisv3J7l.js';
|
|
5
5
|
import '@coral-xyz/anchor';
|
|
6
6
|
import 'bignumber.js';
|
|
7
|
-
import './dto-rate-model.types-
|
|
7
|
+
import './dto-rate-model.types-DnQmHIO6.js';
|
|
8
8
|
|
|
9
9
|
declare function makeInitMarginfiAccountIx(mfProgram: MarginfiProgram, accounts: {
|
|
10
10
|
marginfiGroup: PublicKey;
|
package/dist/instructions.js
CHANGED
|
@@ -2,17 +2,6 @@ import BN from 'bn.js';
|
|
|
2
2
|
import { PublicKey } from '@solana/web3.js';
|
|
3
3
|
|
|
4
4
|
// src/instructions.ts
|
|
5
|
-
|
|
6
|
-
// src/dialect.ts
|
|
7
|
-
var MARGINFI_V0_1_10_ACTIVATION = {
|
|
8
|
-
// mainnet — upgrades Tuesday 2026-08-25 17:00 CEST (15:00 UTC)
|
|
9
|
-
MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA: 178767e4,
|
|
10
|
-
// staging — running 0.1.10 since 2026-08-03
|
|
11
|
-
stag8sTKds2h4KzjUw3zKTsxbqvT4XKHdaR9X9E6Rct: 0
|
|
12
|
-
};
|
|
13
|
-
function isMarginfiV0110Live(programId, atUnixSeconds = Math.floor(Date.now() / 1e3)) {
|
|
14
|
-
return atUnixSeconds >= (MARGINFI_V0_1_10_ACTIVATION[programId.toBase58()] ?? 0);
|
|
15
|
-
}
|
|
16
5
|
new PublicKey(
|
|
17
6
|
"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"
|
|
18
7
|
);
|
|
@@ -241,11 +230,9 @@ function makeBeginFlashLoanIx(mfiProgram, accounts, args) {
|
|
|
241
230
|
}
|
|
242
231
|
async function makeEndFlashLoanIx(mfiProgram, accounts, remainingAccounts = []) {
|
|
243
232
|
const { marginfiAccount, ...optionalAccounts } = accounts;
|
|
244
|
-
|
|
233
|
+
return mfiProgram.methods.lendingAccountEndFlashloan().accounts({
|
|
245
234
|
marginfiAccount
|
|
246
235
|
}).accountsPartial(optionalAccounts).remainingAccounts(remainingAccounts).instruction();
|
|
247
|
-
if (!isMarginfiV0110Live(mfiProgram.programId)) ix.keys.splice(1, 1);
|
|
248
|
-
return ix;
|
|
249
236
|
}
|
|
250
237
|
async function makeAccountTransferToNewAccountIx(mfProgram, accounts) {
|
|
251
238
|
const {
|
|
@@ -256,15 +243,13 @@ async function makeAccountTransferToNewAccountIx(mfProgram, accounts) {
|
|
|
256
243
|
feePayer,
|
|
257
244
|
...optionalAccounts
|
|
258
245
|
} = accounts;
|
|
259
|
-
|
|
246
|
+
return mfProgram.methods.transferToNewAccount().accounts({
|
|
260
247
|
oldMarginfiAccount,
|
|
261
248
|
newMarginfiAccount,
|
|
262
249
|
newAuthority,
|
|
263
250
|
globalFeeWallet,
|
|
264
251
|
feePayer
|
|
265
252
|
}).accountsPartial(optionalAccounts).instruction();
|
|
266
|
-
if (!isMarginfiV0110Live(mfProgram.programId)) ix.keys.splice(7, 1);
|
|
267
|
-
return ix;
|
|
268
253
|
}
|
|
269
254
|
async function makeGroupInitIx(mfProgram, accounts) {
|
|
270
255
|
return mfProgram.methods.marginfiGroupInitialize().accounts({
|
|
@@ -323,11 +308,9 @@ async function makeCloseAccountIx(mfProgram, accounts) {
|
|
|
323
308
|
}).accountsPartial(optionalAccounts).instruction();
|
|
324
309
|
}
|
|
325
310
|
async function makePulseHealthIx(mfProgram, accounts, remainingAccounts = []) {
|
|
326
|
-
|
|
311
|
+
return mfProgram.methods.lendingAccountPulseHealth().accounts({
|
|
327
312
|
marginfiAccount: accounts.marginfiAccount
|
|
328
313
|
}).remainingAccounts(remainingAccounts).instruction();
|
|
329
|
-
if (!isMarginfiV0110Live(mfProgram.programId)) ix.keys.splice(1, 1);
|
|
330
|
-
return ix;
|
|
331
314
|
}
|
|
332
315
|
var instructions = {
|
|
333
316
|
makeDepositIx,
|
package/dist/instructions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dialect.ts","../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\n/**\n * TEMPORARY: 0.1.9 → 0.1.10 program upgrade switch. See UPGRADE-0.1.10.md.\n *\n * 0.1.10 inserts required accounts into six instructions (positional wire\n * break, both directions). For the three the SDK executes or simulates\n * (end-flashloan, transfer, pulse-health), the builders in `instructions.ts`\n * AND their duplicates in `sync-instructions.ts` build 0.1.10-style and\n * inline-remove the inserted account while the target program still runs\n * 0.1.9 — decided by the announced upgrade time below.\n *\n * TODO(upgrade): delete this file (and the six inline checks) once the\n * upgrade is final.\n */\n\n/**\n * Unix seconds (per program id) at which that deployment runs program 0.1.10.\n * `0` = already upgraded; unlisted programs count as already upgraded.\n */\nexport const MARGINFI_V0_1_10_ACTIVATION: Record<string, number> = {\n // mainnet — upgrades Tuesday 2026-08-25 17:00 CEST (15:00 UTC)\n MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA: 1787670000,\n // staging — running 0.1.10 since 2026-08-03\n stag8sTKds2h4KzjUw3zKTsxbqvT4XKHdaR9X9E6Rct: 0,\n};\n\n/** Whether `programId` runs program 0.1.10 at `atUnixSeconds` (default: now). */\nexport function isMarginfiV0110Live(\n programId: PublicKey,\n atUnixSeconds: number = Math.floor(Date.now() / 1000)\n): boolean {\n return atUnixSeconds >= (MARGINFI_V0_1_10_ACTIVATION[programId.toBase58()] ?? 0);\n}\n","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 { isMarginfiV0110Live } from \"./dialect\";\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 /** 0.1.9-only: refresh the reserve in-instruction. Ignored by the 1.8 program. */\n refreshReserve?: boolean;\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, args.refreshReserve ?? null)\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 * 0.1.9-only: refresh the reserve via batch refresh (flags bit 1). Do NOT set while the\n * 1.8 program is deployed — its `Option<bool>` decoder rejects flag bytes above 1.\n */\n refreshReserve?: 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 // flags bit 0 = withdraw all, bit 1 = batch refresh. `isFinalWithdrawal ? 1 : null` is\n // byte-identical to the pre-0.1.9 `withdrawAll: Option<bool>` encoding, so it lands on\n // both the 1.8 and 1.9 programs.\n const flags = (args.isFinalWithdrawal ? 1 : 0) | (args.refreshReserve ? 2 : 0);\n\n return mfProgram.methods\n .kaminoWithdraw(args.amount, flags === 0 ? null : flags)\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 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\nasync function 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 const ix = await mfiProgram.methods\n .lendingAccountEndFlashloan()\n .accounts({\n marginfiAccount,\n })\n .accountsPartial(optionalAccounts)\n .remainingAccounts(remainingAccounts)\n .instruction();\n // TEMPORARY (0.1.10 upgrade): 0.1.9 has no `group` account (index 1).\n if (!isMarginfiV0110Live(mfiProgram.programId)) ix.keys.splice(1, 1);\n return ix;\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 const ix = await mfProgram.methods\n .transferToNewAccount()\n .accounts({\n oldMarginfiAccount,\n newMarginfiAccount,\n newAuthority,\n globalFeeWallet,\n feePayer,\n })\n .accountsPartial(optionalAccounts)\n .instruction();\n // TEMPORARY (0.1.10 upgrade): 0.1.9 has no `fee_state` account (index 7,\n // between global_fee_wallet and system_program).\n if (!isMarginfiV0110Live(mfProgram.programId)) ix.keys.splice(7, 1);\n return ix;\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 /** The SVSP on-ramp account, derived from the stake pool (0.1.9+ program only) */\n poolOnramp: PublicKey;\n stakePool: PublicKey;\n /** The validator vote account backing the stake pool (0.1.9+ program only) */\n validatorVoteAccount: 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 poolOnramp,\n stakePool,\n validatorVoteAccount,\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 poolOnramp,\n stakePool,\n validatorVoteAccount,\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 const ix = await mfProgram.methods\n .lendingAccountPulseHealth()\n .accounts({\n marginfiAccount: accounts.marginfiAccount,\n })\n .remainingAccounts(remainingAccounts)\n .instruction();\n // TEMPORARY (0.1.10 upgrade): 0.1.9 has no `group` account (index 1).\n if (!isMarginfiV0110Live(mfProgram.programId)) ix.keys.splice(1, 1);\n return ix;\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 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 /** 0.1.9-only: refresh the reserve in-instruction. Ignored by the 1.8 program. */\n refreshReserve?: boolean;\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, args.refreshReserve ?? null)\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 * 0.1.9-only: refresh the reserve via batch refresh (flags bit 1). Do NOT set while the\n * 1.8 program is deployed — its `Option<bool>` decoder rejects flag bytes above 1.\n */\n refreshReserve?: 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 // flags bit 0 = withdraw all, bit 1 = batch refresh. `isFinalWithdrawal ? 1 : null` is\n // byte-identical to the pre-0.1.9 `withdrawAll: Option<bool>` encoding, so it lands on\n // both the 1.8 and 1.9 programs.\n const flags = (args.isFinalWithdrawal ? 1 : 0) | (args.refreshReserve ? 2 : 0);\n\n return mfProgram.methods\n .kaminoWithdraw(args.amount, flags === 0 ? null : flags)\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 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\nasync function 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 /** The SVSP on-ramp account, derived from the stake pool (0.1.9+ program only) */\n poolOnramp: PublicKey;\n stakePool: PublicKey;\n /** The validator vote account backing the stake pool (0.1.9+ program only) */\n validatorVoteAccount: 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 poolOnramp,\n stakePool,\n validatorVoteAccount,\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 poolOnramp,\n stakePool,\n validatorVoteAccount,\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 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"]}
|
|
@@ -2,7 +2,7 @@ import { PublicKey, Transaction, VersionedTransaction } from '@solana/web3.js';
|
|
|
2
2
|
import { Idl, Program as Program$1, AnchorProvider } from '@coral-xyz/anchor';
|
|
3
3
|
import BN from 'bn.js';
|
|
4
4
|
import BigNumber$1 from 'bignumber.js';
|
|
5
|
-
import { K as KaminoReserve, a as KaminoObligation, b as KaminoFarmState, D as DriftSpotMarket, c as DriftUser, d as DriftRewards, e as DriftUserStats, J as JupLendingState, f as JupTokenReserve, g as JupLendingRewardsRateModel, h as JupRateModel, i as KaminoReserveJSON, j as KaminoObligationJSON, k as KaminoFarmStateJSON, l as DriftSpotMarketJSON, m as DriftUserJSON, n as DriftRewardsJSON, o as DriftUserStatsJSON, p as JupLendingStateJSON, q as JupTokenReserveJSON, r as JupLendingRewardsRateModelJSON, s as JupRateModelJSON } from './dto-rate-model.types-
|
|
5
|
+
import { K as KaminoReserve, a as KaminoObligation, b as KaminoFarmState, D as DriftSpotMarket, c as DriftUser, d as DriftRewards, e as DriftUserStats, J as JupLendingState, f as JupTokenReserve, g as JupLendingRewardsRateModel, h as JupRateModel, i as KaminoReserveJSON, j as KaminoObligationJSON, k as KaminoFarmStateJSON, l as DriftSpotMarketJSON, m as DriftUserJSON, n as DriftRewardsJSON, o as DriftUserStatsJSON, p as JupLendingStateJSON, q as JupTokenReserveJSON, r as JupLendingRewardsRateModelJSON, s as JupRateModelJSON } from './dto-rate-model.types-DnQmHIO6.cjs';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Program IDL in camelCase format in order to be used in JS/TS.
|
|
@@ -2,7 +2,7 @@ import { PublicKey, Transaction, VersionedTransaction } from '@solana/web3.js';
|
|
|
2
2
|
import { Idl, Program as Program$1, AnchorProvider } from '@coral-xyz/anchor';
|
|
3
3
|
import BN from 'bn.js';
|
|
4
4
|
import BigNumber$1 from 'bignumber.js';
|
|
5
|
-
import { K as KaminoReserve, a as KaminoObligation, b as KaminoFarmState, D as DriftSpotMarket, c as DriftUser, d as DriftRewards, e as DriftUserStats, J as JupLendingState, f as JupTokenReserve, g as JupLendingRewardsRateModel, h as JupRateModel, i as KaminoReserveJSON, j as KaminoObligationJSON, k as KaminoFarmStateJSON, l as DriftSpotMarketJSON, m as DriftUserJSON, n as DriftRewardsJSON, o as DriftUserStatsJSON, p as JupLendingStateJSON, q as JupTokenReserveJSON, r as JupLendingRewardsRateModelJSON, s as JupRateModelJSON } from './dto-rate-model.types-
|
|
5
|
+
import { K as KaminoReserve, a as KaminoObligation, b as KaminoFarmState, D as DriftSpotMarket, c as DriftUser, d as DriftRewards, e as DriftUserStats, J as JupLendingState, f as JupTokenReserve, g as JupLendingRewardsRateModel, h as JupRateModel, i as KaminoReserveJSON, j as KaminoObligationJSON, k as KaminoFarmStateJSON, l as DriftSpotMarketJSON, m as DriftUserJSON, n as DriftRewardsJSON, o as DriftUserStatsJSON, p as JupLendingStateJSON, q as JupTokenReserveJSON, r as JupLendingRewardsRateModelJSON, s as JupRateModelJSON } from './dto-rate-model.types-DnQmHIO6.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Program IDL in camelCase format in order to be used in JS/TS.
|