mango-v4/ts/mango_v4.ts

4716 lines
89 KiB
TypeScript
Raw Normal View History

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: 'maintAssetWeight';
type: 'f32';
},
{
name: 'initAssetWeight';
type: 'f32';
},
{
name: 'maintLiabWeight';
type: 'f32';
},
{
name: 'initLiabWeight';
type: 'f32';
},
{
name: 'liquidationFee';
type: 'f32';
},
];
},
{
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: '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;
},
2022-03-31 06:58:12 -07:00
{
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;
2022-03-31 02:15:39 -07:00
},
{
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;
},
2022-03-31 02:15:39 -07:00
{
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: {
defined: 'usize';
};
},
{
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: [
2022-03-31 02:15:39 -07:00
{
name: 'marketIndex';
type: 'u16';
},
];
},
{
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: [
2022-03-31 06:58:12 -07:00
{
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: [
2022-03-31 06:58:12 -07:00
{
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: '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: '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: 'perpConsumeEvents';
accounts: [
{
name: 'group';
isMut: false;
isSigner: false;
},
{
name: 'perpMarket';
isMut: true;
isSigner: false;
2022-03-31 02:15:39 -07:00
},
{
name: 'eventQueue';
isMut: true;
isSigner: false;
},
];
args: [
{
name: 'limit';
type: {
defined: 'usize';
};
},
];
},
{
name: 'benchmark';
accounts: [];
args: [];
},
];
accounts: [
{
name: 'bank';
type: {
kind: 'struct';
fields: [
{
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: '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: 'bookSide';
type: {
kind: 'struct';
fields: [
{
name: 'bookSideType';
type: {
defined: 'BookSideType';
};
},
{
name: 'bumpIndex';
type: {
defined: 'usize';
};
},
{
name: 'freeListLen';
type: {
defined: 'usize';
};
},
{
name: 'freeListHead';
type: {
defined: 'NodeHandle';
};
},
{
name: 'rootNode';
type: {
defined: 'NodeHandle';
};
},
{
name: 'leafCount';
type: {
defined: 'usize';
};
},
{
name: 'nodes';
type: {
array: [
{
defined: 'AnyNode';
},
1024,
];
};
},
];
};
},
{
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: '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: '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';
},
2022-03-31 06:58:12 -07:00
{
name: 'price';
type: {
defined: 'I80F48';
};
2022-03-31 06:58:12 -07:00
},
{
name: 'lastUpdated';
type: 'i64';
},
{
name: 'reserved';
type: {
array: ['u8', 8];
};
},
];
};
},
{
name: 'perpMarket';
type: {
kind: 'struct';
fields: [
{
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: 'openInterest';
type: 'i64';
},
{
name: 'seqNum';
type: 'u64';
},
{
name: 'feesAccrued';
type: {
defined: 'I80F48';
};
},
{
name: 'bump';
type: 'u8';
},
{
name: 'perpMarketIndex';
type: 'u16';
},
{
name: 'baseTokenIndex';
type: 'u16';
},
{
name: 'quoteTokenIndex';
type: 'u16';
},
];
};
},
{
name: 'queue';
type: {
kind: 'struct';
fields: [
{
name: 'header';
type: {
defined: 'H';
};
},
{
name: 'buf';
type: {
array: [
{
defined: 'H::Item';
},
512,
];
};
},
];
};
},
{
name: 'eventQueueHeader';
type: {
kind: 'struct';
fields: [
{
name: 'head';
type: {
defined: 'usize';
};
},
{
name: 'count';
type: {
defined: 'usize';
};
},
{
name: 'seqNum';
type: {
defined: 'usize';
};
},
];
};
},
{
name: 'serum3Market';
type: {
kind: 'struct';
fields: [
{
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: 'TokenAccount';
type: {
kind: 'struct';
fields: [
2022-03-31 06:58:12 -07:00
{
name: 'indexedValue';
type: {
defined: 'I80F48';
};
},
{
name: 'tokenIndex';
type: 'u16';
},
{
name: 'inUseCount';
type: 'u8';
2022-03-31 02:15:39 -07:00
},
2022-03-31 06:58:12 -07:00
{
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';
2022-03-31 02:15:39 -07:00
},
2022-03-31 06:58:12 -07:00
{
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: 'bidsBaseLots';
type: 'i64';
},
{
name: 'asksBaseLots';
type: 'i64';
},
{
name: 'takerBaseLots';
type: 'i64';
2022-03-31 02:15:39 -07:00
},
2022-03-31 06:58:12 -07:00
{
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: 'orderClientId';
type: {
array: ['u64', 8];
};
},
];
};
},
{
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: 'BookSideType';
type: {
kind: 'enum';
variants: [
{
name: 'Bids';
},
{
name: 'Asks';
},
];
};
},
{
name: 'HealthType';
type: {
kind: 'enum';
variants: [
{
name: 'Init';
},
{
name: 'Maint';
},
];
};
},
{
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: 'OracleType';
type: {
kind: 'enum';
variants: [
{
name: 'Stub';
},
{
name: 'Pyth';
},
];
};
},
{
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';
},
];
};
},
{
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: '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';
},
];
};
},
];
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: 'maintAssetWeight',
type: 'f32',
},
{
name: 'initAssetWeight',
type: 'f32',
},
{
name: 'maintLiabWeight',
type: 'f32',
},
{
name: 'initLiabWeight',
type: 'f32',
},
{
name: 'liquidationFee',
type: 'f32',
},
],
},
{
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: '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,
},
2022-03-31 06:58:12 -07:00
{
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,
2022-03-31 02:15:39 -07:00
},
{
name: 'tokenMint',
isMut: false,
isSigner: false,
},
2022-03-31 02:15:39 -07:00
{
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,
},
2022-03-31 02:15:39 -07:00
{
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: {
defined: 'usize',
},
},
{
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,
},
2022-03-31 02:15:39 -07:00
],
args: [
2022-03-31 02:15:39 -07:00
{
name: 'marketIndex',
type: 'u16',
},
],
},
{
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,
2022-03-31 02:15:39 -07:00
},
{
name: 'tokenProgram',
isMut: false,
isSigner: false,
},
],
args: [
2022-03-31 06:58:12 -07:00
{
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: [
2022-03-31 06:58:12 -07:00
{
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: '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: '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: 'perpConsumeEvents',
accounts: [
{
name: 'group',
isMut: false,
isSigner: false,
},
{
name: 'perpMarket',
isMut: true,
isSigner: false,
},
{
name: 'eventQueue',
isMut: true,
isSigner: false,
},
],
args: [
{
name: 'limit',
type: {
defined: 'usize',
},
},
],
},
{
name: 'benchmark',
accounts: [],
args: [],
},
],
accounts: [
{
name: 'bank',
type: {
kind: 'struct',
fields: [
{
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: '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: 'bookSide',
type: {
kind: 'struct',
fields: [
{
name: 'bookSideType',
type: {
defined: 'BookSideType',
},
},
{
name: 'bumpIndex',
type: {
defined: 'usize',
},
},
{
name: 'freeListLen',
type: {
defined: 'usize',
},
},
{
name: 'freeListHead',
type: {
defined: 'NodeHandle',
},
},
{
name: 'rootNode',
type: {
defined: 'NodeHandle',
},
},
{
name: 'leafCount',
type: {
defined: 'usize',
},
},
{
name: 'nodes',
type: {
array: [
{
defined: 'AnyNode',
},
1024,
],
},
},
],
},
},
{
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: '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: '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',
},
2022-03-31 06:58:12 -07:00
{
name: 'price',
type: {
defined: 'I80F48',
},
2022-03-31 06:58:12 -07:00
},
{
name: 'lastUpdated',
type: 'i64',
},
{
name: 'reserved',
type: {
array: ['u8', 8],
},
},
],
},
},
{
name: 'perpMarket',
type: {
kind: 'struct',
fields: [
{
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: 'openInterest',
type: 'i64',
},
{
name: 'seqNum',
type: 'u64',
},
{
name: 'feesAccrued',
type: {
defined: 'I80F48',
},
},
{
name: 'bump',
type: 'u8',
},
{
name: 'perpMarketIndex',
type: 'u16',
},
{
name: 'baseTokenIndex',
type: 'u16',
},
{
name: 'quoteTokenIndex',
type: 'u16',
},
],
},
},
{
name: 'queue',
type: {
kind: 'struct',
fields: [
{
name: 'header',
type: {
defined: 'H',
},
},
{
name: 'buf',
type: {
array: [
{
defined: 'H::Item',
},
512,
],
},
},
],
},
},
{
name: 'eventQueueHeader',
type: {
kind: 'struct',
fields: [
{
name: 'head',
type: {
defined: 'usize',
},
},
{
name: 'count',
type: {
defined: 'usize',
},
},
{
name: 'seqNum',
type: {
defined: 'usize',
},
},
],
},
},
{
name: 'serum3Market',
type: {
kind: 'struct',
fields: [
{
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: 'TokenAccount',
type: {
kind: 'struct',
fields: [
{
name: 'indexedValue',
type: {
defined: 'I80F48',
},
},
{
name: 'tokenIndex',
type: 'u16',
},
{
name: 'inUseCount',
type: 'u8',
2022-03-31 02:15:39 -07:00
},
2022-03-31 06:58:12 -07:00
{
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',
2022-03-31 02:15:39 -07:00
},
2022-03-31 06:58:12 -07:00
{
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: 'bidsBaseLots',
type: 'i64',
},
{
name: 'asksBaseLots',
type: 'i64',
},
{
name: 'takerBaseLots',
type: 'i64',
2022-03-31 02:15:39 -07:00
},
2022-03-31 06:58:12 -07:00
{
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: 'orderClientId',
type: {
array: ['u64', 8],
},
},
],
},
},
{
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: 'BookSideType',
type: {
kind: 'enum',
variants: [
{
name: 'Bids',
},
{
name: 'Asks',
},
],
},
},
{
name: 'HealthType',
type: {
kind: 'enum',
variants: [
{
name: 'Init',
},
{
name: 'Maint',
},
],
},
},
{
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: 'OracleType',
type: {
kind: 'enum',
variants: [
{
name: 'Stub',
},
{
name: 'Pyth',
},
],
},
},
{
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',
},
],
},
},
{
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: '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',
},
],
},
},
],
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',
},
],
};