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

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/index.cjs CHANGED
@@ -602,8 +602,8 @@ function makeBundleTipIx(feePayer, bundleTip = 1e5) {
602
602
  return bundleTipInstruction;
603
603
  }
604
604
 
605
- // src/idl/marginfi_0.1.7.json
606
- var marginfi_0_1_7_default = {
605
+ // src/idl/marginfi_0.1.8.json
606
+ var marginfi_0_1_8_default = {
607
607
  address: "",
608
608
  metadata: {
609
609
  name: "marginfi",
@@ -653,7 +653,7 @@ var marginfi_0_1_7_default = {
653
653
  {
654
654
  name: "configure_bank_rate_limits",
655
655
  docs: [
656
- "(admin only) Configure bank-level rate limits for withdraw/borrow.",
656
+ "(admin or delegate_limit_admin) Configure bank-level rate limits for withdraw/borrow.",
657
657
  "Rate limits track net outflow in native tokens. Deposits offset withdraws.",
658
658
  "Set to 0 to disable. Hourly and daily windows are independent."
659
659
  ],
@@ -665,8 +665,7 @@ var marginfi_0_1_7_default = {
665
665
  },
666
666
  {
667
667
  name: "admin",
668
- signer: true,
669
- relations: ["group"]
668
+ signer: true
670
669
  },
671
670
  {
672
671
  name: "bank",
@@ -690,7 +689,9 @@ var marginfi_0_1_7_default = {
690
689
  },
691
690
  {
692
691
  name: "configure_deleverage_withdrawal_limit",
693
- docs: ["(group admin only) Set the daily withdrawal limit for deleverages per group."],
692
+ docs: [
693
+ "(admin or delegate_limit_admin) Set the daily withdrawal limit for deleverages per group."
694
+ ],
694
695
  discriminator: [28, 132, 205, 158, 67, 77, 177, 63],
695
696
  accounts: [
696
697
  {
@@ -699,8 +700,7 @@ var marginfi_0_1_7_default = {
699
700
  },
700
701
  {
701
702
  name: "admin",
702
- signer: true,
703
- relations: ["marginfi_group"]
703
+ signer: true
704
704
  }
705
705
  ],
706
706
  args: [
@@ -713,7 +713,7 @@ var marginfi_0_1_7_default = {
713
713
  {
714
714
  name: "configure_group_rate_limits",
715
715
  docs: [
716
- "(admin only) Configure group-level rate limits for withdraw/borrow.",
716
+ "(admin or delegate_limit_admin) Configure group-level rate limits for withdraw/borrow.",
717
717
  "Rate limits track aggregate net outflow in USD.",
718
718
  "Example: $10M = 10_000_000. Set to 0 to disable."
719
719
  ],
@@ -725,8 +725,7 @@ var marginfi_0_1_7_default = {
725
725
  },
726
726
  {
727
727
  name: "admin",
728
- signer: true,
729
- relations: ["marginfi_group"]
728
+ signer: true
730
729
  }
731
730
  ],
732
731
  args: [
@@ -754,7 +753,6 @@ var marginfi_0_1_7_default = {
754
753
  accounts: [
755
754
  {
756
755
  name: "group",
757
- writable: true,
758
756
  relations: ["marginfi_account", "bank"]
759
757
  },
760
758
  {
@@ -1342,7 +1340,6 @@ var marginfi_0_1_7_default = {
1342
1340
  accounts: [
1343
1341
  {
1344
1342
  name: "group",
1345
- writable: true,
1346
1343
  relations: ["marginfi_account", "bank"]
1347
1344
  },
1348
1345
  {
@@ -1876,6 +1873,7 @@ var marginfi_0_1_7_default = {
1876
1873
  accounts: [
1877
1874
  {
1878
1875
  name: "group",
1876
+ writable: true,
1879
1877
  relations: ["marginfi_account", "bank"]
1880
1878
  },
1881
1879
  {
@@ -1884,8 +1882,7 @@ var marginfi_0_1_7_default = {
1884
1882
  },
1885
1883
  {
1886
1884
  name: "authority",
1887
- signer: true,
1888
- relations: ["marginfi_account"]
1885
+ signer: true
1889
1886
  },
1890
1887
  {
1891
1888
  name: "bank",
@@ -2175,7 +2172,6 @@ var marginfi_0_1_7_default = {
2175
2172
  accounts: [
2176
2173
  {
2177
2174
  name: "group",
2178
- writable: true,
2179
2175
  relations: ["marginfi_account", "bank"]
2180
2176
  },
2181
2177
  {
@@ -2350,7 +2346,6 @@ var marginfi_0_1_7_default = {
2350
2346
  accounts: [
2351
2347
  {
2352
2348
  name: "group",
2353
- writable: true,
2354
2349
  relations: ["marginfi_account", "bank"]
2355
2350
  },
2356
2351
  {
@@ -2879,7 +2874,6 @@ var marginfi_0_1_7_default = {
2879
2874
  accounts: [
2880
2875
  {
2881
2876
  name: "group",
2882
- writable: true,
2883
2877
  relations: ["marginfi_account", "bank"]
2884
2878
  },
2885
2879
  {
@@ -2976,12 +2970,13 @@ var marginfi_0_1_7_default = {
2976
2970
  relations: ["bank"]
2977
2971
  },
2978
2972
  {
2979
- name: "reserve_liquidity_mint",
2973
+ name: "mint",
2980
2974
  docs: [
2981
2975
  "The liquidity token mint (e.g., USDC)",
2982
2976
  "Needs serde to get the mint decimals for transfer checked"
2983
2977
  ],
2984
- writable: true
2978
+ writable: true,
2979
+ relations: ["bank"]
2985
2980
  },
2986
2981
  {
2987
2982
  name: "reserve_liquidity_supply",
@@ -3056,7 +3051,6 @@ var marginfi_0_1_7_default = {
3056
3051
  accounts: [
3057
3052
  {
3058
3053
  name: "group",
3059
- writable: true,
3060
3054
  relations: ["marginfi_account", "bank"]
3061
3055
  },
3062
3056
  {
@@ -3128,11 +3122,26 @@ var marginfi_0_1_7_default = {
3128
3122
  ]
3129
3123
  },
3130
3124
  {
3131
- name: "lending_account_close_balance",
3125
+ name: "lending_account_clear_emissions",
3132
3126
  docs: [
3133
- "(account authority) Close a balance position with dust-level amounts. Claims outstanding",
3134
- "emissions before closing."
3127
+ "(permissionless) Zero out `emissions_outstanding` on a balance after emissions are disabled",
3128
+ "on the bank."
3135
3129
  ],
3130
+ discriminator: [239, 4, 221, 98, 45, 167, 201, 244],
3131
+ accounts: [
3132
+ {
3133
+ name: "marginfi_account",
3134
+ writable: true
3135
+ },
3136
+ {
3137
+ name: "bank"
3138
+ }
3139
+ ],
3140
+ args: []
3141
+ },
3142
+ {
3143
+ name: "lending_account_close_balance",
3144
+ docs: ["(account authority) Close a balance position with dust-level amounts."],
3136
3145
  discriminator: [245, 54, 41, 4, 243, 202, 31, 17],
3137
3146
  accounts: [
3138
3147
  {
@@ -3164,7 +3173,219 @@ var marginfi_0_1_7_default = {
3164
3173
  accounts: [
3165
3174
  {
3166
3175
  name: "group",
3176
+ relations: ["marginfi_account", "bank"]
3177
+ },
3178
+ {
3179
+ name: "marginfi_account",
3180
+ writable: true
3181
+ },
3182
+ {
3183
+ name: "authority",
3184
+ signer: true
3185
+ },
3186
+ {
3187
+ name: "bank",
3188
+ writable: true
3189
+ },
3190
+ {
3191
+ name: "signer_token_account",
3192
+ writable: true
3193
+ },
3194
+ {
3195
+ name: "liquidity_vault",
3167
3196
  writable: true,
3197
+ relations: ["bank"]
3198
+ },
3199
+ {
3200
+ name: "token_program"
3201
+ }
3202
+ ],
3203
+ args: [
3204
+ {
3205
+ name: "amount",
3206
+ type: "u64"
3207
+ },
3208
+ {
3209
+ name: "deposit_up_to_limit",
3210
+ type: {
3211
+ option: "bool"
3212
+ }
3213
+ }
3214
+ ]
3215
+ },
3216
+ {
3217
+ name: "lending_account_end_flashloan",
3218
+ docs: ["(account authority) End a flash loan and run the health check."],
3219
+ discriminator: [105, 124, 201, 106, 153, 2, 8, 156],
3220
+ accounts: [
3221
+ {
3222
+ name: "marginfi_account",
3223
+ writable: true
3224
+ },
3225
+ {
3226
+ name: "authority",
3227
+ signer: true,
3228
+ relations: ["marginfi_account"]
3229
+ }
3230
+ ],
3231
+ args: []
3232
+ },
3233
+ {
3234
+ name: "lending_account_liquidate",
3235
+ docs: [
3236
+ "(permissionless) Liquidate a lending account balance of an unhealthy marginfi account.",
3237
+ "The liquidator takes on the liability and receives discounted collateral (2.5% liquidator",
3238
+ "fee + 2.5% insurance fee).",
3239
+ "* `asset_amount` - amount of collateral to liquidate",
3240
+ "* `liquidatee_accounts` - number of remaining accounts for the liquidatee",
3241
+ "* `liquidator_accounts` - number of remaining accounts for the liquidator"
3242
+ ],
3243
+ discriminator: [214, 169, 151, 213, 251, 167, 86, 219],
3244
+ accounts: [
3245
+ {
3246
+ name: "group",
3247
+ relations: [
3248
+ "asset_bank",
3249
+ "liab_bank",
3250
+ "liquidator_marginfi_account",
3251
+ "liquidatee_marginfi_account"
3252
+ ]
3253
+ },
3254
+ {
3255
+ name: "asset_bank",
3256
+ writable: true
3257
+ },
3258
+ {
3259
+ name: "liab_bank",
3260
+ writable: true
3261
+ },
3262
+ {
3263
+ name: "liquidator_marginfi_account",
3264
+ writable: true
3265
+ },
3266
+ {
3267
+ name: "authority",
3268
+ signer: true
3269
+ },
3270
+ {
3271
+ name: "liquidatee_marginfi_account",
3272
+ writable: true
3273
+ },
3274
+ {
3275
+ name: "bank_liquidity_vault_authority",
3276
+ pda: {
3277
+ seeds: [
3278
+ {
3279
+ kind: "const",
3280
+ value: [
3281
+ 108,
3282
+ 105,
3283
+ 113,
3284
+ 117,
3285
+ 105,
3286
+ 100,
3287
+ 105,
3288
+ 116,
3289
+ 121,
3290
+ 95,
3291
+ 118,
3292
+ 97,
3293
+ 117,
3294
+ 108,
3295
+ 116,
3296
+ 95,
3297
+ 97,
3298
+ 117,
3299
+ 116,
3300
+ 104
3301
+ ]
3302
+ },
3303
+ {
3304
+ kind: "account",
3305
+ path: "liab_bank"
3306
+ }
3307
+ ]
3308
+ }
3309
+ },
3310
+ {
3311
+ name: "bank_liquidity_vault",
3312
+ writable: true,
3313
+ pda: {
3314
+ seeds: [
3315
+ {
3316
+ kind: "const",
3317
+ value: [108, 105, 113, 117, 105, 100, 105, 116, 121, 95, 118, 97, 117, 108, 116]
3318
+ },
3319
+ {
3320
+ kind: "account",
3321
+ path: "liab_bank"
3322
+ }
3323
+ ]
3324
+ }
3325
+ },
3326
+ {
3327
+ name: "bank_insurance_vault",
3328
+ writable: true,
3329
+ pda: {
3330
+ seeds: [
3331
+ {
3332
+ kind: "const",
3333
+ value: [105, 110, 115, 117, 114, 97, 110, 99, 101, 95, 118, 97, 117, 108, 116]
3334
+ },
3335
+ {
3336
+ kind: "account",
3337
+ path: "liab_bank"
3338
+ }
3339
+ ]
3340
+ }
3341
+ },
3342
+ {
3343
+ name: "token_program"
3344
+ }
3345
+ ],
3346
+ args: [
3347
+ {
3348
+ name: "asset_amount",
3349
+ type: "u64"
3350
+ },
3351
+ {
3352
+ name: "liquidatee_accounts",
3353
+ type: "u8"
3354
+ },
3355
+ {
3356
+ name: "liquidator_accounts",
3357
+ type: "u8"
3358
+ }
3359
+ ]
3360
+ },
3361
+ {
3362
+ name: "lending_account_pulse_health",
3363
+ docs: [
3364
+ "(Permissionless) Refresh the internal risk engine health cache. Useful for liquidators and",
3365
+ "other consumers that want to see the internal risk state of a user account. This cache is",
3366
+ "read-only and serves no purpose except being populated by this ix.",
3367
+ "* remaining accounts expected in the same order as borrow, etc. I.e., for each balance the",
3368
+ "user has, pass bank and oracle: <bank1, oracle1, bank2, oracle2>"
3369
+ ],
3370
+ discriminator: [186, 52, 117, 97, 34, 74, 39, 253],
3371
+ accounts: [
3372
+ {
3373
+ name: "marginfi_account",
3374
+ writable: true
3375
+ }
3376
+ ],
3377
+ args: []
3378
+ },
3379
+ {
3380
+ name: "lending_account_repay",
3381
+ docs: [
3382
+ "(account authority, or any signer during receivership) Repay borrowed assets. Accrues",
3383
+ "interest, records repayment, and transfers tokens to the bank's liquidity vault."
3384
+ ],
3385
+ discriminator: [79, 209, 172, 177, 222, 51, 173, 151],
3386
+ accounts: [
3387
+ {
3388
+ name: "group",
3168
3389
  relations: ["marginfi_account", "bank"]
3169
3390
  },
3170
3391
  {
@@ -3173,226 +3394,12 @@ var marginfi_0_1_7_default = {
3173
3394
  },
3174
3395
  {
3175
3396
  name: "authority",
3176
- signer: true
3177
- },
3178
- {
3179
- name: "bank",
3180
- writable: true
3181
- },
3182
- {
3183
- name: "signer_token_account",
3184
- writable: true
3185
- },
3186
- {
3187
- name: "liquidity_vault",
3188
- writable: true,
3189
- relations: ["bank"]
3190
- },
3191
- {
3192
- name: "token_program"
3193
- }
3194
- ],
3195
- args: [
3196
- {
3197
- name: "amount",
3198
- type: "u64"
3199
- },
3200
- {
3201
- name: "deposit_up_to_limit",
3202
- type: {
3203
- option: "bool"
3204
- }
3205
- }
3206
- ]
3207
- },
3208
- {
3209
- name: "lending_account_end_flashloan",
3210
- docs: ["(account authority) End a flash loan and run the health check."],
3211
- discriminator: [105, 124, 201, 106, 153, 2, 8, 156],
3212
- accounts: [
3213
- {
3214
- name: "marginfi_account",
3215
- writable: true
3216
- },
3217
- {
3218
- name: "authority",
3219
- signer: true,
3220
- relations: ["marginfi_account"]
3221
- }
3222
- ],
3223
- args: []
3224
- },
3225
- {
3226
- name: "lending_account_liquidate",
3227
- docs: [
3228
- "(permissionless) Liquidate a lending account balance of an unhealthy marginfi account.",
3229
- "The liquidator takes on the liability and receives discounted collateral (2.5% liquidator",
3230
- "fee + 2.5% insurance fee).",
3231
- "* `asset_amount` - amount of collateral to liquidate",
3232
- "* `liquidatee_accounts` - number of remaining accounts for the liquidatee",
3233
- "* `liquidator_accounts` - number of remaining accounts for the liquidator"
3234
- ],
3235
- discriminator: [214, 169, 151, 213, 251, 167, 86, 219],
3236
- accounts: [
3237
- {
3238
- name: "group",
3239
- relations: [
3240
- "asset_bank",
3241
- "liab_bank",
3242
- "liquidator_marginfi_account",
3243
- "liquidatee_marginfi_account"
3244
- ]
3245
- },
3246
- {
3247
- name: "asset_bank",
3248
- writable: true
3249
- },
3250
- {
3251
- name: "liab_bank",
3252
- writable: true
3253
- },
3254
- {
3255
- name: "liquidator_marginfi_account",
3256
- writable: true
3257
- },
3258
- {
3259
- name: "authority",
3260
- signer: true
3261
- },
3262
- {
3263
- name: "liquidatee_marginfi_account",
3264
- writable: true
3265
- },
3266
- {
3267
- name: "bank_liquidity_vault_authority",
3268
- pda: {
3269
- seeds: [
3270
- {
3271
- kind: "const",
3272
- value: [
3273
- 108,
3274
- 105,
3275
- 113,
3276
- 117,
3277
- 105,
3278
- 100,
3279
- 105,
3280
- 116,
3281
- 121,
3282
- 95,
3283
- 118,
3284
- 97,
3285
- 117,
3286
- 108,
3287
- 116,
3288
- 95,
3289
- 97,
3290
- 117,
3291
- 116,
3292
- 104
3293
- ]
3294
- },
3295
- {
3296
- kind: "account",
3297
- path: "liab_bank"
3298
- }
3299
- ]
3300
- }
3301
- },
3302
- {
3303
- name: "bank_liquidity_vault",
3304
- writable: true,
3305
- pda: {
3306
- seeds: [
3307
- {
3308
- kind: "const",
3309
- value: [108, 105, 113, 117, 105, 100, 105, 116, 121, 95, 118, 97, 117, 108, 116]
3310
- },
3311
- {
3312
- kind: "account",
3313
- path: "liab_bank"
3314
- }
3315
- ]
3316
- }
3317
- },
3318
- {
3319
- name: "bank_insurance_vault",
3320
- writable: true,
3321
- pda: {
3322
- seeds: [
3323
- {
3324
- kind: "const",
3325
- value: [105, 110, 115, 117, 114, 97, 110, 99, 101, 95, 118, 97, 117, 108, 116]
3326
- },
3327
- {
3328
- kind: "account",
3329
- path: "liab_bank"
3330
- }
3331
- ]
3332
- }
3333
- },
3334
- {
3335
- name: "token_program"
3336
- }
3337
- ],
3338
- args: [
3339
- {
3340
- name: "asset_amount",
3341
- type: "u64"
3342
- },
3343
- {
3344
- name: "liquidatee_accounts",
3345
- type: "u8"
3346
- },
3347
- {
3348
- name: "liquidator_accounts",
3349
- type: "u8"
3350
- }
3351
- ]
3352
- },
3353
- {
3354
- name: "lending_account_pulse_health",
3355
- docs: [
3356
- "(Permissionless) Refresh the internal risk engine health cache. Useful for liquidators and",
3357
- "other consumers that want to see the internal risk state of a user account. This cache is",
3358
- "read-only and serves no purpose except being populated by this ix.",
3359
- "* remaining accounts expected in the same order as borrow, etc. I.e., for each balance the",
3360
- "user has, pass bank and oracle: <bank1, oracle1, bank2, oracle2>"
3361
- ],
3362
- discriminator: [186, 52, 117, 97, 34, 74, 39, 253],
3363
- accounts: [
3364
- {
3365
- name: "marginfi_account",
3366
- writable: true
3367
- }
3368
- ],
3369
- args: []
3370
- },
3371
- {
3372
- name: "lending_account_repay",
3373
- docs: [
3374
- "(account authority, or any signer during receivership) Repay borrowed assets. Accrues",
3375
- "interest, records repayment, and transfers tokens to the bank's liquidity vault."
3376
- ],
3377
- discriminator: [79, 209, 172, 177, 222, 51, 173, 151],
3378
- accounts: [
3379
- {
3380
- name: "group",
3381
- writable: true,
3382
- relations: ["marginfi_account", "bank"]
3383
- },
3384
- {
3385
- name: "marginfi_account",
3386
- writable: true
3387
- },
3388
- {
3389
- name: "authority",
3390
- docs: [
3391
- "Must be marginfi_account's authority, unless in liquidation/deleverage receivership or order execution",
3392
- "",
3393
- "Note: during receivership and order execution, there are no signer checks whatsoever: any key can repay as",
3394
- "long as the invariants checked at the end of execution are met."
3395
- ],
3397
+ docs: [
3398
+ "Must be marginfi_account's authority, unless in liquidation/deleverage receivership or order execution",
3399
+ "",
3400
+ "Note: during receivership and order execution, there are no signer checks whatsoever: any key can repay as",
3401
+ "long as the invariants checked at the end of execution are met."
3402
+ ],
3396
3403
  signer: true
3397
3404
  },
3398
3405
  {
@@ -3425,24 +3432,6 @@ var marginfi_0_1_7_default = {
3425
3432
  }
3426
3433
  ]
3427
3434
  },
3428
- {
3429
- name: "lending_account_settle_emissions",
3430
- docs: [
3431
- "(permissionless) Settle unclaimed emissions into a user's balance without withdrawing."
3432
- ],
3433
- discriminator: [161, 58, 136, 174, 242, 223, 156, 176],
3434
- accounts: [
3435
- {
3436
- name: "marginfi_account",
3437
- writable: true
3438
- },
3439
- {
3440
- name: "bank",
3441
- writable: true
3442
- }
3443
- ],
3444
- args: []
3445
- },
3446
3435
  {
3447
3436
  name: "lending_account_start_flashloan",
3448
3437
  docs: [
@@ -3483,7 +3472,6 @@ var marginfi_0_1_7_default = {
3483
3472
  accounts: [
3484
3473
  {
3485
3474
  name: "group",
3486
- writable: true,
3487
3475
  relations: ["marginfi_account", "bank"]
3488
3476
  },
3489
3477
  {
@@ -3566,253 +3554,6 @@ var marginfi_0_1_7_default = {
3566
3554
  }
3567
3555
  ]
3568
3556
  },
3569
- {
3570
- name: "lending_account_withdraw_emissions",
3571
- docs: [
3572
- "(account authority) Settle and withdraw emissions rewards to a destination token account."
3573
- ],
3574
- discriminator: [234, 22, 84, 214, 118, 176, 140, 170],
3575
- accounts: [
3576
- {
3577
- name: "group",
3578
- relations: ["marginfi_account", "bank"]
3579
- },
3580
- {
3581
- name: "marginfi_account",
3582
- writable: true
3583
- },
3584
- {
3585
- name: "authority",
3586
- signer: true
3587
- },
3588
- {
3589
- name: "bank",
3590
- writable: true
3591
- },
3592
- {
3593
- name: "emissions_mint",
3594
- relations: ["bank"]
3595
- },
3596
- {
3597
- name: "emissions_auth",
3598
- pda: {
3599
- seeds: [
3600
- {
3601
- kind: "const",
3602
- value: [
3603
- 101,
3604
- 109,
3605
- 105,
3606
- 115,
3607
- 115,
3608
- 105,
3609
- 111,
3610
- 110,
3611
- 115,
3612
- 95,
3613
- 97,
3614
- 117,
3615
- 116,
3616
- 104,
3617
- 95,
3618
- 115,
3619
- 101,
3620
- 101,
3621
- 100
3622
- ]
3623
- },
3624
- {
3625
- kind: "account",
3626
- path: "bank"
3627
- },
3628
- {
3629
- kind: "account",
3630
- path: "emissions_mint"
3631
- }
3632
- ]
3633
- }
3634
- },
3635
- {
3636
- name: "emissions_vault",
3637
- writable: true,
3638
- pda: {
3639
- seeds: [
3640
- {
3641
- kind: "const",
3642
- value: [
3643
- 101,
3644
- 109,
3645
- 105,
3646
- 115,
3647
- 115,
3648
- 105,
3649
- 111,
3650
- 110,
3651
- 115,
3652
- 95,
3653
- 116,
3654
- 111,
3655
- 107,
3656
- 101,
3657
- 110,
3658
- 95,
3659
- 97,
3660
- 99,
3661
- 99,
3662
- 111,
3663
- 117,
3664
- 110,
3665
- 116,
3666
- 95,
3667
- 115,
3668
- 101,
3669
- 101,
3670
- 100
3671
- ]
3672
- },
3673
- {
3674
- kind: "account",
3675
- path: "bank"
3676
- },
3677
- {
3678
- kind: "account",
3679
- path: "emissions_mint"
3680
- }
3681
- ]
3682
- }
3683
- },
3684
- {
3685
- name: "destination_account",
3686
- writable: true
3687
- },
3688
- {
3689
- name: "token_program"
3690
- }
3691
- ],
3692
- args: []
3693
- },
3694
- {
3695
- name: "lending_account_withdraw_emissions_permissionless",
3696
- docs: [
3697
- "(permissionless) Withdraw emissions to the user's pre-configured emissions destination ATA."
3698
- ],
3699
- discriminator: [4, 174, 124, 203, 44, 49, 145, 150],
3700
- accounts: [
3701
- {
3702
- name: "group",
3703
- relations: ["marginfi_account", "bank"]
3704
- },
3705
- {
3706
- name: "marginfi_account",
3707
- writable: true
3708
- },
3709
- {
3710
- name: "bank",
3711
- writable: true
3712
- },
3713
- {
3714
- name: "emissions_mint",
3715
- relations: ["bank"]
3716
- },
3717
- {
3718
- name: "emissions_auth",
3719
- pda: {
3720
- seeds: [
3721
- {
3722
- kind: "const",
3723
- value: [
3724
- 101,
3725
- 109,
3726
- 105,
3727
- 115,
3728
- 115,
3729
- 105,
3730
- 111,
3731
- 110,
3732
- 115,
3733
- 95,
3734
- 97,
3735
- 117,
3736
- 116,
3737
- 104,
3738
- 95,
3739
- 115,
3740
- 101,
3741
- 101,
3742
- 100
3743
- ]
3744
- },
3745
- {
3746
- kind: "account",
3747
- path: "bank"
3748
- },
3749
- {
3750
- kind: "account",
3751
- path: "emissions_mint"
3752
- }
3753
- ]
3754
- }
3755
- },
3756
- {
3757
- name: "emissions_vault",
3758
- writable: true,
3759
- pda: {
3760
- seeds: [
3761
- {
3762
- kind: "const",
3763
- value: [
3764
- 101,
3765
- 109,
3766
- 105,
3767
- 115,
3768
- 115,
3769
- 105,
3770
- 111,
3771
- 110,
3772
- 115,
3773
- 95,
3774
- 116,
3775
- 111,
3776
- 107,
3777
- 101,
3778
- 110,
3779
- 95,
3780
- 97,
3781
- 99,
3782
- 99,
3783
- 111,
3784
- 117,
3785
- 110,
3786
- 116,
3787
- 95,
3788
- 115,
3789
- 101,
3790
- 101,
3791
- 100
3792
- ]
3793
- },
3794
- {
3795
- kind: "account",
3796
- path: "bank"
3797
- },
3798
- {
3799
- kind: "account",
3800
- path: "emissions_mint"
3801
- }
3802
- ]
3803
- }
3804
- },
3805
- {
3806
- name: "destination_account",
3807
- docs: ["registered on `marginfi_account`"],
3808
- writable: true
3809
- },
3810
- {
3811
- name: "token_program"
3812
- }
3813
- ],
3814
- args: []
3815
- },
3816
3557
  {
3817
3558
  name: "lending_pool_accrue_bank_interest",
3818
3559
  docs: [
@@ -6214,7 +5955,6 @@ var marginfi_0_1_7_default = {
6214
5955
  accounts: [
6215
5956
  {
6216
5957
  name: "group",
6217
- writable: true,
6218
5958
  relations: ["bank"]
6219
5959
  },
6220
5960
  {
@@ -6225,50 +5965,17 @@ var marginfi_0_1_7_default = {
6225
5965
  args: []
6226
5966
  },
6227
5967
  {
6228
- name: "lending_pool_set_fixed_oracle_price",
6229
- docs: ["(admin only)"],
6230
- discriminator: [28, 126, 127, 127, 60, 37, 211, 125],
6231
- accounts: [
6232
- {
6233
- name: "group",
6234
- relations: ["bank"]
6235
- },
6236
- {
6237
- name: "admin",
6238
- signer: true,
6239
- relations: ["group"]
6240
- },
6241
- {
6242
- name: "bank",
6243
- writable: true
6244
- }
5968
+ name: "lending_pool_reclaim_emissions_vault",
5969
+ docs: [
5970
+ "(permissionless) Reclaim all remaining tokens from the emissions vault",
5971
+ "to the global fee wallet ATA, and disable emissions on the bank."
6245
5972
  ],
6246
- args: [
6247
- {
6248
- name: "price",
6249
- type: {
6250
- defined: {
6251
- name: "WrappedI80F48"
6252
- }
6253
- }
6254
- }
6255
- ]
6256
- },
6257
- {
6258
- name: "lending_pool_setup_emissions",
6259
- docs: ["(delegate_emissions_admin only)"],
6260
- discriminator: [206, 97, 120, 172, 113, 204, 169, 70],
5973
+ discriminator: [206, 67, 186, 225, 41, 30, 95, 216],
6261
5974
  accounts: [
6262
5975
  {
6263
5976
  name: "group",
6264
5977
  relations: ["bank"]
6265
5978
  },
6266
- {
6267
- name: "delegate_emissions_admin",
6268
- writable: true,
6269
- signer: true,
6270
- relations: ["group"]
6271
- },
6272
5979
  {
6273
5980
  name: "bank",
6274
5981
  writable: true
@@ -6316,106 +6023,7 @@ var marginfi_0_1_7_default = {
6316
6023
  }
6317
6024
  },
6318
6025
  {
6319
- name: "emissions_token_account",
6320
- writable: true,
6321
- pda: {
6322
- seeds: [
6323
- {
6324
- kind: "const",
6325
- value: [
6326
- 101,
6327
- 109,
6328
- 105,
6329
- 115,
6330
- 115,
6331
- 105,
6332
- 111,
6333
- 110,
6334
- 115,
6335
- 95,
6336
- 116,
6337
- 111,
6338
- 107,
6339
- 101,
6340
- 110,
6341
- 95,
6342
- 97,
6343
- 99,
6344
- 99,
6345
- 111,
6346
- 117,
6347
- 110,
6348
- 116,
6349
- 95,
6350
- 115,
6351
- 101,
6352
- 101,
6353
- 100
6354
- ]
6355
- },
6356
- {
6357
- kind: "account",
6358
- path: "bank"
6359
- },
6360
- {
6361
- kind: "account",
6362
- path: "emissions_mint"
6363
- }
6364
- ]
6365
- }
6366
- },
6367
- {
6368
- name: "emissions_funding_account",
6369
- docs: ["NOTE: This is a TokenAccount, spl transfer will validate it.", ""],
6370
- writable: true
6371
- },
6372
- {
6373
- name: "token_program"
6374
- },
6375
- {
6376
- name: "system_program",
6377
- address: "11111111111111111111111111111111"
6378
- }
6379
- ],
6380
- args: [
6381
- {
6382
- name: "flags",
6383
- type: "u64"
6384
- },
6385
- {
6386
- name: "rate",
6387
- type: "u64"
6388
- },
6389
- {
6390
- name: "total_emissions",
6391
- type: "u64"
6392
- }
6393
- ]
6394
- },
6395
- {
6396
- name: "lending_pool_update_emissions_parameters",
6397
- docs: ["(delegate_emissions_admin only)"],
6398
- discriminator: [55, 213, 224, 168, 153, 53, 197, 40],
6399
- accounts: [
6400
- {
6401
- name: "group",
6402
- relations: ["bank"]
6403
- },
6404
- {
6405
- name: "delegate_emissions_admin",
6406
- writable: true,
6407
- signer: true,
6408
- relations: ["group"]
6409
- },
6410
- {
6411
- name: "bank",
6412
- writable: true
6413
- },
6414
- {
6415
- name: "emissions_mint"
6416
- },
6417
- {
6418
- name: "emissions_token_account",
6026
+ name: "emissions_vault",
6419
6027
  writable: true,
6420
6028
  pda: {
6421
6029
  seeds: [
@@ -6464,30 +6072,53 @@ var marginfi_0_1_7_default = {
6464
6072
  }
6465
6073
  },
6466
6074
  {
6467
- name: "emissions_funding_account",
6075
+ name: "fee_state",
6076
+ pda: {
6077
+ seeds: [
6078
+ {
6079
+ kind: "const",
6080
+ value: [102, 101, 101, 115, 116, 97, 116, 101]
6081
+ }
6082
+ ]
6083
+ }
6084
+ },
6085
+ {
6086
+ name: "destination_account",
6087
+ docs: ["emissions mint (validated in handler)."],
6468
6088
  writable: true
6469
6089
  },
6470
6090
  {
6471
6091
  name: "token_program"
6472
6092
  }
6473
6093
  ],
6474
- args: [
6094
+ args: []
6095
+ },
6096
+ {
6097
+ name: "lending_pool_set_fixed_oracle_price",
6098
+ docs: ["(admin only)"],
6099
+ discriminator: [28, 126, 127, 127, 60, 37, 211, 125],
6100
+ accounts: [
6475
6101
  {
6476
- name: "emissions_flags",
6477
- type: {
6478
- option: "u64"
6479
- }
6102
+ name: "group",
6103
+ relations: ["bank"]
6480
6104
  },
6481
6105
  {
6482
- name: "emissions_rate",
6483
- type: {
6484
- option: "u64"
6485
- }
6106
+ name: "admin",
6107
+ signer: true,
6108
+ relations: ["group"]
6486
6109
  },
6487
6110
  {
6488
- name: "additional_emissions",
6111
+ name: "bank",
6112
+ writable: true
6113
+ }
6114
+ ],
6115
+ args: [
6116
+ {
6117
+ name: "price",
6489
6118
  type: {
6490
- option: "u64"
6119
+ defined: {
6120
+ name: "WrappedI80F48"
6121
+ }
6491
6122
  }
6492
6123
  }
6493
6124
  ]
@@ -6997,7 +6628,7 @@ var marginfi_0_1_7_default = {
6997
6628
  name: "marginfi_account_keeper_close_order",
6998
6629
  docs: [
6999
6630
  "(permissionless keeper) Close an existing Order after the user account was closed, or it no",
7000
- "longer as the associated positions, or the user has executed",
6631
+ "longer has the associated positions, or the user has executed",
7001
6632
  "`marginfi_account_set_keeper_close_flags`. Keeper keeps the rent."
7002
6633
  ],
7003
6634
  discriminator: [128, 114, 71, 46, 194, 71, 186, 106],
@@ -7223,8 +6854,7 @@ var marginfi_0_1_7_default = {
7223
6854
  {
7224
6855
  name: "marginfi_account_update_emissions_destination_account",
7225
6856
  docs: [
7226
- "(account authority) Set the wallet whose canonical ATA will receive permissionless emissions",
7227
- "withdrawals."
6857
+ "(account authority) Set the wallet whose canonical ATA will receive off-chain emissions."
7228
6858
  ],
7229
6859
  discriminator: [73, 185, 162, 201, 111, 24, 116, 185],
7230
6860
  accounts: [
@@ -7234,12 +6864,11 @@ var marginfi_0_1_7_default = {
7234
6864
  },
7235
6865
  {
7236
6866
  name: "authority",
7237
- signer: true,
7238
- relations: ["marginfi_account"]
6867
+ signer: true
7239
6868
  },
7240
6869
  {
7241
6870
  name: "destination_account",
7242
- docs: ["User's earned emissions will be sent to the canonical ATA of this wallet.", ""]
6871
+ docs: ["the canonical ATA for each emissions mint."]
7243
6872
  }
7244
6873
  ],
7245
6874
  args: []
@@ -7288,6 +6917,12 @@ var marginfi_0_1_7_default = {
7288
6917
  option: "pubkey"
7289
6918
  }
7290
6919
  },
6920
+ {
6921
+ name: "new_flow_admin",
6922
+ type: {
6923
+ option: "pubkey"
6924
+ }
6925
+ },
7291
6926
  {
7292
6927
  name: "new_emissions_admin",
7293
6928
  type: {
@@ -7536,7 +7171,6 @@ var marginfi_0_1_7_default = {
7536
7171
  accounts: [
7537
7172
  {
7538
7173
  name: "group",
7539
- writable: true,
7540
7174
  relations: ["marginfi_account", "bank"]
7541
7175
  },
7542
7176
  {
@@ -7858,7 +7492,6 @@ var marginfi_0_1_7_default = {
7858
7492
  accounts: [
7859
7493
  {
7860
7494
  name: "group",
7861
- writable: true,
7862
7495
  relations: ["marginfi_account", "bank"]
7863
7496
  },
7864
7497
  {
@@ -8198,6 +7831,91 @@ var marginfi_0_1_7_default = {
8198
7831
  }
8199
7832
  ]
8200
7833
  },
7834
+ {
7835
+ name: "update_deleverage_withdrawals",
7836
+ docs: [
7837
+ "(delegate_flow_admin only) Update the deleverage daily withdraw outflow with",
7838
+ "aggregated data. The delegate flow admin aggregates",
7839
+ "`DeleverageWithdrawFlowEvent` events off-chain and calls this instruction at intervals."
7840
+ ],
7841
+ discriminator: [56, 3, 181, 118, 27, 247, 207, 227],
7842
+ accounts: [
7843
+ {
7844
+ name: "marginfi_group",
7845
+ writable: true
7846
+ },
7847
+ {
7848
+ name: "delegate_flow_admin",
7849
+ signer: true,
7850
+ relations: ["marginfi_group"]
7851
+ }
7852
+ ],
7853
+ args: [
7854
+ {
7855
+ name: "outflow_usd",
7856
+ type: "u32"
7857
+ },
7858
+ {
7859
+ name: "update_seq",
7860
+ type: "u64"
7861
+ },
7862
+ {
7863
+ name: "event_start_slot",
7864
+ type: "u64"
7865
+ },
7866
+ {
7867
+ name: "event_end_slot",
7868
+ type: "u64"
7869
+ }
7870
+ ]
7871
+ },
7872
+ {
7873
+ name: "update_group_rate_limiter",
7874
+ docs: [
7875
+ "(delegate_flow_admin only) Update the group rate limiter with aggregated",
7876
+ "inflow/outflow. The delegate flow admin aggregates",
7877
+ "`RateLimitFlowEvent` events off-chain, converts to USD, and calls this instruction at",
7878
+ "intervals to update group rate limiter state."
7879
+ ],
7880
+ discriminator: [23, 78, 60, 139, 187, 44, 129, 37],
7881
+ accounts: [
7882
+ {
7883
+ name: "marginfi_group",
7884
+ writable: true
7885
+ },
7886
+ {
7887
+ name: "delegate_flow_admin",
7888
+ signer: true,
7889
+ relations: ["marginfi_group"]
7890
+ }
7891
+ ],
7892
+ args: [
7893
+ {
7894
+ name: "outflow_usd",
7895
+ type: {
7896
+ option: "u64"
7897
+ }
7898
+ },
7899
+ {
7900
+ name: "inflow_usd",
7901
+ type: {
7902
+ option: "u64"
7903
+ }
7904
+ },
7905
+ {
7906
+ name: "update_seq",
7907
+ type: "u64"
7908
+ },
7909
+ {
7910
+ name: "event_start_slot",
7911
+ type: "u64"
7912
+ },
7913
+ {
7914
+ name: "event_end_slot",
7915
+ type: "u64"
7916
+ }
7917
+ ]
7918
+ },
8201
7919
  {
8202
7920
  name: "write_bank_metadata",
8203
7921
  docs: [
@@ -8308,6 +8026,10 @@ var marginfi_0_1_7_default = {
8308
8026
  name: "DeleverageEvent",
8309
8027
  discriminator: [161, 8, 108, 204, 209, 198, 12, 30]
8310
8028
  },
8029
+ {
8030
+ name: "DeleverageWithdrawFlowEvent",
8031
+ discriminator: [109, 90, 139, 200, 10, 204, 84, 176]
8032
+ },
8311
8033
  {
8312
8034
  name: "EditStakedSettingsEvent",
8313
8035
  discriminator: [29, 58, 155, 191, 75, 220, 145, 206]
@@ -8404,6 +8126,10 @@ var marginfi_0_1_7_default = {
8404
8126
  name: "MarginfiGroupCreateEvent",
8405
8127
  discriminator: [233, 125, 61, 14, 98, 240, 136, 253]
8406
8128
  },
8129
+ {
8130
+ name: "RateLimitFlowEvent",
8131
+ discriminator: [229, 5, 73, 200, 0, 107, 105, 109]
8132
+ },
8407
8133
  {
8408
8134
  name: "SetKeeperCloseFlagsEvent",
8409
8135
  discriminator: [193, 230, 93, 128, 117, 87, 96, 21]
@@ -9010,6 +8736,66 @@ var marginfi_0_1_7_default = {
9010
8736
  name: "InvalidRateLimitPrice",
9011
8737
  msg: "Invalid rate limit price: pass oracle or pre-crank cache"
9012
8738
  },
8739
+ {
8740
+ code: 6120,
8741
+ name: "GroupRateLimiterUpdateEmpty",
8742
+ msg: "Group rate limiter admin update must include inflow and/or outflow"
8743
+ },
8744
+ {
8745
+ code: 6121,
8746
+ name: "GroupRateLimiterUpdateInvalidSlotRange",
8747
+ msg: "Group rate limiter admin update slot range is invalid"
8748
+ },
8749
+ {
8750
+ code: 6122,
8751
+ name: "GroupRateLimiterUpdateFutureSlot",
8752
+ msg: "Group rate limiter admin update cannot reference future slots"
8753
+ },
8754
+ {
8755
+ code: 6123,
8756
+ name: "GroupRateLimiterUpdateStale",
8757
+ msg: "Group rate limiter admin update is too stale"
8758
+ },
8759
+ {
8760
+ code: 6124,
8761
+ name: "GroupRateLimiterUpdateOutOfOrderSlot",
8762
+ msg: "Group rate limiter admin update slot progression is out of order"
8763
+ },
8764
+ {
8765
+ code: 6125,
8766
+ name: "GroupRateLimiterUpdateOutOfOrderSeq",
8767
+ msg: "Group rate limiter admin update sequence is out of order"
8768
+ },
8769
+ {
8770
+ code: 6126,
8771
+ name: "DeleverageWithdrawalUpdateEmpty",
8772
+ msg: "Deleverage withdrawal admin update must include outflow"
8773
+ },
8774
+ {
8775
+ code: 6127,
8776
+ name: "DeleverageWithdrawalUpdateInvalidSlotRange",
8777
+ msg: "Deleverage withdrawal admin update slot range is invalid"
8778
+ },
8779
+ {
8780
+ code: 6128,
8781
+ name: "DeleverageWithdrawalUpdateFutureSlot",
8782
+ msg: "Deleverage withdrawal admin update cannot reference future slots"
8783
+ },
8784
+ {
8785
+ code: 6129,
8786
+ name: "DeleverageWithdrawalUpdateStale",
8787
+ msg: "Deleverage withdrawal admin update is too stale"
8788
+ },
8789
+ {
8790
+ code: 6130,
8791
+ name: "DeleverageWithdrawalUpdateOutOfOrderSlot",
8792
+ msg: "Deleverage withdrawal admin update slot progression is out of order"
8793
+ },
8794
+ {
8795
+ code: 6131,
8796
+ name: "DeleverageWithdrawalUpdateOutOfOrderSeq",
8797
+ msg: "Deleverage withdrawal admin update sequence is out of order"
8798
+ },
9013
8799
  {
9014
8800
  code: 6200,
9015
8801
  name: "WrongAssetTagForStandardInstructions",
@@ -9815,7 +9601,7 @@ var marginfi_0_1_7_default = {
9815
9601
  {
9816
9602
  name: "_pad_0",
9817
9603
  type: {
9818
- array: ["u8", 8]
9604
+ array: ["u8", 16]
9819
9605
  }
9820
9606
  },
9821
9607
  {
@@ -9933,8 +9719,10 @@ var marginfi_0_1_7_default = {
9933
9719
  "Liquidate as an additional safeguard, if the liquidation prices stored here were to be",
9934
9720
  "edited between start and end, it would completely break the risk engine. End validates that",
9935
9721
  "the lock is set, panics if not, and removes it - which prevents footguns if the cache was",
9936
- "e.g. accidently set to default. The lock is also removed when a Balance is closed with",
9937
- "repay_all or withdraw_all, since those Balances can be omitted from the risk check at End."
9722
+ "e.g. accidently set to default. The lock is also removed when a Balance is closed via",
9723
+ "withdraw_all, repay_all, or close_balance, but only when the account has",
9724
+ "ACCOUNT_IN_RECEIVERSHIP set, so that operations on unrelated accounts sharing the same",
9725
+ "bank do not interfere with an in-progress liquidation."
9938
9726
  ],
9939
9727
  type: "u8"
9940
9728
  },
@@ -10577,16 +10365,6 @@ var marginfi_0_1_7_default = {
10577
10365
  name: "RateLimitWindow"
10578
10366
  }
10579
10367
  }
10580
- },
10581
- {
10582
- name: "untracked_inflow",
10583
- docs: [
10584
- "Native token inflows pending USD conversion for group rate limiter.",
10585
- "When deposits/repays occur without a valid oracle price, the amount is",
10586
- "recorded here and later applied to the group rate limiter when a valid",
10587
- "price becomes available (e.g., during pulse_bank_price_cache or outflow operations)."
10588
- ],
10589
- type: "i64"
10590
10368
  }
10591
10369
  ]
10592
10370
  }
@@ -10615,6 +10393,41 @@ var marginfi_0_1_7_default = {
10615
10393
  ]
10616
10394
  }
10617
10395
  },
10396
+ {
10397
+ name: "DeleverageWithdrawFlowEvent",
10398
+ docs: [
10399
+ "Emitted for deleverage-only withdraw outflows.",
10400
+ "The delegate flow admin aggregates these off-chain and",
10401
+ "updates the deleverage daily withdraws via `update_deleverage_withdrawals`."
10402
+ ],
10403
+ type: {
10404
+ kind: "struct",
10405
+ fields: [
10406
+ {
10407
+ name: "group",
10408
+ type: "pubkey"
10409
+ },
10410
+ {
10411
+ name: "bank",
10412
+ type: "pubkey"
10413
+ },
10414
+ {
10415
+ name: "mint",
10416
+ type: "pubkey"
10417
+ },
10418
+ {
10419
+ name: "outflow_usd",
10420
+ docs: ["Equity-denominated outflow value in USD, rounded to integer."],
10421
+ type: "u32"
10422
+ },
10423
+ {
10424
+ name: "current_timestamp",
10425
+ docs: ["Unix timestamp when the flow was recorded"],
10426
+ type: "i64"
10427
+ }
10428
+ ]
10429
+ }
10430
+ },
10618
10431
  {
10619
10432
  name: "DriftConfigCompact",
10620
10433
  docs: [
@@ -11923,7 +11736,7 @@ var marginfi_0_1_7_default = {
11923
11736
  "(i.e. no implicit padding). This is important because `Pubkey` has alignment=1 while `u64`",
11924
11737
  "has alignment=8; using plain `repr(C)` would insert padding before the first `u64`."
11925
11738
  ],
11926
- serialization: "bytemuckunsafe",
11739
+ serialization: "bytemuck",
11927
11740
  repr: {
11928
11741
  kind: "c",
11929
11742
  packed: true
@@ -12770,12 +12583,7 @@ var marginfi_0_1_7_default = {
12770
12583
  },
12771
12584
  {
12772
12585
  name: "emissions_destination_account",
12773
- docs: [
12774
- "Set with `update_emissions_destination_account`. Emissions rewards can be withdrawn to the",
12775
- "canonical ATA of this wallet without the user's input (withdraw_emissions_permissionless).",
12776
- "If pubkey default, the user has not opted into this feature, and must claim emissions",
12777
- "manually (withdraw_emissions)."
12778
- ],
12586
+ docs: ["Wallet whose canonical ATA receives off-chain emissions distributions."],
12779
12587
  type: "pubkey"
12780
12588
  },
12781
12589
  {
@@ -13048,7 +12856,7 @@ var marginfi_0_1_7_default = {
13048
12856
  name: "emode_admin",
13049
12857
  docs: [
13050
12858
  "This admin can configure collateral ratios above (but not below) the collateral ratio of",
13051
- "certain banks , e.g. allow SOL to count as 90% collateral when borrowing an LST instead of",
12859
+ "certain banks, e.g. allow SOL to count as 90% collateral when borrowing an LST instead of",
13052
12860
  "the default rate."
13053
12861
  ],
13054
12862
  type: "pubkey"
@@ -13149,6 +12957,40 @@ var marginfi_0_1_7_default = {
13149
12957
  }
13150
12958
  }
13151
12959
  },
12960
+ {
12961
+ name: "rate_limiter_last_admin_update_slot",
12962
+ docs: ["Last slot covered by an admin group rate limiter aggregation update."],
12963
+ type: "u64"
12964
+ },
12965
+ {
12966
+ name: "rate_limiter_last_admin_update_seq",
12967
+ docs: [
12968
+ "Monotonic sequence number for admin group rate limiter updates.",
12969
+ "This is used to enforce strict ordering and prevent duplicate/replayed batches",
12970
+ "when slot ranges overlap or multiple updates happen in the same slot."
12971
+ ],
12972
+ type: "u64"
12973
+ },
12974
+ {
12975
+ name: "deleverage_withdraw_last_admin_update_slot",
12976
+ docs: ["Last slot covered by an admin deleverage withdraw-limit aggregation update."],
12977
+ type: "u64"
12978
+ },
12979
+ {
12980
+ name: "deleverage_withdraw_last_admin_update_seq",
12981
+ docs: ["Monotonic sequence number for admin deleverage withdraw-limit updates."],
12982
+ type: "u64"
12983
+ },
12984
+ {
12985
+ name: "delegate_flow_admin",
12986
+ docs: [
12987
+ "Can modify flow-control status for the group, i.e. update the withdraw caches with flow",
12988
+ "information from banks. Typically this is a hot wallet that lives in e.g. some cron job. If",
12989
+ "compromised, flow control can be effectively disabled until the admin is restored, which",
12990
+ "does not itself compromise any funds, and is merely annoying."
12991
+ ],
12992
+ type: "pubkey"
12993
+ },
13152
12994
  {
13153
12995
  name: "_padding_0",
13154
12996
  type: {
@@ -13156,7 +12998,7 @@ var marginfi_0_1_7_default = {
13156
12998
  {
13157
12999
  array: ["u64", 2]
13158
13000
  },
13159
- 6
13001
+ 2
13160
13002
  ]
13161
13003
  }
13162
13004
  },
@@ -14267,6 +14109,50 @@ var marginfi_0_1_7_default = {
14267
14109
  ]
14268
14110
  }
14269
14111
  },
14112
+ {
14113
+ name: "RateLimitFlowEvent",
14114
+ docs: [
14115
+ "Emitted when a bank-level inflow or outflow is recorded.",
14116
+ "The delegate flow admin aggregates these off-chain and",
14117
+ "updates the group rate limiter via `update_group_rate_limiter`."
14118
+ ],
14119
+ type: {
14120
+ kind: "struct",
14121
+ fields: [
14122
+ {
14123
+ name: "group",
14124
+ type: "pubkey"
14125
+ },
14126
+ {
14127
+ name: "bank",
14128
+ type: "pubkey"
14129
+ },
14130
+ {
14131
+ name: "mint",
14132
+ type: "pubkey"
14133
+ },
14134
+ {
14135
+ name: "flow_direction",
14136
+ docs: ["0 = outflow (withdraw/borrow), 1 = inflow (deposit/repay)"],
14137
+ type: "u8"
14138
+ },
14139
+ {
14140
+ name: "native_amount",
14141
+ docs: ["Amount in native tokens"],
14142
+ type: "u64"
14143
+ },
14144
+ {
14145
+ name: "mint_decimals",
14146
+ type: "u8"
14147
+ },
14148
+ {
14149
+ name: "current_timestamp",
14150
+ docs: ["Unix timestamp when the flow was recorded"],
14151
+ type: "i64"
14152
+ }
14153
+ ]
14154
+ }
14155
+ },
14270
14156
  {
14271
14157
  name: "RateLimitWindow",
14272
14158
  docs: [
@@ -14989,7 +14875,7 @@ var marginfi_0_1_7_default = {
14989
14875
  };
14990
14876
 
14991
14877
  // src/idl/index.ts
14992
- var MARGINFI_IDL = marginfi_0_1_7_default;
14878
+ var MARGINFI_IDL = marginfi_0_1_8_default;
14993
14879
  function decodeInstruction(idl, encoded) {
14994
14880
  const coder = new anchor.BorshInstructionCoder(idl);
14995
14881
  return coder.decode(encoded, "base58");
@@ -15556,7 +15442,6 @@ async function makeKaminoWithdrawIx(mfProgram, accounts, args, remainingAccounts
15556
15442
  bank,
15557
15443
  destinationTokenAccount,
15558
15444
  lendingMarket,
15559
- reserveLiquidityMint,
15560
15445
  lendingMarketAuthority,
15561
15446
  reserveLiquiditySupply,
15562
15447
  reserveCollateralMint,
@@ -15571,7 +15456,6 @@ async function makeKaminoWithdrawIx(mfProgram, accounts, args, remainingAccounts
15571
15456
  bank,
15572
15457
  destinationTokenAccount,
15573
15458
  lendingMarket,
15574
- reserveLiquidityMint,
15575
15459
  lendingMarketAuthority,
15576
15460
  reserveLiquiditySupply,
15577
15461
  reserveCollateralMint,
@@ -15616,14 +15500,11 @@ function makeLendingAccountLiquidateIx(mfiProgram, accounts, args, remainingAcco
15616
15500
  tokenProgram
15617
15501
  }).accountsPartial(optionalAccounts).remainingAccounts(remainingAccounts).instruction();
15618
15502
  }
15619
- function makelendingAccountWithdrawEmissionIx(mfiProgram, accounts) {
15620
- const { marginfiAccount, destinationAccount, bank, tokenProgram, ...optionalAccounts } = accounts;
15621
- return mfiProgram.methods.lendingAccountWithdrawEmissions().accounts({
15622
- marginfiAccount,
15623
- destinationAccount,
15624
- bank,
15625
- tokenProgram
15626
- }).accountsPartial(optionalAccounts).instruction();
15503
+ function makeLendingAccountClearEmissionsIx(mfiProgram, accounts) {
15504
+ return mfiProgram.methods.lendingAccountClearEmissions().accounts({
15505
+ marginfiAccount: accounts.marginfiAccount,
15506
+ bank: accounts.bank
15507
+ }).instruction();
15627
15508
  }
15628
15509
  function makePoolConfigureBankIx(mfiProgram, accounts, args) {
15629
15510
  const { bank, ...optionalAccounts } = accounts;
@@ -15723,7 +15604,7 @@ var instructions = {
15723
15604
  makeInitMarginfiAccountIx,
15724
15605
  makeInitMarginfiAccountPdaIx,
15725
15606
  makeLendingAccountLiquidateIx,
15726
- makelendingAccountWithdrawEmissionIx,
15607
+ makeLendingAccountClearEmissionsIx,
15727
15608
  makePoolAddBankIx,
15728
15609
  makePoolConfigureBankIx,
15729
15610
  makeBeginFlashLoanIx,
@@ -44151,7 +44032,7 @@ var SEED_RESERVE = "reserve";
44151
44032
  var SEED_RATE_MODEL = "rate_model";
44152
44033
  var SEED_USER_SUPPLY_POSITION = "user_supply_position";
44153
44034
  var SEED_LENDING_REWARDS_RATE_MODEL = "lending_rewards_rate_model";
44154
- function getAllDerivedJupLendAccounts(mint) {
44035
+ function getAllDerivedJupLendAccounts(mint, tokenProgram) {
44155
44036
  const [fTokenMint] = deriveJupLendFTokenMint(mint);
44156
44037
  const [lending] = deriveJupLendLending(mint, fTokenMint);
44157
44038
  const [liquidity] = deriveJupLendLiquidity();
@@ -44161,7 +44042,7 @@ function getAllDerivedJupLendAccounts(mint) {
44161
44042
  supplyTokenReservesLiquidity: deriveJupLendTokenReserve(mint)[0],
44162
44043
  lendingSupplyPositionOnLiquidity: deriveJupLendLiquiditySupplyPositionPda(mint, lending)[0],
44163
44044
  rateModel: deriveJupLendRateModel(mint)[0],
44164
- vault: deriveJupLendLiquidityVaultAta(mint, liquidity),
44045
+ vault: deriveJupLendLiquidityVaultAta(mint, liquidity, tokenProgram),
44165
44046
  liquidity,
44166
44047
  rewardsRateModel: deriveJupLendLendingRewardsRateModel(mint)[0]
44167
44048
  };
@@ -44608,7 +44489,7 @@ var DISCRIMINATORS = {
44608
44489
  LENDING_ACCOUNT_WITHDRAW: Buffer.from([36, 72, 74, 19, 210, 210, 192, 192]),
44609
44490
  LENDING_ACCOUNT_BORROW: Buffer.from([4, 126, 116, 53, 48, 5, 212, 31]),
44610
44491
  LENDING_ACCOUNT_LIQUIDATE: Buffer.from([214, 169, 151, 213, 251, 167, 86, 219]),
44611
- LENDING_ACCOUNT_WITHDRAW_EMISSIONS: Buffer.from([234, 22, 84, 214, 118, 176, 140, 170]),
44492
+ LENDING_ACCOUNT_CLEAR_EMISSIONS: Buffer.from([239, 4, 221, 98, 45, 167, 201, 244]),
44612
44493
  LENDING_POOL_ADD_BANK: Buffer.from([215, 68, 72, 78, 208, 218, 103, 182]),
44613
44494
  LENDING_POOL_CONFIGURE_BANK: Buffer.from([121, 173, 156, 40, 93, 148, 56, 237]),
44614
44495
  LENDING_ACCOUNT_START_FLASHLOAN: Buffer.from([14, 131, 33, 220, 81, 186, 180, 107]),
@@ -44695,7 +44576,7 @@ function makeWithdrawIx2(programId, accounts, args, remainingAccounts = []) {
44695
44576
  const [bankLiquidityVaultAuthority] = deriveBankLiquidityVaultAuthority(programId, accounts.bank);
44696
44577
  const [liquidityVault] = deriveBankLiquidityVault(programId, accounts.bank);
44697
44578
  const keys = [
44698
- { pubkey: accounts.group, isSigner: false, isWritable: true },
44579
+ { pubkey: accounts.group, isSigner: false, isWritable: false },
44699
44580
  { pubkey: accounts.marginfiAccount, isSigner: false, isWritable: true },
44700
44581
  { pubkey: accounts.authority, isSigner: true, isWritable: false },
44701
44582
  { pubkey: accounts.bank, isSigner: false, isWritable: true },
@@ -44851,7 +44732,7 @@ function makeKaminoWithdrawIx2(programId, accounts, args, remainingAccounts = []
44851
44732
  const liquidityVaultAuthority = deriveBankLiquidityVaultAuthority(programId, accounts.bank)[0];
44852
44733
  const liquidityVault = deriveBankLiquidityVault(programId, accounts.bank)[0];
44853
44734
  const keys = [
44854
- { pubkey: accounts.group, isSigner: false, isWritable: true },
44735
+ { pubkey: accounts.group, isSigner: false, isWritable: false },
44855
44736
  { pubkey: accounts.marginfiAccount, isSigner: false, isWritable: true },
44856
44737
  { pubkey: accounts.authority, isSigner: true, isWritable: false },
44857
44738
  { pubkey: accounts.bank, isSigner: false, isWritable: true },
@@ -44871,7 +44752,7 @@ function makeKaminoWithdrawIx2(programId, accounts, args, remainingAccounts = []
44871
44752
  },
44872
44753
  { pubkey: accounts.integrationAcc1, isSigner: false, isWritable: true },
44873
44754
  {
44874
- pubkey: accounts.reserveLiquidityMint,
44755
+ pubkey: accounts.mint,
44875
44756
  isSigner: false,
44876
44757
  isWritable: true
44877
44758
  },
@@ -44958,22 +44839,15 @@ function makeLendingAccountLiquidateIx2(programId, accounts, args, remainingAcco
44958
44839
  ]);
44959
44840
  return new web3_js.TransactionInstruction({ keys, programId, data });
44960
44841
  }
44961
- function makelendingAccountWithdrawEmissionIx2(programId, accounts) {
44842
+ function makeLendingAccountClearEmissionsIx2(programId, accounts) {
44962
44843
  const keys = [
44963
- { pubkey: accounts.group, isSigner: false, isWritable: false },
44964
44844
  { pubkey: accounts.marginfiAccount, isSigner: false, isWritable: true },
44965
- { pubkey: accounts.authority, isSigner: true, isWritable: false },
44966
- { pubkey: accounts.bank, isSigner: false, isWritable: true },
44967
- { pubkey: accounts.emissionsMint, isSigner: false, isWritable: false },
44968
- { pubkey: accounts.emissionsAuth, isSigner: false, isWritable: false },
44969
- { pubkey: accounts.emissionsVault, isSigner: false, isWritable: true },
44970
- { pubkey: accounts.destinationAccount, isSigner: false, isWritable: true },
44971
- { pubkey: accounts.tokenProgram, isSigner: false, isWritable: false }
44845
+ { pubkey: accounts.bank, isSigner: false, isWritable: false }
44972
44846
  ];
44973
44847
  return new web3_js.TransactionInstruction({
44974
44848
  keys,
44975
44849
  programId,
44976
- data: DISCRIMINATORS.LENDING_ACCOUNT_WITHDRAW_EMISSIONS
44850
+ data: DISCRIMINATORS.LENDING_ACCOUNT_CLEAR_EMISSIONS
44977
44851
  });
44978
44852
  }
44979
44853
  function makeCloseAccountIx2(programId, accounts) {
@@ -45136,7 +45010,7 @@ function makeDriftWithdrawIx2(programId, accounts, args, remainingAccounts = [])
45136
45010
  const DRIFT_PROGRAM_ID2 = new web3_js.PublicKey("dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH");
45137
45011
  const SYSTEM_PROGRAM_ID2 = new web3_js.PublicKey("11111111111111111111111111111111");
45138
45012
  const keys = [
45139
- { pubkey: accounts.group, isSigner: false, isWritable: true },
45013
+ { pubkey: accounts.group, isSigner: false, isWritable: false },
45140
45014
  { pubkey: accounts.marginfiAccount, isSigner: false, isWritable: true },
45141
45015
  { pubkey: accounts.authority, isSigner: true, isWritable: false },
45142
45016
  { pubkey: accounts.bank, isSigner: false, isWritable: true }
@@ -45271,7 +45145,7 @@ var syncInstructions = {
45271
45145
  makeKaminoWithdrawIx: makeKaminoWithdrawIx2,
45272
45146
  makeBorrowIx: makeBorrowIx2,
45273
45147
  makeLendingAccountLiquidateIx: makeLendingAccountLiquidateIx2,
45274
- makelendingAccountWithdrawEmissionIx: makelendingAccountWithdrawEmissionIx2,
45148
+ makeLendingAccountClearEmissionsIx: makeLendingAccountClearEmissionsIx2,
45275
45149
  makePoolAddBankIx: makePoolAddBankIx2,
45276
45150
  makePoolConfigureBankIx: makePoolConfigureBankIx2,
45277
45151
  makeBeginFlashLoanIx: makeBeginFlashLoanIx2,
@@ -45563,7 +45437,7 @@ async function makeKaminoWithdrawIx3({
45563
45437
  lendingMarket,
45564
45438
  lendingMarketAuthority,
45565
45439
  integrationAcc1: bank.kaminoIntegrationAccounts.kaminoReserve,
45566
- reserveLiquidityMint: bank.mint,
45440
+ mint: bank.mint,
45567
45441
  reserveLiquiditySupply,
45568
45442
  reserveCollateralMint,
45569
45443
  reserveSourceCollateral: reserveDestinationDepositCollateral,
@@ -45587,7 +45461,7 @@ async function makeKaminoWithdrawIx3({
45587
45461
  bank: bank.address,
45588
45462
  destinationTokenAccount: userTokenAtaPk,
45589
45463
  lendingMarket,
45590
- reserveLiquidityMint: bank.mint,
45464
+ mint: bank.mint,
45591
45465
  lendingMarketAuthority,
45592
45466
  reserveLiquiditySupply,
45593
45467
  reserveCollateralMint,
@@ -45908,7 +45782,7 @@ async function makeJuplendWithdrawIx2({
45908
45782
  lendingAdmin,
45909
45783
  rateModel,
45910
45784
  vault,
45911
- liquidity} = getAllDerivedJupLendAccounts(bank.mint);
45785
+ liquidity} = getAllDerivedJupLendAccounts(bank.mint, tokenProgram);
45912
45786
  if (opts.observationBanksOverride) {
45913
45787
  remainingAccounts.push(...opts.observationBanksOverride);
45914
45788
  } else {
@@ -46531,7 +46405,7 @@ async function makeJuplendDepositIx2({
46531
46405
  if (!bank.jupLendIntegrationAccounts) {
46532
46406
  throw new Error("Bank has no JupLend integration accounts");
46533
46407
  }
46534
- const derivedAccounts = getAllDerivedJupLendAccounts(bank.mint);
46408
+ const derivedAccounts = getAllDerivedJupLendAccounts(bank.mint, tokenProgram);
46535
46409
  const {
46536
46410
  fTokenMint,
46537
46411
  lendingAdmin,
@@ -47480,37 +47354,14 @@ async function buildRepayWithCollatFlashloanTx({
47480
47354
  }
47481
47355
 
47482
47356
  // src/services/account/actions/emissions.ts
47483
- async function makeWithdrawEmissionsIx(program, marginfiAccount, banks, mintDatas, bankAddress) {
47357
+ async function makeClearEmissionsIx(program, marginfiAccount, banks, bankAddress) {
47484
47358
  const bank = banks.get(bankAddress.toBase58());
47485
47359
  if (!bank) throw Error(`Bank ${bankAddress.toBase58()} not found`);
47486
- const mintData = mintDatas.get(bankAddress.toBase58());
47487
- if (!mintData) throw Error(`Mint data for bank ${bankAddress.toBase58()} not found`);
47488
- if (!mintData.emissionTokenProgram) {
47489
- throw Error(`Emission token program not found for bank ${bankAddress.toBase58()}`);
47490
- }
47491
- let ixs = [];
47492
- const userAta = getAssociatedTokenAddressSync(
47493
- bank.emissionsMint,
47494
- marginfiAccount.authority,
47495
- true,
47496
- mintData.emissionTokenProgram
47497
- );
47498
- const createAtaIdempotentIx = createAssociatedTokenAccountIdempotentInstruction(
47499
- marginfiAccount.authority,
47500
- userAta,
47501
- marginfiAccount.authority,
47502
- bank.emissionsMint,
47503
- mintData.emissionTokenProgram
47504
- );
47505
- ixs.push(createAtaIdempotentIx);
47506
- const withdrawEmissionsIx = await instructions_default.makelendingAccountWithdrawEmissionIx(program, {
47360
+ const clearEmissionsIx = await instructions_default.makeLendingAccountClearEmissionsIx(program, {
47507
47361
  marginfiAccount: marginfiAccount.address,
47508
- destinationAccount: userAta,
47509
- bank: bank.address,
47510
- tokenProgram: mintData.emissionTokenProgram
47362
+ bank: bank.address
47511
47363
  });
47512
- ixs.push(withdrawEmissionsIx);
47513
- return { instructions: ixs, keys: [] };
47364
+ return { instructions: [clearEmissionsIx], keys: [] };
47514
47365
  }
47515
47366
  async function makeSwapCollateralTx(params) {
47516
47367
  const {
@@ -52637,15 +52488,14 @@ var MarginfiAccount = class _MarginfiAccount {
52637
52488
  *
52638
52489
  * @param program - The Marginfi program instance
52639
52490
  * @param banks - Map of all available banks
52640
- * @param mintDatas - Map of mint data for token programs
52641
- * @param bankAddress - The bank to withdraw emissions from
52491
+ * @param bankAddress - The bank to clear emissions for
52642
52492
  *
52643
- * @returns Promise resolving to InstructionsWrapper containing the withdraw emissions instructions
52493
+ * @returns Promise resolving to InstructionsWrapper containing the clear emissions instructions
52644
52494
  *
52645
- * @see {@link makeWithdrawEmissionsIx} for implementation
52495
+ * @see {@link makeClearEmissionsIx} for implementation
52646
52496
  */
52647
- async makeWithdrawEmissionsIx(program, banks, mintDatas, bankAddress) {
52648
- return makeWithdrawEmissionsIx(program, this, banks, mintDatas, bankAddress);
52497
+ async makeClearEmissionsIx(program, banks, bankAddress) {
52498
+ return makeClearEmissionsIx(program, this, banks, bankAddress);
52649
52499
  }
52650
52500
  /**
52651
52501
  * Creates an instruction to begin a flash loan.
@@ -53328,17 +53178,12 @@ var MarginfiAccountWrapper = class {
53328
53178
  });
53329
53179
  }
53330
53180
  /**
53331
- * Creates a withdraw emissions instruction with auto-injected client data.
53181
+ * Creates a clear emissions instruction with auto-injected client data.
53332
53182
  *
53333
- * @param bankAddress - Bank address to withdraw emissions from
53183
+ * @param bankAddress - Bank address to clear emissions for
53334
53184
  */
53335
- async makeWithdrawEmissionsIx(bankAddress) {
53336
- return this.account.makeWithdrawEmissionsIx(
53337
- this.client.program,
53338
- this.client.bankMap,
53339
- this.client.mintDataByBank,
53340
- bankAddress
53341
- );
53185
+ async makeClearEmissionsIx(bankAddress) {
53186
+ return this.account.makeClearEmissionsIx(this.client.program, this.client.bankMap, bankAddress);
53342
53187
  }
53343
53188
  /**
53344
53189
  * Creates a begin flash loan instruction.
@@ -54524,6 +54369,7 @@ exports.makeBeginFlashLoanIx = makeBeginFlashLoanIx3;
54524
54369
  exports.makeBorrowIx = makeBorrowIx3;
54525
54370
  exports.makeBorrowTx = makeBorrowTx;
54526
54371
  exports.makeBundleTipIx = makeBundleTipIx;
54372
+ exports.makeClearEmissionsIx = makeClearEmissionsIx;
54527
54373
  exports.makeCloseMarginfiAccountIx = makeCloseMarginfiAccountIx;
54528
54374
  exports.makeCloseMarginfiAccountTx = makeCloseMarginfiAccountTx;
54529
54375
  exports.makeCrankSwbFeedIx = makeCrankSwbFeedIx;
@@ -54572,7 +54418,6 @@ exports.makeUpdateDriftMarketIxs = makeUpdateDriftMarketIxs;
54572
54418
  exports.makeUpdateJupLendRateIxs = makeUpdateJupLendRateIxs;
54573
54419
  exports.makeUpdateSwbFeedIx = makeUpdateSwbFeedIx;
54574
54420
  exports.makeVersionedTransaction = makeVersionedTransaction;
54575
- exports.makeWithdrawEmissionsIx = makeWithdrawEmissionsIx;
54576
54421
  exports.makeWithdrawIx = makeWithdrawIx3;
54577
54422
  exports.makeWithdrawTx = makeWithdrawTx;
54578
54423
  exports.makeWrapSolIxs = makeWrapSolIxs;