export type MangoV4 = { "version": "0.1.0", "name": "mango_v4", "instructions": [ { "name": "createGroup", "accounts": [ { "name": "group", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "const", "type": "string", "value": "Group" }, { "kind": "account", "type": "publicKey", "path": "admin" } ] } }, { "name": "admin", "isMut": false, "isSigner": true }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "registerToken", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "admin", "isMut": false, "isSigner": true }, { "name": "mint", "isMut": false, "isSigner": false }, { "name": "bank", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "account", "type": "publicKey", "path": "group" }, { "kind": "const", "type": "string", "value": "Bank" }, { "kind": "arg", "type": "u16", "path": "token_index" } ] } }, { "name": "vault", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "account", "type": "publicKey", "path": "group" }, { "kind": "const", "type": "string", "value": "Vault" }, { "kind": "arg", "type": "u16", "path": "token_index" } ] } }, { "name": "mintInfo", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "account", "type": "publicKey", "path": "group" }, { "kind": "const", "type": "string", "value": "MintInfo" }, { "kind": "account", "type": "publicKey", "account": "Mint", "path": "mint" } ] } }, { "name": "oracle", "isMut": false, "isSigner": false }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "rent", "isMut": false, "isSigner": false } ], "args": [ { "name": "tokenIndex", "type": "u16" }, { "name": "name", "type": "string" }, { "name": "interestRateParams", "type": { "defined": "InterestRateParams" } }, { "name": "loanFeeRate", "type": "f32" }, { "name": "loanOriginationFeeRate", "type": "f32" }, { "name": "maintAssetWeight", "type": "f32" }, { "name": "initAssetWeight", "type": "f32" }, { "name": "maintLiabWeight", "type": "f32" }, { "name": "initLiabWeight", "type": "f32" }, { "name": "liquidationFee", "type": "f32" } ] }, { "name": "updateIndex", "accounts": [ { "name": "bank", "isMut": true, "isSigner": false } ], "args": [] }, { "name": "createAccount", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "account", "type": "publicKey", "path": "group" }, { "kind": "const", "type": "string", "value": "MangoAccount" }, { "kind": "account", "type": "publicKey", "path": "owner" }, { "kind": "arg", "type": "u8", "path": "account_num" } ] } }, { "name": "owner", "isMut": false, "isSigner": true }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "accountNum", "type": "u8" }, { "name": "name", "type": "string" } ] }, { "name": "closeAccount", "accounts": [ { "name": "account", "isMut": true, "isSigner": false }, { "name": "owner", "isMut": false, "isSigner": true }, { "name": "solDestination", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "createStubOracle", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "oracle", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "account", "type": "publicKey", "path": "group" }, { "kind": "const", "type": "string", "value": "StubOracle" }, { "kind": "account", "type": "publicKey", "account": "Mint", "path": "token_mint" } ] } }, { "name": "admin", "isMut": false, "isSigner": true }, { "name": "tokenMint", "isMut": false, "isSigner": false }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "price", "type": { "defined": "I80F48" } } ] }, { "name": "setStubOracle", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "admin", "isMut": false, "isSigner": true }, { "name": "oracle", "isMut": true, "isSigner": false }, { "name": "payer", "isMut": true, "isSigner": true } ], "args": [ { "name": "price", "type": { "defined": "I80F48" } } ] }, { "name": "deposit", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false }, { "name": "bank", "isMut": true, "isSigner": false }, { "name": "vault", "isMut": true, "isSigner": false }, { "name": "tokenAccount", "isMut": true, "isSigner": false }, { "name": "tokenAuthority", "isMut": false, "isSigner": true }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "amount", "type": "u64" } ] }, { "name": "withdraw", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false }, { "name": "owner", "isMut": false, "isSigner": true }, { "name": "bank", "isMut": true, "isSigner": false }, { "name": "vault", "isMut": true, "isSigner": false }, { "name": "tokenAccount", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "amount", "type": "u64" }, { "name": "allowBorrow", "type": "bool" } ] }, { "name": "marginTrade", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false }, { "name": "owner", "isMut": false, "isSigner": true } ], "args": [ { "name": "banksLen", "type": "u64" }, { "name": "cpiData", "type": "bytes" } ] }, { "name": "serum3RegisterMarket", "accounts": [ { "name": "group", "isMut": true, "isSigner": false }, { "name": "admin", "isMut": false, "isSigner": true }, { "name": "serumProgram", "isMut": false, "isSigner": false }, { "name": "serumMarketExternal", "isMut": false, "isSigner": false }, { "name": "serumMarket", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "account", "type": "publicKey", "path": "group" }, { "kind": "const", "type": "string", "value": "Serum3Market" }, { "kind": "account", "type": "publicKey", "path": "serum_market_external" } ] } }, { "name": "quoteBank", "isMut": false, "isSigner": false }, { "name": "baseBank", "isMut": false, "isSigner": false }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "marketIndex", "type": "u16" }, { "name": "name", "type": "string" } ] }, { "name": "serum3CreateOpenOrders", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false }, { "name": "serumMarket", "isMut": false, "isSigner": false }, { "name": "serumProgram", "isMut": false, "isSigner": false }, { "name": "serumMarketExternal", "isMut": false, "isSigner": false }, { "name": "openOrders", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "account", "type": "publicKey", "path": "account" }, { "kind": "const", "type": "string", "value": "Serum3OO" }, { "kind": "account", "type": "publicKey", "path": "serum_market" } ] } }, { "name": "owner", "isMut": false, "isSigner": true }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "rent", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "serum3PlaceOrder", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false }, { "name": "owner", "isMut": false, "isSigner": true }, { "name": "openOrders", "isMut": true, "isSigner": false }, { "name": "serumMarket", "isMut": false, "isSigner": false }, { "name": "serumProgram", "isMut": false, "isSigner": false }, { "name": "serumMarketExternal", "isMut": true, "isSigner": false }, { "name": "marketBids", "isMut": true, "isSigner": false }, { "name": "marketAsks", "isMut": true, "isSigner": false }, { "name": "marketEventQueue", "isMut": true, "isSigner": false }, { "name": "marketRequestQueue", "isMut": true, "isSigner": false }, { "name": "marketBaseVault", "isMut": true, "isSigner": false }, { "name": "marketQuoteVault", "isMut": true, "isSigner": false }, { "name": "marketVaultSigner", "isMut": false, "isSigner": false }, { "name": "quoteBank", "isMut": true, "isSigner": false }, { "name": "quoteVault", "isMut": true, "isSigner": false }, { "name": "baseBank", "isMut": true, "isSigner": false }, { "name": "baseVault", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "side", "type": { "defined": "Serum3Side" } }, { "name": "limitPrice", "type": "u64" }, { "name": "maxBaseQty", "type": "u64" }, { "name": "maxNativeQuoteQtyIncludingFees", "type": "u64" }, { "name": "selfTradeBehavior", "type": { "defined": "Serum3SelfTradeBehavior" } }, { "name": "orderType", "type": { "defined": "Serum3OrderType" } }, { "name": "clientOrderId", "type": "u64" }, { "name": "limit", "type": "u16" } ] }, { "name": "serum3CancelOrder", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false }, { "name": "owner", "isMut": false, "isSigner": true }, { "name": "openOrders", "isMut": true, "isSigner": false }, { "name": "serumMarket", "isMut": false, "isSigner": false }, { "name": "serumProgram", "isMut": false, "isSigner": false }, { "name": "serumMarketExternal", "isMut": true, "isSigner": false }, { "name": "marketBids", "isMut": true, "isSigner": false }, { "name": "marketAsks", "isMut": true, "isSigner": false }, { "name": "marketEventQueue", "isMut": true, "isSigner": false } ], "args": [ { "name": "side", "type": { "defined": "Serum3Side" } }, { "name": "orderId", "type": "u128" } ] }, { "name": "serum3SettleFunds", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false }, { "name": "owner", "isMut": false, "isSigner": true }, { "name": "openOrders", "isMut": true, "isSigner": false }, { "name": "serumMarket", "isMut": false, "isSigner": false }, { "name": "serumProgram", "isMut": false, "isSigner": false }, { "name": "serumMarketExternal", "isMut": true, "isSigner": false }, { "name": "marketBaseVault", "isMut": true, "isSigner": false }, { "name": "marketQuoteVault", "isMut": true, "isSigner": false }, { "name": "marketVaultSigner", "isMut": false, "isSigner": false }, { "name": "quoteBank", "isMut": true, "isSigner": false }, { "name": "quoteVault", "isMut": true, "isSigner": false }, { "name": "baseBank", "isMut": true, "isSigner": false }, { "name": "baseVault", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "serum3LiqForceCancelOrders", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false }, { "name": "openOrders", "isMut": true, "isSigner": false }, { "name": "serumMarket", "isMut": false, "isSigner": false }, { "name": "serumProgram", "isMut": false, "isSigner": false }, { "name": "serumMarketExternal", "isMut": true, "isSigner": false }, { "name": "marketBids", "isMut": true, "isSigner": false }, { "name": "marketAsks", "isMut": true, "isSigner": false }, { "name": "marketEventQueue", "isMut": true, "isSigner": false }, { "name": "marketBaseVault", "isMut": true, "isSigner": false }, { "name": "marketQuoteVault", "isMut": true, "isSigner": false }, { "name": "marketVaultSigner", "isMut": false, "isSigner": false }, { "name": "quoteBank", "isMut": true, "isSigner": false }, { "name": "quoteVault", "isMut": true, "isSigner": false }, { "name": "baseBank", "isMut": true, "isSigner": false }, { "name": "baseVault", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "limit", "type": "u8" } ] }, { "name": "liqTokenWithToken", "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": "perpCreateMarket", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "admin", "isMut": false, "isSigner": true }, { "name": "oracle", "isMut": false, "isSigner": false }, { "name": "perpMarket", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "account", "type": "publicKey", "path": "group" }, { "kind": "const", "type": "string", "value": "PerpMarket" }, { "kind": "arg", "type": "u16", "path": "perp_market_index" } ] } }, { "name": "bids", "isMut": true, "isSigner": false }, { "name": "asks", "isMut": true, "isSigner": false }, { "name": "eventQueue", "isMut": true, "isSigner": false }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "perpMarketIndex", "type": "u16" }, { "name": "name", "type": "string" }, { "name": "baseTokenIndexOpt", "type": { "option": "u16" } }, { "name": "quoteTokenIndex", "type": "u16" }, { "name": "quoteLotSize", "type": "i64" }, { "name": "baseLotSize", "type": "i64" }, { "name": "maintAssetWeight", "type": "f32" }, { "name": "initAssetWeight", "type": "f32" }, { "name": "maintLiabWeight", "type": "f32" }, { "name": "initLiabWeight", "type": "f32" }, { "name": "liquidationFee", "type": "f32" }, { "name": "makerFee", "type": "f32" }, { "name": "takerFee", "type": "f32" }, { "name": "minFunding", "type": "f32" }, { "name": "maxFunding", "type": "f32" }, { "name": "impactQuantity", "type": "i64" } ] }, { "name": "perpPlaceOrder", "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 }, { "name": "eventQueue", "isMut": true, "isSigner": false }, { "name": "oracle", "isMut": false, "isSigner": false }, { "name": "owner", "isMut": false, "isSigner": true } ], "args": [ { "name": "side", "type": { "defined": "Side" } }, { "name": "priceLots", "type": "i64" }, { "name": "maxBaseLots", "type": "i64" }, { "name": "maxQuoteLots", "type": "i64" }, { "name": "clientOrderId", "type": "u64" }, { "name": "orderType", "type": { "defined": "OrderType" } }, { "name": "expiryTimestamp", "type": "u64" }, { "name": "limit", "type": "u8" } ] }, { "name": "perpCancelOrder", "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 }, { "name": "owner", "isMut": false, "isSigner": true } ], "args": [ { "name": "orderId", "type": "i128" } ] }, { "name": "perpCancelOrderByClientOrderId", "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 }, { "name": "owner", "isMut": false, "isSigner": true } ], "args": [ { "name": "clientOrderId", "type": "u64" } ] }, { "name": "perpCancelAllOrders", "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 }, { "name": "owner", "isMut": false, "isSigner": true } ], "args": [ { "name": "limit", "type": "u8" } ] }, { "name": "perpCancelAllOrdersBySide", "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 }, { "name": "owner", "isMut": false, "isSigner": true } ], "args": [ { "name": "sideOption", "type": { "option": { "defined": "Side" } } }, { "name": "limit", "type": "u8" } ] }, { "name": "perpConsumeEvents", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "perpMarket", "isMut": true, "isSigner": false }, { "name": "eventQueue", "isMut": true, "isSigner": false } ], "args": [ { "name": "limit", "type": "u64" } ] }, { "name": "perpUpdateFunding", "accounts": [ { "name": "perpMarket", "isMut": true, "isSigner": false }, { "name": "asks", "isMut": true, "isSigner": false }, { "name": "bids", "isMut": true, "isSigner": false }, { "name": "oracle", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "benchmark", "accounts": [], "args": [] } ], "accounts": [ { "name": "bank", "type": { "kind": "struct", "fields": [ { "name": "name", "type": { "array": [ "u8", 16 ] } }, { "name": "group", "type": "publicKey" }, { "name": "mint", "type": "publicKey" }, { "name": "vault", "type": "publicKey" }, { "name": "oracle", "type": "publicKey" }, { "name": "depositIndex", "type": { "defined": "I80F48" } }, { "name": "borrowIndex", "type": { "defined": "I80F48" } }, { "name": "indexedTotalDeposits", "type": { "defined": "I80F48" } }, { "name": "indexedTotalBorrows", "type": { "defined": "I80F48" } }, { "name": "lastUpdated", "type": "i64" }, { "name": "util0", "type": { "defined": "I80F48" } }, { "name": "rate0", "type": { "defined": "I80F48" } }, { "name": "util1", "type": { "defined": "I80F48" } }, { "name": "rate1", "type": { "defined": "I80F48" } }, { "name": "maxRate", "type": { "defined": "I80F48" } }, { "name": "collectedFeesNative", "type": { "defined": "I80F48" } }, { "name": "loanOriginationFeeRate", "type": { "defined": "I80F48" } }, { "name": "loanFeeRate", "type": { "defined": "I80F48" } }, { "name": "maintAssetWeight", "type": { "defined": "I80F48" } }, { "name": "initAssetWeight", "type": { "defined": "I80F48" } }, { "name": "maintLiabWeight", "type": { "defined": "I80F48" } }, { "name": "initLiabWeight", "type": { "defined": "I80F48" } }, { "name": "liquidationFee", "type": { "defined": "I80F48" } }, { "name": "dust", "type": { "defined": "I80F48" } }, { "name": "tokenIndex", "type": "u16" }, { "name": "reserved", "type": { "array": [ "u8", 6 ] } } ] } }, { "name": "group", "type": { "kind": "struct", "fields": [ { "name": "admin", "type": "publicKey" }, { "name": "bump", "type": "u8" }, { "name": "reserved", "type": { "array": [ "u8", 7 ] } } ] } }, { "name": "mangoAccount", "type": { "kind": "struct", "fields": [ { "name": "name", "type": { "array": [ "u8", 32 ] } }, { "name": "group", "type": "publicKey" }, { "name": "owner", "type": "publicKey" }, { "name": "delegate", "type": "publicKey" }, { "name": "tokens", "type": { "defined": "MangoAccountTokens" } }, { "name": "serum3", "type": { "defined": "MangoAccountSerum3" } }, { "name": "perps", "type": { "defined": "MangoAccountPerps" } }, { "name": "beingLiquidated", "type": "u8" }, { "name": "isBankrupt", "type": "u8" }, { "name": "accountNum", "type": "u8" }, { "name": "bump", "type": "u8" }, { "name": "reserved", "type": { "array": [ "u8", 4 ] } } ] } }, { "name": "mintInfo", "type": { "kind": "struct", "fields": [ { "name": "group", "type": "publicKey" }, { "name": "mint", "type": "publicKey" }, { "name": "bank", "type": "publicKey" }, { "name": "vault", "type": "publicKey" }, { "name": "oracle", "type": "publicKey" }, { "name": "addressLookupTable", "type": "publicKey" }, { "name": "tokenIndex", "type": "u16" }, { "name": "addressLookupTableBankIndex", "type": "u8" }, { "name": "addressLookupTableOracleIndex", "type": "u8" }, { "name": "reserved", "type": { "array": [ "u8", 4 ] } } ] } }, { "name": "stubOracle", "type": { "kind": "struct", "fields": [ { "name": "group", "type": "publicKey" }, { "name": "mint", "type": "publicKey" }, { "name": "price", "type": { "defined": "I80F48" } }, { "name": "lastUpdated", "type": "i64" }, { "name": "reserved", "type": { "array": [ "u8", 8 ] } } ] } }, { "name": "bookSide", "type": { "kind": "struct", "fields": [ { "name": "bookSideType", "type": { "defined": "BookSideType" } }, { "name": "bumpIndex", "type": "u64" }, { "name": "freeListLen", "type": "u64" }, { "name": "freeListHead", "type": "u32" }, { "name": "rootNode", "type": "u32" }, { "name": "leafCount", "type": "u64" }, { "name": "nodes", "type": { "array": [ { "defined": "AnyNode" }, 1024 ] } } ] } }, { "name": "eventQueue", "type": { "kind": "struct", "fields": [ { "name": "header", "type": { "defined": "EventQueueHeader" } }, { "name": "buf", "type": { "array": [ { "defined": "AnyEvent" }, 512 ] } } ] } }, { "name": "perpMarket", "type": { "kind": "struct", "fields": [ { "name": "name", "type": { "array": [ "u8", 16 ] } }, { "name": "group", "type": "publicKey" }, { "name": "oracle", "type": "publicKey" }, { "name": "bids", "type": "publicKey" }, { "name": "asks", "type": "publicKey" }, { "name": "eventQueue", "type": "publicKey" }, { "name": "quoteLotSize", "type": "i64" }, { "name": "baseLotSize", "type": "i64" }, { "name": "maintAssetWeight", "type": { "defined": "I80F48" } }, { "name": "initAssetWeight", "type": { "defined": "I80F48" } }, { "name": "maintLiabWeight", "type": { "defined": "I80F48" } }, { "name": "initLiabWeight", "type": { "defined": "I80F48" } }, { "name": "liquidationFee", "type": { "defined": "I80F48" } }, { "name": "makerFee", "type": { "defined": "I80F48" } }, { "name": "takerFee", "type": { "defined": "I80F48" } }, { "name": "minFunding", "type": { "defined": "I80F48" } }, { "name": "maxFunding", "type": { "defined": "I80F48" } }, { "name": "impactQuantity", "type": "i64" }, { "name": "longFunding", "type": { "defined": "I80F48" } }, { "name": "shortFunding", "type": { "defined": "I80F48" } }, { "name": "fundingLastUpdated", "type": "i64" }, { "name": "openInterest", "type": "i64" }, { "name": "seqNum", "type": "u64" }, { "name": "feesAccrued", "type": { "defined": "I80F48" } }, { "name": "bump", "type": "u8" }, { "name": "reserved", "type": { "array": [ "u8", 1 ] } }, { "name": "perpMarketIndex", "type": "u16" }, { "name": "baseTokenIndex", "type": "u16" }, { "name": "quoteTokenIndex", "type": "u16" } ] } }, { "name": "serum3Market", "type": { "kind": "struct", "fields": [ { "name": "name", "type": { "array": [ "u8", 16 ] } }, { "name": "group", "type": "publicKey" }, { "name": "serumProgram", "type": "publicKey" }, { "name": "serumMarketExternal", "type": "publicKey" }, { "name": "marketIndex", "type": "u16" }, { "name": "baseTokenIndex", "type": "u16" }, { "name": "quoteTokenIndex", "type": "u16" }, { "name": "bump", "type": "u8" }, { "name": "reserved", "type": { "array": [ "u8", 1 ] } } ] } } ], "types": [ { "name": "InterestRateParams", "type": { "kind": "struct", "fields": [ { "name": "util0", "type": "f32" }, { "name": "rate0", "type": "f32" }, { "name": "util1", "type": "f32" }, { "name": "rate1", "type": "f32" }, { "name": "maxRate", "type": "f32" } ] } }, { "name": "TokenAccount", "type": { "kind": "struct", "fields": [ { "name": "indexedValue", "type": { "defined": "I80F48" } }, { "name": "tokenIndex", "type": "u16" }, { "name": "inUseCount", "type": "u8" }, { "name": "reserved", "type": { "array": [ "u8", 5 ] } } ] } }, { "name": "MangoAccountTokens", "type": { "kind": "struct", "fields": [ { "name": "values", "type": { "array": [ { "defined": "TokenAccount" }, 16 ] } } ] } }, { "name": "Serum3Account", "type": { "kind": "struct", "fields": [ { "name": "openOrders", "type": "publicKey" }, { "name": "marketIndex", "type": "u16" }, { "name": "baseTokenIndex", "type": "u16" }, { "name": "quoteTokenIndex", "type": "u16" }, { "name": "reserved", "type": { "array": [ "u8", 2 ] } } ] } }, { "name": "MangoAccountSerum3", "type": { "kind": "struct", "fields": [ { "name": "values", "type": { "array": [ { "defined": "Serum3Account" }, 8 ] } } ] } }, { "name": "PerpAccount", "type": { "kind": "struct", "fields": [ { "name": "marketIndex", "type": "u16" }, { "name": "reserved", "type": { "array": [ "u8", 6 ] } }, { "name": "basePositionLots", "type": "i64" }, { "name": "quotePositionNative", "type": { "defined": "I80F48" } }, { "name": "longSettledFunding", "type": { "defined": "I80F48" } }, { "name": "shortSettledFunding", "type": { "defined": "I80F48" } }, { "name": "bidsBaseLots", "type": "i64" }, { "name": "asksBaseLots", "type": "i64" }, { "name": "takerBaseLots", "type": "i64" }, { "name": "takerQuoteLots", "type": "i64" } ] } }, { "name": "MangoAccountPerps", "type": { "kind": "struct", "fields": [ { "name": "accounts", "type": { "array": [ { "defined": "PerpAccount" }, 8 ] } }, { "name": "orderMarket", "type": { "array": [ "u16", 8 ] } }, { "name": "orderSide", "type": { "array": [ { "defined": "Side" }, 8 ] } }, { "name": "orderId", "type": { "array": [ "i128", 8 ] } }, { "name": "clientOrderId", "type": { "array": [ "u64", 8 ] } } ] } }, { "name": "AnyNode", "type": { "kind": "struct", "fields": [ { "name": "tag", "type": "u32" }, { "name": "data", "type": { "array": [ "u8", 84 ] } } ] } }, { "name": "EventQueueHeader", "type": { "kind": "struct", "fields": [ { "name": "head", "type": "u64" }, { "name": "count", "type": "u64" }, { "name": "seqNum", "type": "u64" } ] } }, { "name": "AnyEvent", "type": { "kind": "struct", "fields": [ { "name": "eventType", "type": "u8" }, { "name": "padding", "type": { "array": [ "u8", 199 ] } } ] } }, { "name": "TokenIndex", "type": { "kind": "struct", "fields": [ { "name": "val", "type": "u16" } ] } }, { "name": "Serum3MarketIndex", "type": { "kind": "struct", "fields": [ { "name": "val", "type": "u16" } ] } }, { "name": "PerpMarketIndex", "type": { "kind": "struct", "fields": [ { "name": "val", "type": "u16" } ] } }, { "name": "I80F48", "type": { "kind": "struct", "fields": [ { "name": "val", "type": "i128" } ] } }, { "name": "ProgramInstruction", "type": { "kind": "enum", "variants": [ { "name": "CreateLookupTable", "fields": [ { "name": "recent_slot", "type": { "defined": "Slot" } }, { "name": "bump_seed", "type": "u8" } ] }, { "name": "FreezeLookupTable" }, { "name": "ExtendLookupTable", "fields": [ { "name": "new_addresses", "type": { "vec": "publicKey" } } ] }, { "name": "DeactivateLookupTable" }, { "name": "CloseLookupTable" } ] } }, { "name": "Serum3SelfTradeBehavior", "type": { "kind": "enum", "variants": [ { "name": "DecrementTake" }, { "name": "CancelProvide" }, { "name": "AbortTransaction" } ] } }, { "name": "Serum3OrderType", "type": { "kind": "enum", "variants": [ { "name": "Limit" }, { "name": "ImmediateOrCancel" }, { "name": "PostOnly" } ] } }, { "name": "Serum3Side", "type": { "kind": "enum", "variants": [ { "name": "Bid" }, { "name": "Ask" } ] } }, { "name": "HealthType", "type": { "kind": "enum", "variants": [ { "name": "Init" }, { "name": "Maint" } ] } }, { "name": "OracleType", "type": { "kind": "enum", "variants": [ { "name": "Stub" }, { "name": "Pyth" } ] } }, { "name": "BookSideType", "type": { "kind": "enum", "variants": [ { "name": "Bids" }, { "name": "Asks" } ] } }, { "name": "NodeTag", "type": { "kind": "enum", "variants": [ { "name": "Uninitialized" }, { "name": "InnerNode" }, { "name": "LeafNode" }, { "name": "FreeNode" }, { "name": "LastFreeNode" } ] } }, { "name": "NodeRef", "type": { "kind": "enum", "variants": [ { "name": "Inner", "fields": [ { "defined": "&'aInnerNode" } ] }, { "name": "Leaf", "fields": [ { "defined": "&'aLeafNode" } ] } ] } }, { "name": "NodeRefMut", "type": { "kind": "enum", "variants": [ { "name": "Inner", "fields": [ { "defined": "&'amutInnerNode" } ] }, { "name": "Leaf", "fields": [ { "defined": "&'amutLeafNode" } ] } ] } }, { "name": "OrderType", "type": { "kind": "enum", "variants": [ { "name": "Limit" }, { "name": "ImmediateOrCancel" }, { "name": "PostOnly" }, { "name": "Market" }, { "name": "PostOnlySlide" } ] } }, { "name": "Side", "type": { "kind": "enum", "variants": [ { "name": "Bid" }, { "name": "Ask" } ] } }, { "name": "EventType", "type": { "kind": "enum", "variants": [ { "name": "Fill" }, { "name": "Out" }, { "name": "Liquidate" } ] } } ], "errors": [ { "code": 6000, "name": "SomeError", "msg": "" }, { "code": 6001, "name": "MathError", "msg": "" }, { "code": 6002, "name": "UnexpectedOracle", "msg": "" }, { "code": 6003, "name": "UnknownOracleType", "msg": "" }, { "code": 6004, "name": "InvalidMarginTradeTargetCpiProgram", "msg": "" }, { "code": 6005, "name": "HealthMustBePositive", "msg": "" }, { "code": 6006, "name": "IsBankrupt", "msg": "The account is bankrupt" } ] }; export const IDL: MangoV4 = { "version": "0.1.0", "name": "mango_v4", "instructions": [ { "name": "createGroup", "accounts": [ { "name": "group", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "const", "type": "string", "value": "Group" }, { "kind": "account", "type": "publicKey", "path": "admin" } ] } }, { "name": "admin", "isMut": false, "isSigner": true }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "registerToken", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "admin", "isMut": false, "isSigner": true }, { "name": "mint", "isMut": false, "isSigner": false }, { "name": "bank", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "account", "type": "publicKey", "path": "group" }, { "kind": "const", "type": "string", "value": "Bank" }, { "kind": "arg", "type": "u16", "path": "token_index" } ] } }, { "name": "vault", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "account", "type": "publicKey", "path": "group" }, { "kind": "const", "type": "string", "value": "Vault" }, { "kind": "arg", "type": "u16", "path": "token_index" } ] } }, { "name": "mintInfo", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "account", "type": "publicKey", "path": "group" }, { "kind": "const", "type": "string", "value": "MintInfo" }, { "kind": "account", "type": "publicKey", "account": "Mint", "path": "mint" } ] } }, { "name": "oracle", "isMut": false, "isSigner": false }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "rent", "isMut": false, "isSigner": false } ], "args": [ { "name": "tokenIndex", "type": "u16" }, { "name": "name", "type": "string" }, { "name": "interestRateParams", "type": { "defined": "InterestRateParams" } }, { "name": "loanFeeRate", "type": "f32" }, { "name": "loanOriginationFeeRate", "type": "f32" }, { "name": "maintAssetWeight", "type": "f32" }, { "name": "initAssetWeight", "type": "f32" }, { "name": "maintLiabWeight", "type": "f32" }, { "name": "initLiabWeight", "type": "f32" }, { "name": "liquidationFee", "type": "f32" } ] }, { "name": "updateIndex", "accounts": [ { "name": "bank", "isMut": true, "isSigner": false } ], "args": [] }, { "name": "createAccount", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "account", "type": "publicKey", "path": "group" }, { "kind": "const", "type": "string", "value": "MangoAccount" }, { "kind": "account", "type": "publicKey", "path": "owner" }, { "kind": "arg", "type": "u8", "path": "account_num" } ] } }, { "name": "owner", "isMut": false, "isSigner": true }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "accountNum", "type": "u8" }, { "name": "name", "type": "string" } ] }, { "name": "closeAccount", "accounts": [ { "name": "account", "isMut": true, "isSigner": false }, { "name": "owner", "isMut": false, "isSigner": true }, { "name": "solDestination", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "createStubOracle", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "oracle", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "account", "type": "publicKey", "path": "group" }, { "kind": "const", "type": "string", "value": "StubOracle" }, { "kind": "account", "type": "publicKey", "account": "Mint", "path": "token_mint" } ] } }, { "name": "admin", "isMut": false, "isSigner": true }, { "name": "tokenMint", "isMut": false, "isSigner": false }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "price", "type": { "defined": "I80F48" } } ] }, { "name": "setStubOracle", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "admin", "isMut": false, "isSigner": true }, { "name": "oracle", "isMut": true, "isSigner": false }, { "name": "payer", "isMut": true, "isSigner": true } ], "args": [ { "name": "price", "type": { "defined": "I80F48" } } ] }, { "name": "deposit", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false }, { "name": "bank", "isMut": true, "isSigner": false }, { "name": "vault", "isMut": true, "isSigner": false }, { "name": "tokenAccount", "isMut": true, "isSigner": false }, { "name": "tokenAuthority", "isMut": false, "isSigner": true }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "amount", "type": "u64" } ] }, { "name": "withdraw", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false }, { "name": "owner", "isMut": false, "isSigner": true }, { "name": "bank", "isMut": true, "isSigner": false }, { "name": "vault", "isMut": true, "isSigner": false }, { "name": "tokenAccount", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "amount", "type": "u64" }, { "name": "allowBorrow", "type": "bool" } ] }, { "name": "marginTrade", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false }, { "name": "owner", "isMut": false, "isSigner": true } ], "args": [ { "name": "banksLen", "type": "u64" }, { "name": "cpiData", "type": "bytes" } ] }, { "name": "serum3RegisterMarket", "accounts": [ { "name": "group", "isMut": true, "isSigner": false }, { "name": "admin", "isMut": false, "isSigner": true }, { "name": "serumProgram", "isMut": false, "isSigner": false }, { "name": "serumMarketExternal", "isMut": false, "isSigner": false }, { "name": "serumMarket", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "account", "type": "publicKey", "path": "group" }, { "kind": "const", "type": "string", "value": "Serum3Market" }, { "kind": "account", "type": "publicKey", "path": "serum_market_external" } ] } }, { "name": "quoteBank", "isMut": false, "isSigner": false }, { "name": "baseBank", "isMut": false, "isSigner": false }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "marketIndex", "type": "u16" }, { "name": "name", "type": "string" } ] }, { "name": "serum3CreateOpenOrders", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false }, { "name": "serumMarket", "isMut": false, "isSigner": false }, { "name": "serumProgram", "isMut": false, "isSigner": false }, { "name": "serumMarketExternal", "isMut": false, "isSigner": false }, { "name": "openOrders", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "account", "type": "publicKey", "path": "account" }, { "kind": "const", "type": "string", "value": "Serum3OO" }, { "kind": "account", "type": "publicKey", "path": "serum_market" } ] } }, { "name": "owner", "isMut": false, "isSigner": true }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "rent", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "serum3PlaceOrder", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false }, { "name": "owner", "isMut": false, "isSigner": true }, { "name": "openOrders", "isMut": true, "isSigner": false }, { "name": "serumMarket", "isMut": false, "isSigner": false }, { "name": "serumProgram", "isMut": false, "isSigner": false }, { "name": "serumMarketExternal", "isMut": true, "isSigner": false }, { "name": "marketBids", "isMut": true, "isSigner": false }, { "name": "marketAsks", "isMut": true, "isSigner": false }, { "name": "marketEventQueue", "isMut": true, "isSigner": false }, { "name": "marketRequestQueue", "isMut": true, "isSigner": false }, { "name": "marketBaseVault", "isMut": true, "isSigner": false }, { "name": "marketQuoteVault", "isMut": true, "isSigner": false }, { "name": "marketVaultSigner", "isMut": false, "isSigner": false }, { "name": "quoteBank", "isMut": true, "isSigner": false }, { "name": "quoteVault", "isMut": true, "isSigner": false }, { "name": "baseBank", "isMut": true, "isSigner": false }, { "name": "baseVault", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "side", "type": { "defined": "Serum3Side" } }, { "name": "limitPrice", "type": "u64" }, { "name": "maxBaseQty", "type": "u64" }, { "name": "maxNativeQuoteQtyIncludingFees", "type": "u64" }, { "name": "selfTradeBehavior", "type": { "defined": "Serum3SelfTradeBehavior" } }, { "name": "orderType", "type": { "defined": "Serum3OrderType" } }, { "name": "clientOrderId", "type": "u64" }, { "name": "limit", "type": "u16" } ] }, { "name": "serum3CancelOrder", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false }, { "name": "owner", "isMut": false, "isSigner": true }, { "name": "openOrders", "isMut": true, "isSigner": false }, { "name": "serumMarket", "isMut": false, "isSigner": false }, { "name": "serumProgram", "isMut": false, "isSigner": false }, { "name": "serumMarketExternal", "isMut": true, "isSigner": false }, { "name": "marketBids", "isMut": true, "isSigner": false }, { "name": "marketAsks", "isMut": true, "isSigner": false }, { "name": "marketEventQueue", "isMut": true, "isSigner": false } ], "args": [ { "name": "side", "type": { "defined": "Serum3Side" } }, { "name": "orderId", "type": "u128" } ] }, { "name": "serum3SettleFunds", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false }, { "name": "owner", "isMut": false, "isSigner": true }, { "name": "openOrders", "isMut": true, "isSigner": false }, { "name": "serumMarket", "isMut": false, "isSigner": false }, { "name": "serumProgram", "isMut": false, "isSigner": false }, { "name": "serumMarketExternal", "isMut": true, "isSigner": false }, { "name": "marketBaseVault", "isMut": true, "isSigner": false }, { "name": "marketQuoteVault", "isMut": true, "isSigner": false }, { "name": "marketVaultSigner", "isMut": false, "isSigner": false }, { "name": "quoteBank", "isMut": true, "isSigner": false }, { "name": "quoteVault", "isMut": true, "isSigner": false }, { "name": "baseBank", "isMut": true, "isSigner": false }, { "name": "baseVault", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "serum3LiqForceCancelOrders", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "account", "isMut": true, "isSigner": false }, { "name": "openOrders", "isMut": true, "isSigner": false }, { "name": "serumMarket", "isMut": false, "isSigner": false }, { "name": "serumProgram", "isMut": false, "isSigner": false }, { "name": "serumMarketExternal", "isMut": true, "isSigner": false }, { "name": "marketBids", "isMut": true, "isSigner": false }, { "name": "marketAsks", "isMut": true, "isSigner": false }, { "name": "marketEventQueue", "isMut": true, "isSigner": false }, { "name": "marketBaseVault", "isMut": true, "isSigner": false }, { "name": "marketQuoteVault", "isMut": true, "isSigner": false }, { "name": "marketVaultSigner", "isMut": false, "isSigner": false }, { "name": "quoteBank", "isMut": true, "isSigner": false }, { "name": "quoteVault", "isMut": true, "isSigner": false }, { "name": "baseBank", "isMut": true, "isSigner": false }, { "name": "baseVault", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "limit", "type": "u8" } ] }, { "name": "liqTokenWithToken", "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": "perpCreateMarket", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "admin", "isMut": false, "isSigner": true }, { "name": "oracle", "isMut": false, "isSigner": false }, { "name": "perpMarket", "isMut": true, "isSigner": false, "pda": { "seeds": [ { "kind": "account", "type": "publicKey", "path": "group" }, { "kind": "const", "type": "string", "value": "PerpMarket" }, { "kind": "arg", "type": "u16", "path": "perp_market_index" } ] } }, { "name": "bids", "isMut": true, "isSigner": false }, { "name": "asks", "isMut": true, "isSigner": false }, { "name": "eventQueue", "isMut": true, "isSigner": false }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "perpMarketIndex", "type": "u16" }, { "name": "name", "type": "string" }, { "name": "baseTokenIndexOpt", "type": { "option": "u16" } }, { "name": "quoteTokenIndex", "type": "u16" }, { "name": "quoteLotSize", "type": "i64" }, { "name": "baseLotSize", "type": "i64" }, { "name": "maintAssetWeight", "type": "f32" }, { "name": "initAssetWeight", "type": "f32" }, { "name": "maintLiabWeight", "type": "f32" }, { "name": "initLiabWeight", "type": "f32" }, { "name": "liquidationFee", "type": "f32" }, { "name": "makerFee", "type": "f32" }, { "name": "takerFee", "type": "f32" }, { "name": "minFunding", "type": "f32" }, { "name": "maxFunding", "type": "f32" }, { "name": "impactQuantity", "type": "i64" } ] }, { "name": "perpPlaceOrder", "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 }, { "name": "eventQueue", "isMut": true, "isSigner": false }, { "name": "oracle", "isMut": false, "isSigner": false }, { "name": "owner", "isMut": false, "isSigner": true } ], "args": [ { "name": "side", "type": { "defined": "Side" } }, { "name": "priceLots", "type": "i64" }, { "name": "maxBaseLots", "type": "i64" }, { "name": "maxQuoteLots", "type": "i64" }, { "name": "clientOrderId", "type": "u64" }, { "name": "orderType", "type": { "defined": "OrderType" } }, { "name": "expiryTimestamp", "type": "u64" }, { "name": "limit", "type": "u8" } ] }, { "name": "perpCancelOrder", "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 }, { "name": "owner", "isMut": false, "isSigner": true } ], "args": [ { "name": "orderId", "type": "i128" } ] }, { "name": "perpCancelOrderByClientOrderId", "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 }, { "name": "owner", "isMut": false, "isSigner": true } ], "args": [ { "name": "clientOrderId", "type": "u64" } ] }, { "name": "perpCancelAllOrders", "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 }, { "name": "owner", "isMut": false, "isSigner": true } ], "args": [ { "name": "limit", "type": "u8" } ] }, { "name": "perpCancelAllOrdersBySide", "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 }, { "name": "owner", "isMut": false, "isSigner": true } ], "args": [ { "name": "sideOption", "type": { "option": { "defined": "Side" } } }, { "name": "limit", "type": "u8" } ] }, { "name": "perpConsumeEvents", "accounts": [ { "name": "group", "isMut": false, "isSigner": false }, { "name": "perpMarket", "isMut": true, "isSigner": false }, { "name": "eventQueue", "isMut": true, "isSigner": false } ], "args": [ { "name": "limit", "type": "u64" } ] }, { "name": "perpUpdateFunding", "accounts": [ { "name": "perpMarket", "isMut": true, "isSigner": false }, { "name": "asks", "isMut": true, "isSigner": false }, { "name": "bids", "isMut": true, "isSigner": false }, { "name": "oracle", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "benchmark", "accounts": [], "args": [] } ], "accounts": [ { "name": "bank", "type": { "kind": "struct", "fields": [ { "name": "name", "type": { "array": [ "u8", 16 ] } }, { "name": "group", "type": "publicKey" }, { "name": "mint", "type": "publicKey" }, { "name": "vault", "type": "publicKey" }, { "name": "oracle", "type": "publicKey" }, { "name": "depositIndex", "type": { "defined": "I80F48" } }, { "name": "borrowIndex", "type": { "defined": "I80F48" } }, { "name": "indexedTotalDeposits", "type": { "defined": "I80F48" } }, { "name": "indexedTotalBorrows", "type": { "defined": "I80F48" } }, { "name": "lastUpdated", "type": "i64" }, { "name": "util0", "type": { "defined": "I80F48" } }, { "name": "rate0", "type": { "defined": "I80F48" } }, { "name": "util1", "type": { "defined": "I80F48" } }, { "name": "rate1", "type": { "defined": "I80F48" } }, { "name": "maxRate", "type": { "defined": "I80F48" } }, { "name": "collectedFeesNative", "type": { "defined": "I80F48" } }, { "name": "loanOriginationFeeRate", "type": { "defined": "I80F48" } }, { "name": "loanFeeRate", "type": { "defined": "I80F48" } }, { "name": "maintAssetWeight", "type": { "defined": "I80F48" } }, { "name": "initAssetWeight", "type": { "defined": "I80F48" } }, { "name": "maintLiabWeight", "type": { "defined": "I80F48" } }, { "name": "initLiabWeight", "type": { "defined": "I80F48" } }, { "name": "liquidationFee", "type": { "defined": "I80F48" } }, { "name": "dust", "type": { "defined": "I80F48" } }, { "name": "tokenIndex", "type": "u16" }, { "name": "reserved", "type": { "array": [ "u8", 6 ] } } ] } }, { "name": "group", "type": { "kind": "struct", "fields": [ { "name": "admin", "type": "publicKey" }, { "name": "bump", "type": "u8" }, { "name": "reserved", "type": { "array": [ "u8", 7 ] } } ] } }, { "name": "mangoAccount", "type": { "kind": "struct", "fields": [ { "name": "name", "type": { "array": [ "u8", 32 ] } }, { "name": "group", "type": "publicKey" }, { "name": "owner", "type": "publicKey" }, { "name": "delegate", "type": "publicKey" }, { "name": "tokens", "type": { "defined": "MangoAccountTokens" } }, { "name": "serum3", "type": { "defined": "MangoAccountSerum3" } }, { "name": "perps", "type": { "defined": "MangoAccountPerps" } }, { "name": "beingLiquidated", "type": "u8" }, { "name": "isBankrupt", "type": "u8" }, { "name": "accountNum", "type": "u8" }, { "name": "bump", "type": "u8" }, { "name": "reserved", "type": { "array": [ "u8", 4 ] } } ] } }, { "name": "mintInfo", "type": { "kind": "struct", "fields": [ { "name": "group", "type": "publicKey" }, { "name": "mint", "type": "publicKey" }, { "name": "bank", "type": "publicKey" }, { "name": "vault", "type": "publicKey" }, { "name": "oracle", "type": "publicKey" }, { "name": "addressLookupTable", "type": "publicKey" }, { "name": "tokenIndex", "type": "u16" }, { "name": "addressLookupTableBankIndex", "type": "u8" }, { "name": "addressLookupTableOracleIndex", "type": "u8" }, { "name": "reserved", "type": { "array": [ "u8", 4 ] } } ] } }, { "name": "stubOracle", "type": { "kind": "struct", "fields": [ { "name": "group", "type": "publicKey" }, { "name": "mint", "type": "publicKey" }, { "name": "price", "type": { "defined": "I80F48" } }, { "name": "lastUpdated", "type": "i64" }, { "name": "reserved", "type": { "array": [ "u8", 8 ] } } ] } }, { "name": "bookSide", "type": { "kind": "struct", "fields": [ { "name": "bookSideType", "type": { "defined": "BookSideType" } }, { "name": "bumpIndex", "type": "u64" }, { "name": "freeListLen", "type": "u64" }, { "name": "freeListHead", "type": "u32" }, { "name": "rootNode", "type": "u32" }, { "name": "leafCount", "type": "u64" }, { "name": "nodes", "type": { "array": [ { "defined": "AnyNode" }, 1024 ] } } ] } }, { "name": "eventQueue", "type": { "kind": "struct", "fields": [ { "name": "header", "type": { "defined": "EventQueueHeader" } }, { "name": "buf", "type": { "array": [ { "defined": "AnyEvent" }, 512 ] } } ] } }, { "name": "perpMarket", "type": { "kind": "struct", "fields": [ { "name": "name", "type": { "array": [ "u8", 16 ] } }, { "name": "group", "type": "publicKey" }, { "name": "oracle", "type": "publicKey" }, { "name": "bids", "type": "publicKey" }, { "name": "asks", "type": "publicKey" }, { "name": "eventQueue", "type": "publicKey" }, { "name": "quoteLotSize", "type": "i64" }, { "name": "baseLotSize", "type": "i64" }, { "name": "maintAssetWeight", "type": { "defined": "I80F48" } }, { "name": "initAssetWeight", "type": { "defined": "I80F48" } }, { "name": "maintLiabWeight", "type": { "defined": "I80F48" } }, { "name": "initLiabWeight", "type": { "defined": "I80F48" } }, { "name": "liquidationFee", "type": { "defined": "I80F48" } }, { "name": "makerFee", "type": { "defined": "I80F48" } }, { "name": "takerFee", "type": { "defined": "I80F48" } }, { "name": "minFunding", "type": { "defined": "I80F48" } }, { "name": "maxFunding", "type": { "defined": "I80F48" } }, { "name": "impactQuantity", "type": "i64" }, { "name": "longFunding", "type": { "defined": "I80F48" } }, { "name": "shortFunding", "type": { "defined": "I80F48" } }, { "name": "fundingLastUpdated", "type": "i64" }, { "name": "openInterest", "type": "i64" }, { "name": "seqNum", "type": "u64" }, { "name": "feesAccrued", "type": { "defined": "I80F48" } }, { "name": "bump", "type": "u8" }, { "name": "reserved", "type": { "array": [ "u8", 1 ] } }, { "name": "perpMarketIndex", "type": "u16" }, { "name": "baseTokenIndex", "type": "u16" }, { "name": "quoteTokenIndex", "type": "u16" } ] } }, { "name": "serum3Market", "type": { "kind": "struct", "fields": [ { "name": "name", "type": { "array": [ "u8", 16 ] } }, { "name": "group", "type": "publicKey" }, { "name": "serumProgram", "type": "publicKey" }, { "name": "serumMarketExternal", "type": "publicKey" }, { "name": "marketIndex", "type": "u16" }, { "name": "baseTokenIndex", "type": "u16" }, { "name": "quoteTokenIndex", "type": "u16" }, { "name": "bump", "type": "u8" }, { "name": "reserved", "type": { "array": [ "u8", 1 ] } } ] } } ], "types": [ { "name": "InterestRateParams", "type": { "kind": "struct", "fields": [ { "name": "util0", "type": "f32" }, { "name": "rate0", "type": "f32" }, { "name": "util1", "type": "f32" }, { "name": "rate1", "type": "f32" }, { "name": "maxRate", "type": "f32" } ] } }, { "name": "TokenAccount", "type": { "kind": "struct", "fields": [ { "name": "indexedValue", "type": { "defined": "I80F48" } }, { "name": "tokenIndex", "type": "u16" }, { "name": "inUseCount", "type": "u8" }, { "name": "reserved", "type": { "array": [ "u8", 5 ] } } ] } }, { "name": "MangoAccountTokens", "type": { "kind": "struct", "fields": [ { "name": "values", "type": { "array": [ { "defined": "TokenAccount" }, 16 ] } } ] } }, { "name": "Serum3Account", "type": { "kind": "struct", "fields": [ { "name": "openOrders", "type": "publicKey" }, { "name": "marketIndex", "type": "u16" }, { "name": "baseTokenIndex", "type": "u16" }, { "name": "quoteTokenIndex", "type": "u16" }, { "name": "reserved", "type": { "array": [ "u8", 2 ] } } ] } }, { "name": "MangoAccountSerum3", "type": { "kind": "struct", "fields": [ { "name": "values", "type": { "array": [ { "defined": "Serum3Account" }, 8 ] } } ] } }, { "name": "PerpAccount", "type": { "kind": "struct", "fields": [ { "name": "marketIndex", "type": "u16" }, { "name": "reserved", "type": { "array": [ "u8", 6 ] } }, { "name": "basePositionLots", "type": "i64" }, { "name": "quotePositionNative", "type": { "defined": "I80F48" } }, { "name": "longSettledFunding", "type": { "defined": "I80F48" } }, { "name": "shortSettledFunding", "type": { "defined": "I80F48" } }, { "name": "bidsBaseLots", "type": "i64" }, { "name": "asksBaseLots", "type": "i64" }, { "name": "takerBaseLots", "type": "i64" }, { "name": "takerQuoteLots", "type": "i64" } ] } }, { "name": "MangoAccountPerps", "type": { "kind": "struct", "fields": [ { "name": "accounts", "type": { "array": [ { "defined": "PerpAccount" }, 8 ] } }, { "name": "orderMarket", "type": { "array": [ "u16", 8 ] } }, { "name": "orderSide", "type": { "array": [ { "defined": "Side" }, 8 ] } }, { "name": "orderId", "type": { "array": [ "i128", 8 ] } }, { "name": "clientOrderId", "type": { "array": [ "u64", 8 ] } } ] } }, { "name": "AnyNode", "type": { "kind": "struct", "fields": [ { "name": "tag", "type": "u32" }, { "name": "data", "type": { "array": [ "u8", 84 ] } } ] } }, { "name": "EventQueueHeader", "type": { "kind": "struct", "fields": [ { "name": "head", "type": "u64" }, { "name": "count", "type": "u64" }, { "name": "seqNum", "type": "u64" } ] } }, { "name": "AnyEvent", "type": { "kind": "struct", "fields": [ { "name": "eventType", "type": "u8" }, { "name": "padding", "type": { "array": [ "u8", 199 ] } } ] } }, { "name": "TokenIndex", "type": { "kind": "struct", "fields": [ { "name": "val", "type": "u16" } ] } }, { "name": "Serum3MarketIndex", "type": { "kind": "struct", "fields": [ { "name": "val", "type": "u16" } ] } }, { "name": "PerpMarketIndex", "type": { "kind": "struct", "fields": [ { "name": "val", "type": "u16" } ] } }, { "name": "I80F48", "type": { "kind": "struct", "fields": [ { "name": "val", "type": "i128" } ] } }, { "name": "ProgramInstruction", "type": { "kind": "enum", "variants": [ { "name": "CreateLookupTable", "fields": [ { "name": "recent_slot", "type": { "defined": "Slot" } }, { "name": "bump_seed", "type": "u8" } ] }, { "name": "FreezeLookupTable" }, { "name": "ExtendLookupTable", "fields": [ { "name": "new_addresses", "type": { "vec": "publicKey" } } ] }, { "name": "DeactivateLookupTable" }, { "name": "CloseLookupTable" } ] } }, { "name": "Serum3SelfTradeBehavior", "type": { "kind": "enum", "variants": [ { "name": "DecrementTake" }, { "name": "CancelProvide" }, { "name": "AbortTransaction" } ] } }, { "name": "Serum3OrderType", "type": { "kind": "enum", "variants": [ { "name": "Limit" }, { "name": "ImmediateOrCancel" }, { "name": "PostOnly" } ] } }, { "name": "Serum3Side", "type": { "kind": "enum", "variants": [ { "name": "Bid" }, { "name": "Ask" } ] } }, { "name": "HealthType", "type": { "kind": "enum", "variants": [ { "name": "Init" }, { "name": "Maint" } ] } }, { "name": "OracleType", "type": { "kind": "enum", "variants": [ { "name": "Stub" }, { "name": "Pyth" } ] } }, { "name": "BookSideType", "type": { "kind": "enum", "variants": [ { "name": "Bids" }, { "name": "Asks" } ] } }, { "name": "NodeTag", "type": { "kind": "enum", "variants": [ { "name": "Uninitialized" }, { "name": "InnerNode" }, { "name": "LeafNode" }, { "name": "FreeNode" }, { "name": "LastFreeNode" } ] } }, { "name": "NodeRef", "type": { "kind": "enum", "variants": [ { "name": "Inner", "fields": [ { "defined": "&'aInnerNode" } ] }, { "name": "Leaf", "fields": [ { "defined": "&'aLeafNode" } ] } ] } }, { "name": "NodeRefMut", "type": { "kind": "enum", "variants": [ { "name": "Inner", "fields": [ { "defined": "&'amutInnerNode" } ] }, { "name": "Leaf", "fields": [ { "defined": "&'amutLeafNode" } ] } ] } }, { "name": "OrderType", "type": { "kind": "enum", "variants": [ { "name": "Limit" }, { "name": "ImmediateOrCancel" }, { "name": "PostOnly" }, { "name": "Market" }, { "name": "PostOnlySlide" } ] } }, { "name": "Side", "type": { "kind": "enum", "variants": [ { "name": "Bid" }, { "name": "Ask" } ] } }, { "name": "EventType", "type": { "kind": "enum", "variants": [ { "name": "Fill" }, { "name": "Out" }, { "name": "Liquidate" } ] } } ], "errors": [ { "code": 6000, "name": "SomeError", "msg": "" }, { "code": 6001, "name": "MathError", "msg": "" }, { "code": 6002, "name": "UnexpectedOracle", "msg": "" }, { "code": 6003, "name": "UnknownOracleType", "msg": "" }, { "code": 6004, "name": "InvalidMarginTradeTargetCpiProgram", "msg": "" }, { "code": 6005, "name": "HealthMustBePositive", "msg": "" }, { "code": 6006, "name": "IsBankrupt", "msg": "The account is bankrupt" } ] };