diff --git a/programs/mango-v4/src/instructions/perp_settle_fees.rs b/programs/mango-v4/src/instructions/perp_settle_fees.rs index c28d548b3..c5fece123 100644 --- a/programs/mango-v4/src/instructions/perp_settle_fees.rs +++ b/programs/mango-v4/src/instructions/perp_settle_fees.rs @@ -23,6 +23,7 @@ pub struct PerpSettleFees<'info> { #[account(mut, has_one = group)] pub account: AccountLoaderDynamic<'info, MangoAccount>, + /// CHECK: Oracle can have different account types, constrained by address in perp_market pub oracle: UncheckedAccount<'info>, #[account(mut, has_one = group)] diff --git a/ts/client/src/mango_v4.ts b/ts/client/src/mango_v4.ts index 6a18b20e0..04268bf8b 100644 --- a/ts/client/src/mango_v4.ts +++ b/ts/client/src/mango_v4.ts @@ -2070,6 +2070,100 @@ export type MangoV4 = { } ] }, + { + "name": "tokenLiqWithToken", + "accounts": [ + { + "name": "group", + "isMut": false, + "isSigner": false + }, + { + "name": "liqor", + "isMut": true, + "isSigner": false + }, + { + "name": "liqorOwner", + "isMut": false, + "isSigner": true + }, + { + "name": "liqee", + "isMut": true, + "isSigner": false + } + ], + "args": [ + { + "name": "assetTokenIndex", + "type": "u16" + }, + { + "name": "liabTokenIndex", + "type": "u16" + }, + { + "name": "maxLiabTransfer", + "type": { + "defined": "I80F48" + } + } + ] + }, + { + "name": "tokenLiqBankruptcy", + "accounts": [ + { + "name": "group", + "isMut": false, + "isSigner": false + }, + { + "name": "liqor", + "isMut": true, + "isSigner": false + }, + { + "name": "liqorOwner", + "isMut": false, + "isSigner": true + }, + { + "name": "liqee", + "isMut": true, + "isSigner": false + }, + { + "name": "liabMintInfo", + "isMut": false, + "isSigner": false + }, + { + "name": "quoteVault", + "isMut": true, + "isSigner": false + }, + { + "name": "insuranceVault", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "maxLiabTransfer", + "type": { + "defined": "I80F48" + } + } + ] + }, { "name": "perpCreateMarket", "docs": [ @@ -2376,6 +2470,32 @@ export type MangoV4 = { ], "args": [] }, + { + "name": "perpDeactivatePosition", + "accounts": [ + { + "name": "group", + "isMut": false, + "isSigner": false + }, + { + "name": "account", + "isMut": true, + "isSigner": false + }, + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "perpMarket", + "isMut": false, + "isSigner": false + } + ], + "args": [] + }, { "name": "perpPlaceOrder", "accounts": [ @@ -2725,8 +2845,182 @@ export type MangoV4 = { "args": [ { "name": "maxSettleAmount", + "type": "u64" + } + ] + }, + { + "name": "perpSettleFees", + "accounts": [ + { + "name": "group", + "isMut": false, + "isSigner": false + }, + { + "name": "perpMarket", + "isMut": true, + "isSigner": false + }, + { + "name": "account", + "isMut": true, + "isSigner": false + }, + { + "name": "oracle", + "isMut": false, + "isSigner": false + }, + { + "name": "quoteBank", + "isMut": true, + "isSigner": false + } + ], + "args": [ + { + "name": "maxSettleAmount", + "type": "u64" + } + ] + }, + { + "name": "perpLiqBasePosition", + "accounts": [ + { + "name": "group", + "isMut": false, + "isSigner": false + }, + { + "name": "perpMarket", + "isMut": true, + "isSigner": false + }, + { + "name": "oracle", + "isMut": false, + "isSigner": false + }, + { + "name": "liqor", + "isMut": true, + "isSigner": false + }, + { + "name": "liqorOwner", + "isMut": false, + "isSigner": true + }, + { + "name": "liqee", + "isMut": true, + "isSigner": false + } + ], + "args": [ + { + "name": "maxBaseTransfer", + "type": "i64" + } + ] + }, + { + "name": "perpLiqForceCancelOrders", + "accounts": [ + { + "name": "group", + "isMut": false, + "isSigner": false + }, + { + "name": "account", + "isMut": true, + "isSigner": false + }, + { + "name": "perpMarket", + "isMut": true, + "isSigner": false + }, + { + "name": "asks", + "isMut": true, + "isSigner": false + }, + { + "name": "bids", + "isMut": true, + "isSigner": false + } + ], + "args": [ + { + "name": "limit", + "type": "u8" + } + ] + }, + { + "name": "altSet", + "accounts": [ + { + "name": "group", + "isMut": true, + "isSigner": false + }, + { + "name": "admin", + "isMut": false, + "isSigner": true + }, + { + "name": "addressLookupTable", + "isMut": true, + "isSigner": false + } + ], + "args": [ + { + "name": "index", + "type": "u8" + } + ] + }, + { + "name": "altExtend", + "accounts": [ + { + "name": "group", + "isMut": false, + "isSigner": false + }, + { + "name": "admin", + "isMut": false, + "isSigner": true + }, + { + "name": "payer", + "isMut": false, + "isSigner": true + }, + { + "name": "addressLookupTable", + "isMut": true, + "isSigner": false + } + ], + "args": [ + { + "name": "index", + "type": "u8" + }, + { + "name": "newAddresses", "type": { - "defined": "I80F48" + "vec": "publicKey" } } ] @@ -3050,12 +3344,21 @@ export type MangoV4 = { ] } }, + { + "name": "addressLookupTables", + "type": { + "array": [ + "publicKey", + 20 + ] + } + }, { "name": "reserved", "type": { "array": [ "u8", - 2560 + 1920 ] } } @@ -3586,6 +3889,15 @@ export type MangoV4 = { "defined": "I80F48" } }, + { + "name": "feesSettled", + "docs": [ + "Fees settled in native quote currency" + ], + "type": { + "defined": "I80F48" + } + }, { "name": "bump", "docs": [ @@ -5372,6 +5684,11 @@ export type MangoV4 = { "code": 6021, "name": "MaxSettleAmountMustBeGreaterThanZero", "msg": "max settle amount must be greater than zero" + }, + { + "code": 6022, + "name": "HasOpenPerpOrders", + "msg": "the perp position has open orders or unprocessed fill events" } ] }; @@ -7448,6 +7765,100 @@ export const IDL: MangoV4 = { } ] }, + { + "name": "tokenLiqWithToken", + "accounts": [ + { + "name": "group", + "isMut": false, + "isSigner": false + }, + { + "name": "liqor", + "isMut": true, + "isSigner": false + }, + { + "name": "liqorOwner", + "isMut": false, + "isSigner": true + }, + { + "name": "liqee", + "isMut": true, + "isSigner": false + } + ], + "args": [ + { + "name": "assetTokenIndex", + "type": "u16" + }, + { + "name": "liabTokenIndex", + "type": "u16" + }, + { + "name": "maxLiabTransfer", + "type": { + "defined": "I80F48" + } + } + ] + }, + { + "name": "tokenLiqBankruptcy", + "accounts": [ + { + "name": "group", + "isMut": false, + "isSigner": false + }, + { + "name": "liqor", + "isMut": true, + "isSigner": false + }, + { + "name": "liqorOwner", + "isMut": false, + "isSigner": true + }, + { + "name": "liqee", + "isMut": true, + "isSigner": false + }, + { + "name": "liabMintInfo", + "isMut": false, + "isSigner": false + }, + { + "name": "quoteVault", + "isMut": true, + "isSigner": false + }, + { + "name": "insuranceVault", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "maxLiabTransfer", + "type": { + "defined": "I80F48" + } + } + ] + }, { "name": "perpCreateMarket", "docs": [ @@ -7754,6 +8165,32 @@ export const IDL: MangoV4 = { ], "args": [] }, + { + "name": "perpDeactivatePosition", + "accounts": [ + { + "name": "group", + "isMut": false, + "isSigner": false + }, + { + "name": "account", + "isMut": true, + "isSigner": false + }, + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "perpMarket", + "isMut": false, + "isSigner": false + } + ], + "args": [] + }, { "name": "perpPlaceOrder", "accounts": [ @@ -8103,8 +8540,182 @@ export const IDL: MangoV4 = { "args": [ { "name": "maxSettleAmount", + "type": "u64" + } + ] + }, + { + "name": "perpSettleFees", + "accounts": [ + { + "name": "group", + "isMut": false, + "isSigner": false + }, + { + "name": "perpMarket", + "isMut": true, + "isSigner": false + }, + { + "name": "account", + "isMut": true, + "isSigner": false + }, + { + "name": "oracle", + "isMut": false, + "isSigner": false + }, + { + "name": "quoteBank", + "isMut": true, + "isSigner": false + } + ], + "args": [ + { + "name": "maxSettleAmount", + "type": "u64" + } + ] + }, + { + "name": "perpLiqBasePosition", + "accounts": [ + { + "name": "group", + "isMut": false, + "isSigner": false + }, + { + "name": "perpMarket", + "isMut": true, + "isSigner": false + }, + { + "name": "oracle", + "isMut": false, + "isSigner": false + }, + { + "name": "liqor", + "isMut": true, + "isSigner": false + }, + { + "name": "liqorOwner", + "isMut": false, + "isSigner": true + }, + { + "name": "liqee", + "isMut": true, + "isSigner": false + } + ], + "args": [ + { + "name": "maxBaseTransfer", + "type": "i64" + } + ] + }, + { + "name": "perpLiqForceCancelOrders", + "accounts": [ + { + "name": "group", + "isMut": false, + "isSigner": false + }, + { + "name": "account", + "isMut": true, + "isSigner": false + }, + { + "name": "perpMarket", + "isMut": true, + "isSigner": false + }, + { + "name": "asks", + "isMut": true, + "isSigner": false + }, + { + "name": "bids", + "isMut": true, + "isSigner": false + } + ], + "args": [ + { + "name": "limit", + "type": "u8" + } + ] + }, + { + "name": "altSet", + "accounts": [ + { + "name": "group", + "isMut": true, + "isSigner": false + }, + { + "name": "admin", + "isMut": false, + "isSigner": true + }, + { + "name": "addressLookupTable", + "isMut": true, + "isSigner": false + } + ], + "args": [ + { + "name": "index", + "type": "u8" + } + ] + }, + { + "name": "altExtend", + "accounts": [ + { + "name": "group", + "isMut": false, + "isSigner": false + }, + { + "name": "admin", + "isMut": false, + "isSigner": true + }, + { + "name": "payer", + "isMut": false, + "isSigner": true + }, + { + "name": "addressLookupTable", + "isMut": true, + "isSigner": false + } + ], + "args": [ + { + "name": "index", + "type": "u8" + }, + { + "name": "newAddresses", "type": { - "defined": "I80F48" + "vec": "publicKey" } } ] @@ -8428,12 +9039,21 @@ export const IDL: MangoV4 = { ] } }, + { + "name": "addressLookupTables", + "type": { + "array": [ + "publicKey", + 20 + ] + } + }, { "name": "reserved", "type": { "array": [ "u8", - 2560 + 1920 ] } } @@ -8964,6 +9584,15 @@ export const IDL: MangoV4 = { "defined": "I80F48" } }, + { + "name": "feesSettled", + "docs": [ + "Fees settled in native quote currency" + ], + "type": { + "defined": "I80F48" + } + }, { "name": "bump", "docs": [ @@ -10750,6 +11379,11 @@ export const IDL: MangoV4 = { "code": 6021, "name": "MaxSettleAmountMustBeGreaterThanZero", "msg": "max settle amount must be greater than zero" + }, + { + "code": 6022, + "name": "HasOpenPerpOrders", + "msg": "the perp position has open orders or unprocessed fill events" } ] };