mango-v4/ts/mango_v4.ts

4324 lines
82 KiB
TypeScript

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: 'createStubOracle';
accounts: [
{
name: 'oracle';
isMut: true;
isSigner: false;
pda: {
seeds: [
{
kind: 'const';
type: 'string';
value: 'StubOracle';
},
{
kind: 'account';
type: 'publicKey';
account: 'Mint';
path: 'token_mint';
},
];
};
},
{
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: 'oracle';
isMut: true;
isSigner: false;
},
];
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: [
{
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: [
{
name: 'order';
type: {
defined: 'instructions::NewOrderInstructionData';
};
},
];
},
{
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: 'order';
type: {
defined: 'instructions::CancelOrderInstructionData';
};
},
];
},
{
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: 'createPerpMarket';
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: 'placePerpOrder';
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: 'price';
type: 'i64';
},
{
name: 'maxBaseQuantity';
type: 'i64';
},
{
name: 'maxQuoteQuantity';
type: 'i64';
},
{
name: 'clientOrderId';
type: 'u64';
},
{
name: 'orderType';
type: {
defined: 'OrderType';
};
},
{
name: 'expiryTimestamp';
type: 'u64';
},
{
name: 'limit';
type: 'u8';
},
];
},
{
name: 'consumeEvents';
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: '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: 'mangoAccount';
type: {
kind: 'struct';
fields: [
{
name: 'group';
type: 'publicKey';
},
{
name: 'owner';
type: 'publicKey';
},
{
name: 'delegate';
type: 'publicKey';
},
{
name: 'tokenAccountMap';
type: {
defined: 'TokenAccountMap';
};
},
{
name: 'serum3AccountMap';
type: {
defined: 'Serum3AccountMap';
};
},
{
name: 'perpAccountMap';
type: {
defined: 'PerpAccountMap';
};
},
{
name: 'orderMarket';
type: {
array: ['u16', 8];
};
},
{
name: 'orderSide';
type: {
array: [
{
defined: 'Side';
},
8,
];
};
},
{
name: 'orders';
type: {
array: ['i128', 8];
};
},
{
name: 'clientOrderIds';
type: {
array: ['u64', 8];
};
},
{
name: 'beingLiquidated';
type: 'u8';
},
{
name: 'isBankrupt';
type: 'u8';
},
{
name: 'accountNum';
type: 'u8';
},
{
name: 'bump';
type: 'u8';
},
{
name: 'reserved';
type: {
array: ['u8', 5];
};
},
];
};
},
{
name: 'mintInfo';
type: {
kind: 'struct';
fields: [
{
name: 'mint';
type: 'publicKey';
},
{
name: 'bank';
type: 'publicKey';
},
{
name: 'vault';
type: 'publicKey';
},
{
name: 'oracle';
type: 'publicKey';
},
{
name: 'tokenIndex';
type: 'u16';
},
{
name: 'addressLookupTable';
type: 'publicKey';
},
{
name: 'addressLookupTableBankIndex';
type: 'u8';
},
{
name: 'addressLookupTableOracleIndex';
type: 'u8';
},
];
};
},
{
name: 'stubOracle';
type: {
kind: 'struct';
fields: [
{
name: 'price';
type: {
defined: 'I80F48';
};
},
{
name: 'lastUpdated';
type: 'i64';
},
];
};
},
{
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';
},
];
};
},
];
types: [
{
name: 'TokenAccount';
type: {
kind: 'struct';
fields: [
{
name: 'indexedValue';
type: {
defined: 'I80F48';
};
},
{
name: 'tokenIndex';
type: 'u16';
},
{
name: 'inUseCount';
type: 'u8';
},
];
};
},
{
name: 'TokenAccountMap';
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: 'Serum3AccountMap';
type: {
kind: 'struct';
fields: [
{
name: 'values';
type: {
array: [
{
defined: 'Serum3Account';
},
8,
];
};
},
];
};
},
{
name: 'PerpAccount';
type: {
kind: 'struct';
fields: [
{
name: 'marketIndex';
type: 'u16';
},
{
name: 'basePosition';
type: 'i64';
},
{
name: 'quotePosition';
type: {
defined: 'I80F48';
};
},
{
name: 'bidsQuantity';
type: 'i64';
},
{
name: 'asksQuantity';
type: 'i64';
},
{
name: 'takerBase';
type: 'i64';
},
{
name: 'takerQuote';
type: 'i64';
},
];
};
},
{
name: 'PerpAccountMap';
type: {
kind: 'struct';
fields: [
{
name: 'values';
type: {
array: [
{
defined: 'PerpAccount';
},
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: '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: 'createStubOracle',
accounts: [
{
name: 'oracle',
isMut: true,
isSigner: false,
pda: {
seeds: [
{
kind: 'const',
type: 'string',
value: 'StubOracle',
},
{
kind: 'account',
type: 'publicKey',
account: 'Mint',
path: 'token_mint',
},
],
},
},
{
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: 'oracle',
isMut: true,
isSigner: false,
},
],
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: [
{
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: [
{
name: 'order',
type: {
defined: 'instructions::NewOrderInstructionData',
},
},
],
},
{
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: 'order',
type: {
defined: 'instructions::CancelOrderInstructionData',
},
},
],
},
{
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: 'createPerpMarket',
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: 'placePerpOrder',
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: 'price',
type: 'i64',
},
{
name: 'maxBaseQuantity',
type: 'i64',
},
{
name: 'maxQuoteQuantity',
type: 'i64',
},
{
name: 'clientOrderId',
type: 'u64',
},
{
name: 'orderType',
type: {
defined: 'OrderType',
},
},
{
name: 'expiryTimestamp',
type: 'u64',
},
{
name: 'limit',
type: 'u8',
},
],
},
{
name: 'consumeEvents',
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: '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: 'mangoAccount',
type: {
kind: 'struct',
fields: [
{
name: 'group',
type: 'publicKey',
},
{
name: 'owner',
type: 'publicKey',
},
{
name: 'delegate',
type: 'publicKey',
},
{
name: 'tokenAccountMap',
type: {
defined: 'TokenAccountMap',
},
},
{
name: 'serum3AccountMap',
type: {
defined: 'Serum3AccountMap',
},
},
{
name: 'perpAccountMap',
type: {
defined: 'PerpAccountMap',
},
},
{
name: 'orderMarket',
type: {
array: ['u16', 8],
},
},
{
name: 'orderSide',
type: {
array: [
{
defined: 'Side',
},
8,
],
},
},
{
name: 'orders',
type: {
array: ['i128', 8],
},
},
{
name: 'clientOrderIds',
type: {
array: ['u64', 8],
},
},
{
name: 'beingLiquidated',
type: 'u8',
},
{
name: 'isBankrupt',
type: 'u8',
},
{
name: 'accountNum',
type: 'u8',
},
{
name: 'bump',
type: 'u8',
},
{
name: 'reserved',
type: {
array: ['u8', 5],
},
},
],
},
},
{
name: 'mintInfo',
type: {
kind: 'struct',
fields: [
{
name: 'mint',
type: 'publicKey',
},
{
name: 'bank',
type: 'publicKey',
},
{
name: 'vault',
type: 'publicKey',
},
{
name: 'oracle',
type: 'publicKey',
},
{
name: 'tokenIndex',
type: 'u16',
},
{
name: 'addressLookupTable',
type: 'publicKey',
},
{
name: 'addressLookupTableBankIndex',
type: 'u8',
},
{
name: 'addressLookupTableOracleIndex',
type: 'u8',
},
],
},
},
{
name: 'stubOracle',
type: {
kind: 'struct',
fields: [
{
name: 'price',
type: {
defined: 'I80F48',
},
},
{
name: 'lastUpdated',
type: 'i64',
},
],
},
},
{
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',
},
],
},
},
],
types: [
{
name: 'TokenAccount',
type: {
kind: 'struct',
fields: [
{
name: 'indexedValue',
type: {
defined: 'I80F48',
},
},
{
name: 'tokenIndex',
type: 'u16',
},
{
name: 'inUseCount',
type: 'u8',
},
],
},
},
{
name: 'TokenAccountMap',
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: 'Serum3AccountMap',
type: {
kind: 'struct',
fields: [
{
name: 'values',
type: {
array: [
{
defined: 'Serum3Account',
},
8,
],
},
},
],
},
},
{
name: 'PerpAccount',
type: {
kind: 'struct',
fields: [
{
name: 'marketIndex',
type: 'u16',
},
{
name: 'basePosition',
type: 'i64',
},
{
name: 'quotePosition',
type: {
defined: 'I80F48',
},
},
{
name: 'bidsQuantity',
type: 'i64',
},
{
name: 'asksQuantity',
type: 'i64',
},
{
name: 'takerBase',
type: 'i64',
},
{
name: 'takerQuote',
type: 'i64',
},
],
},
},
{
name: 'PerpAccountMap',
type: {
kind: 'struct',
fields: [
{
name: 'values',
type: {
array: [
{
defined: 'PerpAccount',
},
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: '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',
},
],
};