4716 lines
89 KiB
TypeScript
4716 lines
89 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: '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: {
|
|
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: '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: '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';
|
|
},
|
|
{
|
|
name: 'price';
|
|
type: {
|
|
defined: 'I80F48';
|
|
};
|
|
},
|
|
{
|
|
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';
|
|
},
|
|
{
|
|
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: '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: '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,
|
|
},
|
|
{
|
|
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: {
|
|
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: '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: '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',
|
|
},
|
|
{
|
|
name: 'price',
|
|
type: {
|
|
defined: 'I80F48',
|
|
},
|
|
},
|
|
{
|
|
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',
|
|
},
|
|
{
|
|
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: '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: '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',
|
|
},
|
|
],
|
|
};
|