From 52e2495356ce2ebbd07e7ccba48733f864e10868 Mon Sep 17 00:00:00 2001 From: microwavedcola1 Date: Sun, 3 Apr 2022 20:08:56 +0200 Subject: [PATCH] generic derivation of health metas Signed-off-by: microwavedcola1 --- ts/accounts/types/bank.ts | 21 +- ts/accounts/types/mangoAccount.ts | 1 + ts/example.ts | 46 +- ts/mango_v4.ts | 6148 +++++++++++++++-------------- 4 files changed, 3168 insertions(+), 3048 deletions(-) diff --git a/ts/accounts/types/bank.ts b/ts/accounts/types/bank.ts index fd9e577d0..daf1ab0f2 100644 --- a/ts/accounts/types/bank.ts +++ b/ts/accounts/types/bank.ts @@ -9,7 +9,8 @@ import { import { MangoClient } from '../../client'; import { debugAccountMetas } from '../../utils'; import bs58 from 'bs58'; -import { BorshAccountsCoder } from '@project-serum/anchor'; +import { BorshAccountsCoder, ProgramAccount } from '@project-serum/anchor'; +import { group } from 'console'; export class Bank { public depositIndex: I80F48; @@ -197,30 +198,36 @@ export class MintInfo { constructor( public publicKey: PublicKey, - mint: PublicKey, - bank: PublicKey, - vault: PublicKey, - oracle: PublicKey, + public mint: PublicKey, + public bank: PublicKey, + public vault: PublicKey, + public oracle: PublicKey, ) {} } export async function getMintInfoForTokenIndex( client: MangoClient, + groupPk: PublicKey, tokenIndex: number, ): Promise { const tokenIndexBuf = Buffer.alloc(2); tokenIndexBuf.writeUInt16LE(tokenIndex); return ( await client.program.account.mintInfo.all([ + { + memcmp: { + bytes: groupPk.toBase58(), + offset: 8, + }, + }, { memcmp: { bytes: bs58.encode(tokenIndexBuf), - offset: 168, + offset: 200, }, }, ]) ).map((tuple) => { - console.log(tuple); return MintInfo.from(tuple.publicKey, tuple.account); }); } diff --git a/ts/accounts/types/mangoAccount.ts b/ts/accounts/types/mangoAccount.ts index 58643428a..1916457dc 100644 --- a/ts/accounts/types/mangoAccount.ts +++ b/ts/accounts/types/mangoAccount.ts @@ -105,6 +105,7 @@ export class TokenAccountDto { } export class Serum3Account { + static Serum3MarketIndexUnset = 65535; static from(dto: Serum3AccountDto) { return new Serum3Account( dto.openOrders, diff --git a/ts/example.ts b/ts/example.ts index 527d79ca1..0c888d41c 100644 --- a/ts/example.ts +++ b/ts/example.ts @@ -31,6 +31,7 @@ import { getStubOracleForGroupAndMint, StubOracle, } from './accounts/types/oracle'; +import { assert } from 'console'; async function main() { // @@ -223,13 +224,44 @@ async function main() { user.publicKey, ); - const healthRemainingAccounts = [ - usdcBank.publicKey, - btcBank.publicKey, - usdcDevnetStubOracle.publicKey, - btcDevnetOracle, - mangoAccount.serum3[0].openOrders, - ]; + // Aggregate all PKs of users active assets, banks, oracles and serum OOs + const healthRemainingAccounts: PublicKey[] = []; + { + const mintInfos = await Promise.all( + mangoAccount.tokens + .filter((token) => token.tokenIndex !== 65535) + .map(async (token) => + getMintInfoForTokenIndex( + userClient, + group.publicKey, + token.tokenIndex, + ), + ), + ); + // banks + healthRemainingAccounts.push( + ...mintInfos.flatMap((mintinfos) => { + return mintinfos.flatMap((mintinfo) => { + return mintinfo.bank; + }); + }), + ); + // oracles + healthRemainingAccounts.push( + ...mintInfos.flatMap((mintinfos) => { + return mintinfos.flatMap((mintinfo) => { + return mintinfo.oracle; + }); + }), + ); + // serum OOs + healthRemainingAccounts.push( + ...mangoAccount.serum3 + .filter((serum3Account) => serum3Account.marketIndex !== 65535) + .map((serum3Account) => serum3Account.openOrders), + ); + } + await deposit( userClient, group.publicKey, diff --git a/ts/mango_v4.ts b/ts/mango_v4.ts index fc1e6a78d..194c59e3c 100644 --- a/ts/mango_v4.ts +++ b/ts/mango_v4.ts @@ -1,4715 +1,4795 @@ export type MangoV4 = { - version: '0.1.0'; - name: 'mango_v4'; - instructions: [ + "version": "0.1.0", + "name": "mango_v4", + "instructions": [ { - name: 'createGroup'; - accounts: [ + "name": "createGroup", + "accounts": [ { - name: 'group'; - isMut: true; - isSigner: false; - pda: { - seeds: [ + "name": "group", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'const'; - type: 'string'; - value: 'Group'; + "kind": "const", + "type": "string", + "value": "Group" }, { - kind: 'account'; - type: 'publicKey'; - path: 'admin'; - }, - ]; - }; + "kind": "account", + "type": "publicKey", + "path": "admin" + } + ] + } }, { - name: 'admin'; - isMut: false; - isSigner: true; + "name": "admin", + "isMut": false, + "isSigner": true }, { - name: 'payer'; - isMut: true; - isSigner: true; + "name": "payer", + "isMut": true, + "isSigner": true }, { - name: 'systemProgram'; - isMut: false; - isSigner: false; - }, - ]; - args: []; + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [] }, { - name: 'registerToken'; - accounts: [ + "name": "registerToken", + "accounts": [ { - name: 'group'; - isMut: false; - isSigner: false; + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'admin'; - isMut: false; - isSigner: true; + "name": "admin", + "isMut": false, + "isSigner": true }, { - name: 'mint'; - isMut: false; - isSigner: false; + "name": "mint", + "isMut": false, + "isSigner": false }, { - name: 'bank'; - isMut: true; - isSigner: false; - pda: { - seeds: [ + "name": "bank", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'account'; - type: 'publicKey'; - path: 'group'; + "kind": "account", + "type": "publicKey", + "path": "group" }, { - kind: 'const'; - type: 'string'; - value: 'Bank'; + "kind": "const", + "type": "string", + "value": "Bank" }, { - kind: 'arg'; - type: 'u16'; - path: 'token_index'; - }, - ]; - }; + "kind": "arg", + "type": "u16", + "path": "token_index" + } + ] + } }, { - name: 'vault'; - isMut: true; - isSigner: false; - pda: { - seeds: [ + "name": "vault", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'account'; - type: 'publicKey'; - path: 'group'; + "kind": "account", + "type": "publicKey", + "path": "group" }, { - kind: 'const'; - type: 'string'; - value: 'Vault'; + "kind": "const", + "type": "string", + "value": "Vault" }, { - kind: 'arg'; - type: 'u16'; - path: 'token_index'; - }, - ]; - }; + "kind": "arg", + "type": "u16", + "path": "token_index" + } + ] + } }, { - name: 'mintInfo'; - isMut: true; - isSigner: false; - pda: { - seeds: [ + "name": "mintInfo", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'account'; - type: 'publicKey'; - path: 'group'; + "kind": "account", + "type": "publicKey", + "path": "group" }, { - kind: 'const'; - type: 'string'; - value: 'MintInfo'; + "kind": "const", + "type": "string", + "value": "MintInfo" }, { - kind: 'account'; - type: 'publicKey'; - account: 'Mint'; - path: 'mint'; - }, - ]; - }; + "kind": "account", + "type": "publicKey", + "account": "Mint", + "path": "mint" + } + ] + } }, { - name: 'oracle'; - isMut: false; - isSigner: false; + "name": "oracle", + "isMut": false, + "isSigner": false }, { - name: 'payer'; - isMut: true; - isSigner: true; + "name": "payer", + "isMut": true, + "isSigner": true }, { - name: 'tokenProgram'; - isMut: false; - isSigner: false; + "name": "tokenProgram", + "isMut": false, + "isSigner": false }, { - name: 'systemProgram'; - isMut: false; - isSigner: false; + "name": "systemProgram", + "isMut": false, + "isSigner": false }, { - name: 'rent'; - isMut: false; - isSigner: false; - }, - ]; - args: [ + "name": "rent", + "isMut": false, + "isSigner": false + } + ], + "args": [ { - name: 'tokenIndex'; - type: 'u16'; + "name": "tokenIndex", + "type": "u16" }, { - name: 'maintAssetWeight'; - type: 'f32'; + "name": "maintAssetWeight", + "type": "f32" }, { - name: 'initAssetWeight'; - type: 'f32'; + "name": "initAssetWeight", + "type": "f32" }, { - name: 'maintLiabWeight'; - type: 'f32'; + "name": "maintLiabWeight", + "type": "f32" }, { - name: 'initLiabWeight'; - type: 'f32'; + "name": "initLiabWeight", + "type": "f32" }, { - name: 'liquidationFee'; - type: 'f32'; - }, - ]; + "name": "liquidationFee", + "type": "f32" + } + ] }, { - name: 'createAccount'; - accounts: [ + "name": "createAccount", + "accounts": [ { - name: 'group'; - isMut: false; - isSigner: false; + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account'; - isMut: true; - isSigner: false; - pda: { - seeds: [ + "name": "account", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'account'; - type: 'publicKey'; - path: 'group'; + "kind": "account", + "type": "publicKey", + "path": "group" }, { - kind: 'const'; - type: 'string'; - value: 'MangoAccount'; + "kind": "const", + "type": "string", + "value": "MangoAccount" }, { - kind: 'account'; - type: 'publicKey'; - path: 'owner'; + "kind": "account", + "type": "publicKey", + "path": "owner" }, { - kind: 'arg'; - type: 'u8'; - path: 'account_num'; - }, - ]; - }; + "kind": "arg", + "type": "u8", + "path": "account_num" + } + ] + } }, { - name: 'owner'; - isMut: false; - isSigner: true; + "name": "owner", + "isMut": false, + "isSigner": true }, { - name: 'payer'; - isMut: true; - isSigner: true; + "name": "payer", + "isMut": true, + "isSigner": true }, { - name: 'systemProgram'; - isMut: false; - isSigner: false; - }, - ]; - args: [ + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ { - name: 'accountNum'; - type: 'u8'; - }, - ]; + "name": "accountNum", + "type": "u8" + } + ] }, { - name: 'closeAccount'; - accounts: [ + "name": "closeAccount", + "accounts": [ { - name: 'account'; - isMut: true; - isSigner: false; + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'owner'; - isMut: false; - isSigner: true; + "name": "owner", + "isMut": false, + "isSigner": true }, { - name: 'solDestination'; - isMut: true; - isSigner: false; + "name": "solDestination", + "isMut": true, + "isSigner": false }, { - name: 'tokenProgram'; - isMut: false; - isSigner: false; - }, - ]; - args: []; + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [] }, { - name: 'createStubOracle'; - accounts: [ + "name": "createStubOracle", + "accounts": [ { - name: 'group'; - isMut: false; - isSigner: false; + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'oracle'; - isMut: true; - isSigner: false; - pda: { - seeds: [ + "name": "oracle", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'account'; - type: 'publicKey'; - path: 'group'; + "kind": "account", + "type": "publicKey", + "path": "group" }, { - kind: 'const'; - type: 'string'; - value: 'StubOracle'; + "kind": "const", + "type": "string", + "value": "StubOracle" }, { - kind: 'account'; - type: 'publicKey'; - account: 'Mint'; - path: 'token_mint'; - }, - ]; - }; + "kind": "account", + "type": "publicKey", + "account": "Mint", + "path": "token_mint" + } + ] + } }, { - name: 'admin'; - isMut: false; - isSigner: true; + "name": "admin", + "isMut": false, + "isSigner": true }, { - name: 'tokenMint'; - isMut: false; - isSigner: false; + "name": "tokenMint", + "isMut": false, + "isSigner": false }, { - name: 'payer'; - isMut: true; - isSigner: true; + "name": "payer", + "isMut": true, + "isSigner": true }, { - name: 'systemProgram'; - isMut: false; - isSigner: false; - }, - ]; - args: [ + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ { - name: 'price'; - type: { - defined: 'I80F48'; - }; - }, - ]; + "name": "price", + "type": { + "defined": "I80F48" + } + } + ] }, { - name: 'setStubOracle'; - accounts: [ + "name": "setStubOracle", + "accounts": [ { - name: 'group'; - isMut: false; - isSigner: false; + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'admin'; - isMut: false; - isSigner: true; + "name": "admin", + "isMut": false, + "isSigner": true }, { - name: 'oracle'; - isMut: true; - isSigner: false; + "name": "oracle", + "isMut": true, + "isSigner": false }, { - name: 'payer'; - isMut: true; - isSigner: true; - }, - ]; - args: [ + "name": "payer", + "isMut": true, + "isSigner": true + } + ], + "args": [ { - name: 'price'; - type: { - defined: 'I80F48'; - }; - }, - ]; + "name": "price", + "type": { + "defined": "I80F48" + } + } + ] }, { - name: 'deposit'; - accounts: [ + "name": "deposit", + "accounts": [ { - name: 'group'; - isMut: false; - isSigner: false; + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account'; - isMut: true; - isSigner: false; + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'bank'; - isMut: true; - isSigner: false; + "name": "bank", + "isMut": true, + "isSigner": false }, { - name: 'vault'; - isMut: true; - isSigner: false; + "name": "vault", + "isMut": true, + "isSigner": false }, { - name: 'tokenAccount'; - isMut: true; - isSigner: false; + "name": "tokenAccount", + "isMut": true, + "isSigner": false }, { - name: 'tokenAuthority'; - isMut: false; - isSigner: true; + "name": "tokenAuthority", + "isMut": false, + "isSigner": true }, { - name: 'tokenProgram'; - isMut: false; - isSigner: false; - }, - ]; - args: [ + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ { - name: 'amount'; - type: 'u64'; - }, - ]; + "name": "amount", + "type": "u64" + } + ] }, { - name: 'withdraw'; - accounts: [ + "name": "withdraw", + "accounts": [ { - name: 'group'; - isMut: false; - isSigner: false; + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account'; - isMut: true; - isSigner: false; + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'owner'; - isMut: false; - isSigner: true; + "name": "owner", + "isMut": false, + "isSigner": true }, { - name: 'bank'; - isMut: true; - isSigner: false; + "name": "bank", + "isMut": true, + "isSigner": false }, { - name: 'vault'; - isMut: true; - isSigner: false; + "name": "vault", + "isMut": true, + "isSigner": false }, { - name: 'tokenAccount'; - isMut: true; - isSigner: false; + "name": "tokenAccount", + "isMut": true, + "isSigner": false }, { - name: 'tokenProgram'; - isMut: false; - isSigner: false; - }, - ]; - args: [ + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ { - name: 'amount'; - type: 'u64'; + "name": "amount", + "type": "u64" }, { - name: 'allowBorrow'; - type: 'bool'; - }, - ]; + "name": "allowBorrow", + "type": "bool" + } + ] }, { - name: 'marginTrade'; - accounts: [ + "name": "marginTrade", + "accounts": [ { - name: 'group'; - isMut: false; - isSigner: false; + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account'; - isMut: true; - isSigner: false; + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'owner'; - isMut: false; - isSigner: true; - }, - ]; - args: [ + "name": "owner", + "isMut": false, + "isSigner": true + } + ], + "args": [ { - name: 'banksLen'; - type: { - defined: 'usize'; - }; + "name": "banksLen", + "type": { + "defined": "usize" + } }, { - name: 'cpiData'; - type: 'bytes'; - }, - ]; + "name": "cpiData", + "type": "bytes" + } + ] }, { - name: 'serum3RegisterMarket'; - accounts: [ + "name": "serum3RegisterMarket", + "accounts": [ { - name: 'group'; - isMut: true; - isSigner: false; + "name": "group", + "isMut": true, + "isSigner": false }, { - name: 'admin'; - isMut: false; - isSigner: true; + "name": "admin", + "isMut": false, + "isSigner": true }, { - name: 'serumProgram'; - isMut: false; - isSigner: false; + "name": "serumProgram", + "isMut": false, + "isSigner": false }, { - name: 'serumMarketExternal'; - isMut: false; - isSigner: false; + "name": "serumMarketExternal", + "isMut": false, + "isSigner": false }, { - name: 'serumMarket'; - isMut: true; - isSigner: false; - pda: { - seeds: [ + "name": "serumMarket", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'account'; - type: 'publicKey'; - path: 'group'; + "kind": "account", + "type": "publicKey", + "path": "group" }, { - kind: 'const'; - type: 'string'; - value: 'Serum3Market'; + "kind": "const", + "type": "string", + "value": "Serum3Market" }, { - kind: 'account'; - type: 'publicKey'; - path: 'serum_market_external'; - }, - ]; - }; + "kind": "account", + "type": "publicKey", + "path": "serum_market_external" + } + ] + } }, { - name: 'quoteBank'; - isMut: false; - isSigner: false; + "name": "quoteBank", + "isMut": false, + "isSigner": false }, { - name: 'baseBank'; - isMut: false; - isSigner: false; + "name": "baseBank", + "isMut": false, + "isSigner": false }, { - name: 'payer'; - isMut: true; - isSigner: true; + "name": "payer", + "isMut": true, + "isSigner": true }, { - name: 'systemProgram'; - isMut: false; - isSigner: false; - }, - ]; - args: [ + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ { - name: 'marketIndex'; - type: 'u16'; - }, - ]; + "name": "marketIndex", + "type": "u16" + } + ] }, { - name: 'serum3CreateOpenOrders'; - accounts: [ + "name": "serum3CreateOpenOrders", + "accounts": [ { - name: 'group'; - isMut: false; - isSigner: false; + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account'; - isMut: true; - isSigner: false; + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'serumMarket'; - isMut: false; - isSigner: false; + "name": "serumMarket", + "isMut": false, + "isSigner": false }, { - name: 'serumProgram'; - isMut: false; - isSigner: false; + "name": "serumProgram", + "isMut": false, + "isSigner": false }, { - name: 'serumMarketExternal'; - isMut: false; - isSigner: false; + "name": "serumMarketExternal", + "isMut": false, + "isSigner": false }, { - name: 'openOrders'; - isMut: true; - isSigner: false; - pda: { - seeds: [ + "name": "openOrders", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'account'; - type: 'publicKey'; - path: 'account'; + "kind": "account", + "type": "publicKey", + "path": "account" }, { - kind: 'const'; - type: 'string'; - value: 'Serum3OO'; + "kind": "const", + "type": "string", + "value": "Serum3OO" }, { - kind: 'account'; - type: 'publicKey'; - path: 'serum_market'; - }, - ]; - }; + "kind": "account", + "type": "publicKey", + "path": "serum_market" + } + ] + } }, { - name: 'owner'; - isMut: false; - isSigner: true; + "name": "owner", + "isMut": false, + "isSigner": true }, { - name: 'payer'; - isMut: true; - isSigner: true; + "name": "payer", + "isMut": true, + "isSigner": true }, { - name: 'systemProgram'; - isMut: false; - isSigner: false; + "name": "systemProgram", + "isMut": false, + "isSigner": false }, { - name: 'rent'; - isMut: false; - isSigner: false; - }, - ]; - args: []; + "name": "rent", + "isMut": false, + "isSigner": false + } + ], + "args": [] }, { - name: 'serum3PlaceOrder'; - accounts: [ + "name": "serum3PlaceOrder", + "accounts": [ { - name: 'group'; - isMut: false; - isSigner: false; + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account'; - isMut: true; - isSigner: false; + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'owner'; - isMut: false; - isSigner: true; + "name": "owner", + "isMut": false, + "isSigner": true }, { - name: 'openOrders'; - isMut: true; - isSigner: false; + "name": "openOrders", + "isMut": true, + "isSigner": false }, { - name: 'serumMarket'; - isMut: false; - isSigner: false; + "name": "serumMarket", + "isMut": false, + "isSigner": false }, { - name: 'serumProgram'; - isMut: false; - isSigner: false; + "name": "serumProgram", + "isMut": false, + "isSigner": false }, { - name: 'serumMarketExternal'; - isMut: true; - isSigner: false; + "name": "serumMarketExternal", + "isMut": true, + "isSigner": false }, { - name: 'marketBids'; - isMut: true; - isSigner: false; + "name": "marketBids", + "isMut": true, + "isSigner": false }, { - name: 'marketAsks'; - isMut: true; - isSigner: false; + "name": "marketAsks", + "isMut": true, + "isSigner": false }, { - name: 'marketEventQueue'; - isMut: true; - isSigner: false; + "name": "marketEventQueue", + "isMut": true, + "isSigner": false }, { - name: 'marketRequestQueue'; - isMut: true; - isSigner: false; + "name": "marketRequestQueue", + "isMut": true, + "isSigner": false }, { - name: 'marketBaseVault'; - isMut: true; - isSigner: false; + "name": "marketBaseVault", + "isMut": true, + "isSigner": false }, { - name: 'marketQuoteVault'; - isMut: true; - isSigner: false; + "name": "marketQuoteVault", + "isMut": true, + "isSigner": false }, { - name: 'marketVaultSigner'; - isMut: false; - isSigner: false; + "name": "marketVaultSigner", + "isMut": false, + "isSigner": false }, { - name: 'quoteBank'; - isMut: true; - isSigner: false; + "name": "quoteBank", + "isMut": true, + "isSigner": false }, { - name: 'quoteVault'; - isMut: true; - isSigner: false; + "name": "quoteVault", + "isMut": true, + "isSigner": false }, { - name: 'baseBank'; - isMut: true; - isSigner: false; + "name": "baseBank", + "isMut": true, + "isSigner": false }, { - name: 'baseVault'; - isMut: true; - isSigner: false; + "name": "baseVault", + "isMut": true, + "isSigner": false }, { - name: 'tokenProgram'; - isMut: false; - isSigner: false; - }, - ]; - args: [ + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ { - name: 'side'; - type: { - defined: 'Serum3Side'; - }; + "name": "side", + "type": { + "defined": "Serum3Side" + } }, { - name: 'limitPrice'; - type: 'u64'; + "name": "limitPrice", + "type": "u64" }, { - name: 'maxBaseQty'; - type: 'u64'; + "name": "maxBaseQty", + "type": "u64" }, { - name: 'maxNativeQuoteQtyIncludingFees'; - type: 'u64'; + "name": "maxNativeQuoteQtyIncludingFees", + "type": "u64" }, { - name: 'selfTradeBehavior'; - type: { - defined: 'Serum3SelfTradeBehavior'; - }; + "name": "selfTradeBehavior", + "type": { + "defined": "Serum3SelfTradeBehavior" + } }, { - name: 'orderType'; - type: { - defined: 'Serum3OrderType'; - }; + "name": "orderType", + "type": { + "defined": "Serum3OrderType" + } }, { - name: 'clientOrderId'; - type: 'u64'; + "name": "clientOrderId", + "type": "u64" }, { - name: 'limit'; - type: 'u16'; - }, - ]; + "name": "limit", + "type": "u16" + } + ] }, { - name: 'serum3CancelOrder'; - accounts: [ + "name": "serum3CancelOrder", + "accounts": [ { - name: 'group'; - isMut: false; - isSigner: false; + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account'; - isMut: true; - isSigner: false; + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'owner'; - isMut: false; - isSigner: true; + "name": "owner", + "isMut": false, + "isSigner": true }, { - name: 'openOrders'; - isMut: true; - isSigner: false; + "name": "openOrders", + "isMut": true, + "isSigner": false }, { - name: 'serumMarket'; - isMut: false; - isSigner: false; + "name": "serumMarket", + "isMut": false, + "isSigner": false }, { - name: 'serumProgram'; - isMut: false; - isSigner: false; + "name": "serumProgram", + "isMut": false, + "isSigner": false }, { - name: 'serumMarketExternal'; - isMut: true; - isSigner: false; + "name": "serumMarketExternal", + "isMut": true, + "isSigner": false }, { - name: 'marketBids'; - isMut: true; - isSigner: false; + "name": "marketBids", + "isMut": true, + "isSigner": false }, { - name: 'marketAsks'; - isMut: true; - isSigner: false; + "name": "marketAsks", + "isMut": true, + "isSigner": false }, { - name: 'marketEventQueue'; - isMut: true; - isSigner: false; - }, - ]; - args: [ + "name": "marketEventQueue", + "isMut": true, + "isSigner": false + } + ], + "args": [ { - name: 'side'; - type: { - defined: 'Serum3Side'; - }; + "name": "side", + "type": { + "defined": "Serum3Side" + } }, { - name: 'orderId'; - type: 'u128'; - }, - ]; + "name": "orderId", + "type": "u128" + } + ] }, { - name: 'serum3SettleFunds'; - accounts: [ + "name": "serum3SettleFunds", + "accounts": [ { - name: 'group'; - isMut: false; - isSigner: false; + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account'; - isMut: true; - isSigner: false; + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'owner'; - isMut: false; - isSigner: true; + "name": "owner", + "isMut": false, + "isSigner": true }, { - name: 'openOrders'; - isMut: true; - isSigner: false; + "name": "openOrders", + "isMut": true, + "isSigner": false }, { - name: 'serumMarket'; - isMut: false; - isSigner: false; + "name": "serumMarket", + "isMut": false, + "isSigner": false }, { - name: 'serumProgram'; - isMut: false; - isSigner: false; + "name": "serumProgram", + "isMut": false, + "isSigner": false }, { - name: 'serumMarketExternal'; - isMut: true; - isSigner: false; + "name": "serumMarketExternal", + "isMut": true, + "isSigner": false }, { - name: 'marketBaseVault'; - isMut: true; - isSigner: false; + "name": "marketBaseVault", + "isMut": true, + "isSigner": false }, { - name: 'marketQuoteVault'; - isMut: true; - isSigner: false; + "name": "marketQuoteVault", + "isMut": true, + "isSigner": false }, { - name: 'marketVaultSigner'; - isMut: false; - isSigner: false; + "name": "marketVaultSigner", + "isMut": false, + "isSigner": false }, { - name: 'quoteBank'; - isMut: true; - isSigner: false; + "name": "quoteBank", + "isMut": true, + "isSigner": false }, { - name: 'quoteVault'; - isMut: true; - isSigner: false; + "name": "quoteVault", + "isMut": true, + "isSigner": false }, { - name: 'baseBank'; - isMut: true; - isSigner: false; + "name": "baseBank", + "isMut": true, + "isSigner": false }, { - name: 'baseVault'; - isMut: true; - isSigner: false; + "name": "baseVault", + "isMut": true, + "isSigner": false }, { - name: 'tokenProgram'; - isMut: false; - isSigner: false; - }, - ]; - args: []; + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [] }, { - name: 'serum3LiqForceCancelOrders'; - accounts: [ + "name": "serum3LiqForceCancelOrders", + "accounts": [ { - name: 'group'; - isMut: false; - isSigner: false; + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account'; - isMut: true; - isSigner: false; + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'openOrders'; - isMut: true; - isSigner: false; + "name": "openOrders", + "isMut": true, + "isSigner": false }, { - name: 'serumMarket'; - isMut: false; - isSigner: false; + "name": "serumMarket", + "isMut": false, + "isSigner": false }, { - name: 'serumProgram'; - isMut: false; - isSigner: false; + "name": "serumProgram", + "isMut": false, + "isSigner": false }, { - name: 'serumMarketExternal'; - isMut: true; - isSigner: false; + "name": "serumMarketExternal", + "isMut": true, + "isSigner": false }, { - name: 'marketBids'; - isMut: true; - isSigner: false; + "name": "marketBids", + "isMut": true, + "isSigner": false }, { - name: 'marketAsks'; - isMut: true; - isSigner: false; + "name": "marketAsks", + "isMut": true, + "isSigner": false }, { - name: 'marketEventQueue'; - isMut: true; - isSigner: false; + "name": "marketEventQueue", + "isMut": true, + "isSigner": false }, { - name: 'marketBaseVault'; - isMut: true; - isSigner: false; + "name": "marketBaseVault", + "isMut": true, + "isSigner": false }, { - name: 'marketQuoteVault'; - isMut: true; - isSigner: false; + "name": "marketQuoteVault", + "isMut": true, + "isSigner": false }, { - name: 'marketVaultSigner'; - isMut: false; - isSigner: false; + "name": "marketVaultSigner", + "isMut": false, + "isSigner": false }, { - name: 'quoteBank'; - isMut: true; - isSigner: false; + "name": "quoteBank", + "isMut": true, + "isSigner": false }, { - name: 'quoteVault'; - isMut: true; - isSigner: false; + "name": "quoteVault", + "isMut": true, + "isSigner": false }, { - name: 'baseBank'; - isMut: true; - isSigner: false; + "name": "baseBank", + "isMut": true, + "isSigner": false }, { - name: 'baseVault'; - isMut: true; - isSigner: false; + "name": "baseVault", + "isMut": true, + "isSigner": false }, { - name: 'tokenProgram'; - isMut: false; - isSigner: false; - }, - ]; - args: [ + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ { - name: 'limit'; - type: 'u8'; - }, - ]; + "name": "limit", + "type": "u8" + } + ] }, { - name: 'liqTokenWithToken'; - accounts: [ + "name": "liqTokenWithToken", + "accounts": [ { - name: 'group'; - isMut: false; - isSigner: false; + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'liqor'; - isMut: true; - isSigner: false; + "name": "liqor", + "isMut": true, + "isSigner": false }, { - name: 'liqorOwner'; - isMut: false; - isSigner: true; + "name": "liqorOwner", + "isMut": false, + "isSigner": true }, { - name: 'liqee'; - isMut: true; - isSigner: false; - }, - ]; - args: [ + "name": "liqee", + "isMut": true, + "isSigner": false + } + ], + "args": [ { - name: 'assetTokenIndex'; - type: 'u16'; + "name": "assetTokenIndex", + "type": "u16" }, { - name: 'liabTokenIndex'; - type: 'u16'; + "name": "liabTokenIndex", + "type": "u16" }, { - name: 'maxLiabTransfer'; - type: { - defined: 'I80F48'; - }; - }, - ]; + "name": "maxLiabTransfer", + "type": { + "defined": "I80F48" + } + } + ] }, { - name: 'perpCreateMarket'; - accounts: [ + "name": "perpCreateMarket", + "accounts": [ { - name: 'group'; - isMut: false; - isSigner: false; + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'admin'; - isMut: false; - isSigner: true; + "name": "admin", + "isMut": false, + "isSigner": true }, { - name: 'oracle'; - isMut: false; - isSigner: false; + "name": "oracle", + "isMut": false, + "isSigner": false }, { - name: 'perpMarket'; - isMut: true; - isSigner: false; - pda: { - seeds: [ + "name": "perpMarket", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'account'; - type: 'publicKey'; - path: 'group'; + "kind": "account", + "type": "publicKey", + "path": "group" }, { - kind: 'const'; - type: 'string'; - value: 'PerpMarket'; + "kind": "const", + "type": "string", + "value": "PerpMarket" }, { - kind: 'arg'; - type: 'u16'; - path: 'perp_market_index'; - }, - ]; - }; + "kind": "arg", + "type": "u16", + "path": "perp_market_index" + } + ] + } }, { - name: 'bids'; - isMut: true; - isSigner: false; + "name": "bids", + "isMut": true, + "isSigner": false }, { - name: 'asks'; - isMut: true; - isSigner: false; + "name": "asks", + "isMut": true, + "isSigner": false }, { - name: 'eventQueue'; - isMut: true; - isSigner: false; + "name": "eventQueue", + "isMut": true, + "isSigner": false }, { - name: 'payer'; - isMut: true; - isSigner: true; + "name": "payer", + "isMut": true, + "isSigner": true }, { - name: 'systemProgram'; - isMut: false; - isSigner: false; - }, - ]; - args: [ + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ { - name: 'perpMarketIndex'; - type: 'u16'; + "name": "perpMarketIndex", + "type": "u16" }, { - name: 'baseTokenIndexOpt'; - type: { - option: 'u16'; - }; + "name": "baseTokenIndexOpt", + "type": { + "option": "u16" + } }, { - name: 'quoteTokenIndex'; - type: 'u16'; + "name": "quoteTokenIndex", + "type": "u16" }, { - name: 'quoteLotSize'; - type: 'i64'; + "name": "quoteLotSize", + "type": "i64" }, { - name: 'baseLotSize'; - type: 'i64'; + "name": "baseLotSize", + "type": "i64" }, { - name: 'maintAssetWeight'; - type: 'f32'; + "name": "maintAssetWeight", + "type": "f32" }, { - name: 'initAssetWeight'; - type: 'f32'; + "name": "initAssetWeight", + "type": "f32" }, { - name: 'maintLiabWeight'; - type: 'f32'; + "name": "maintLiabWeight", + "type": "f32" }, { - name: 'initLiabWeight'; - type: 'f32'; + "name": "initLiabWeight", + "type": "f32" }, { - name: 'liquidationFee'; - type: 'f32'; + "name": "liquidationFee", + "type": "f32" }, { - name: 'makerFee'; - type: 'f32'; + "name": "makerFee", + "type": "f32" }, { - name: 'takerFee'; - type: 'f32'; - }, - ]; + "name": "takerFee", + "type": "f32" + } + ] }, { - name: 'perpPlaceOrder'; - accounts: [ + "name": "perpPlaceOrder", + "accounts": [ { - name: 'group'; - isMut: false; - isSigner: false; + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account'; - isMut: true; - isSigner: false; + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'perpMarket'; - isMut: true; - isSigner: false; + "name": "perpMarket", + "isMut": true, + "isSigner": false }, { - name: 'asks'; - isMut: true; - isSigner: false; + "name": "asks", + "isMut": true, + "isSigner": false }, { - name: 'bids'; - isMut: true; - isSigner: false; + "name": "bids", + "isMut": true, + "isSigner": false }, { - name: 'eventQueue'; - isMut: true; - isSigner: false; + "name": "eventQueue", + "isMut": true, + "isSigner": false }, { - name: 'oracle'; - isMut: false; - isSigner: false; + "name": "oracle", + "isMut": false, + "isSigner": false }, { - name: 'owner'; - isMut: false; - isSigner: true; - }, - ]; - args: [ + "name": "owner", + "isMut": false, + "isSigner": true + } + ], + "args": [ { - name: 'side'; - type: { - defined: 'Side'; - }; + "name": "side", + "type": { + "defined": "Side" + } }, { - name: 'priceLots'; - type: 'i64'; + "name": "priceLots", + "type": "i64" }, { - name: 'maxBaseLots'; - type: 'i64'; + "name": "maxBaseLots", + "type": "i64" }, { - name: 'maxQuoteLots'; - type: 'i64'; + "name": "maxQuoteLots", + "type": "i64" }, { - name: 'clientOrderId'; - type: 'u64'; + "name": "clientOrderId", + "type": "u64" }, { - name: 'orderType'; - type: { - defined: 'OrderType'; - }; + "name": "orderType", + "type": { + "defined": "OrderType" + } }, { - name: 'expiryTimestamp'; - type: 'u64'; + "name": "expiryTimestamp", + "type": "u64" }, { - name: 'limit'; - type: 'u8'; - }, - ]; + "name": "limit", + "type": "u8" + } + ] }, { - name: 'perpConsumeEvents'; - accounts: [ + "name": "perpConsumeEvents", + "accounts": [ { - name: 'group'; - isMut: false; - isSigner: false; + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'perpMarket'; - isMut: true; - isSigner: false; + "name": "perpMarket", + "isMut": true, + "isSigner": false }, { - name: 'eventQueue'; - isMut: true; - isSigner: false; - }, - ]; - args: [ + "name": "eventQueue", + "isMut": true, + "isSigner": false + } + ], + "args": [ { - name: 'limit'; - type: { - defined: 'usize'; - }; - }, - ]; + "name": "limit", + "type": { + "defined": "usize" + } + } + ] }, { - name: 'benchmark'; - accounts: []; - args: []; - }, - ]; - accounts: [ + "name": "benchmark", + "accounts": [], + "args": [] + } + ], + "accounts": [ { - name: 'bank'; - type: { - kind: 'struct'; - fields: [ + "name": "bank", + "type": { + "kind": "struct", + "fields": [ { - name: 'group'; - type: 'publicKey'; + "name": "group", + "type": "publicKey" }, { - name: 'mint'; - type: 'publicKey'; + "name": "mint", + "type": "publicKey" }, { - name: 'vault'; - type: 'publicKey'; + "name": "vault", + "type": "publicKey" }, { - name: 'oracle'; - type: 'publicKey'; + "name": "oracle", + "type": "publicKey" }, { - name: 'depositIndex'; - type: { - defined: 'I80F48'; - }; + "name": "depositIndex", + "type": { + "defined": "I80F48" + } }, { - name: 'borrowIndex'; - type: { - defined: 'I80F48'; - }; + "name": "borrowIndex", + "type": { + "defined": "I80F48" + } }, { - name: 'indexedTotalDeposits'; - type: { - defined: 'I80F48'; - }; + "name": "indexedTotalDeposits", + "type": { + "defined": "I80F48" + } }, { - name: 'indexedTotalBorrows'; - type: { - defined: 'I80F48'; - }; + "name": "indexedTotalBorrows", + "type": { + "defined": "I80F48" + } }, { - name: 'maintAssetWeight'; - type: { - defined: 'I80F48'; - }; + "name": "maintAssetWeight", + "type": { + "defined": "I80F48" + } }, { - name: 'initAssetWeight'; - type: { - defined: 'I80F48'; - }; + "name": "initAssetWeight", + "type": { + "defined": "I80F48" + } }, { - name: 'maintLiabWeight'; - type: { - defined: 'I80F48'; - }; + "name": "maintLiabWeight", + "type": { + "defined": "I80F48" + } }, { - name: 'initLiabWeight'; - type: { - defined: 'I80F48'; - }; + "name": "initLiabWeight", + "type": { + "defined": "I80F48" + } }, { - name: 'liquidationFee'; - type: { - defined: 'I80F48'; - }; + "name": "liquidationFee", + "type": { + "defined": "I80F48" + } }, { - name: 'dust'; - type: { - defined: 'I80F48'; - }; + "name": "dust", + "type": { + "defined": "I80F48" + } }, { - name: 'tokenIndex'; - type: 'u16'; + "name": "tokenIndex", + "type": "u16" }, { - name: 'reserved'; - type: { - array: ['u8', 6]; - }; - }, - ]; - }; + "name": "reserved", + "type": { + "array": [ + "u8", + 6 + ] + } + } + ] + } }, { - name: 'bookSide'; - type: { - kind: 'struct'; - fields: [ + "name": "bookSide", + "type": { + "kind": "struct", + "fields": [ { - name: 'bookSideType'; - type: { - defined: 'BookSideType'; - }; + "name": "bookSideType", + "type": { + "defined": "BookSideType" + } }, { - name: 'bumpIndex'; - type: { - defined: 'usize'; - }; + "name": "bumpIndex", + "type": { + "defined": "usize" + } }, { - name: 'freeListLen'; - type: { - defined: 'usize'; - }; + "name": "freeListLen", + "type": { + "defined": "usize" + } }, { - name: 'freeListHead'; - type: { - defined: 'NodeHandle'; - }; + "name": "freeListHead", + "type": { + "defined": "NodeHandle" + } }, { - name: 'rootNode'; - type: { - defined: 'NodeHandle'; - }; + "name": "rootNode", + "type": { + "defined": "NodeHandle" + } }, { - name: 'leafCount'; - type: { - defined: 'usize'; - }; + "name": "leafCount", + "type": { + "defined": "usize" + } }, { - name: 'nodes'; - type: { - array: [ + "name": "nodes", + "type": { + "array": [ { - defined: 'AnyNode'; + "defined": "AnyNode" }, - 1024, - ]; - }; - }, - ]; - }; + 1024 + ] + } + } + ] + } }, { - name: 'group'; - type: { - kind: 'struct'; - fields: [ + "name": "group", + "type": { + "kind": "struct", + "fields": [ { - name: 'admin'; - type: 'publicKey'; + "name": "admin", + "type": "publicKey" }, { - name: 'bump'; - type: 'u8'; + "name": "bump", + "type": "u8" }, { - name: 'reserved'; - type: { - array: ['u8', 7]; - }; - }, - ]; - }; + "name": "reserved", + "type": { + "array": [ + "u8", + 7 + ] + } + } + ] + } }, { - name: 'mangoAccount'; - type: { - kind: 'struct'; - fields: [ + "name": "mangoAccount", + "type": { + "kind": "struct", + "fields": [ { - name: 'group'; - type: 'publicKey'; + "name": "group", + "type": "publicKey" }, { - name: 'owner'; - type: 'publicKey'; + "name": "owner", + "type": "publicKey" }, { - name: 'delegate'; - type: 'publicKey'; + "name": "delegate", + "type": "publicKey" }, { - name: 'tokens'; - type: { - defined: 'MangoAccountTokens'; - }; + "name": "tokens", + "type": { + "defined": "MangoAccountTokens" + } }, { - name: 'serum3'; - type: { - defined: 'MangoAccountSerum3'; - }; + "name": "serum3", + "type": { + "defined": "MangoAccountSerum3" + } }, { - name: 'perps'; - type: { - defined: 'MangoAccountPerps'; - }; + "name": "perps", + "type": { + "defined": "MangoAccountPerps" + } }, { - name: 'beingLiquidated'; - type: 'u8'; + "name": "beingLiquidated", + "type": "u8" }, { - name: 'isBankrupt'; - type: 'u8'; + "name": "isBankrupt", + "type": "u8" }, { - name: 'accountNum'; - type: 'u8'; + "name": "accountNum", + "type": "u8" }, { - name: 'bump'; - type: 'u8'; + "name": "bump", + "type": "u8" }, { - name: 'reserved'; - type: { - array: ['u8', 4]; - }; - }, - ]; - }; + "name": "reserved", + "type": { + "array": [ + "u8", + 4 + ] + } + } + ] + } }, { - name: 'mintInfo'; - type: { - kind: 'struct'; - fields: [ + "name": "mintInfo", + "type": { + "kind": "struct", + "fields": [ { - name: 'mint'; - type: 'publicKey'; + "name": "group", + "type": "publicKey" }, { - name: 'bank'; - type: 'publicKey'; + "name": "mint", + "type": "publicKey" }, { - name: 'vault'; - type: 'publicKey'; + "name": "bank", + "type": "publicKey" }, { - name: 'oracle'; - type: 'publicKey'; + "name": "vault", + "type": "publicKey" }, { - name: 'addressLookupTable'; - type: 'publicKey'; + "name": "oracle", + "type": "publicKey" }, { - name: 'tokenIndex'; - type: 'u16'; + "name": "addressLookupTable", + "type": "publicKey" }, { - name: 'addressLookupTableBankIndex'; - type: 'u8'; + "name": "tokenIndex", + "type": "u16" }, { - name: 'addressLookupTableOracleIndex'; - type: 'u8'; + "name": "addressLookupTableBankIndex", + "type": "u8" }, { - name: 'reserved'; - type: { - array: ['u8', 4]; - }; + "name": "addressLookupTableOracleIndex", + "type": "u8" }, - ]; - }; + { + "name": "reserved", + "type": { + "array": [ + "u8", + 4 + ] + } + } + ] + } }, { - name: 'stubOracle'; - type: { - kind: 'struct'; - fields: [ + "name": "stubOracle", + "type": { + "kind": "struct", + "fields": [ { - name: 'group'; - type: 'publicKey'; + "name": "group", + "type": "publicKey" }, { - name: 'mint'; - type: 'publicKey'; + "name": "mint", + "type": "publicKey" }, { - name: 'price'; - type: { - defined: 'I80F48'; - }; + "name": "price", + "type": { + "defined": "I80F48" + } }, { - name: 'lastUpdated'; - type: 'i64'; + "name": "lastUpdated", + "type": "i64" }, { - name: 'reserved'; - type: { - array: ['u8', 8]; - }; - }, - ]; - }; + "name": "reserved", + "type": { + "array": [ + "u8", + 8 + ] + } + } + ] + } }, { - name: 'perpMarket'; - type: { - kind: 'struct'; - fields: [ + "name": "perpMarket", + "type": { + "kind": "struct", + "fields": [ { - name: 'group'; - type: 'publicKey'; + "name": "group", + "type": "publicKey" }, { - name: 'oracle'; - type: 'publicKey'; + "name": "oracle", + "type": "publicKey" }, { - name: 'bids'; - type: 'publicKey'; + "name": "bids", + "type": "publicKey" }, { - name: 'asks'; - type: 'publicKey'; + "name": "asks", + "type": "publicKey" }, { - name: 'eventQueue'; - type: 'publicKey'; + "name": "eventQueue", + "type": "publicKey" }, { - name: 'quoteLotSize'; - type: 'i64'; + "name": "quoteLotSize", + "type": "i64" }, { - name: 'baseLotSize'; - type: 'i64'; + "name": "baseLotSize", + "type": "i64" }, { - name: 'maintAssetWeight'; - type: { - defined: 'I80F48'; - }; + "name": "maintAssetWeight", + "type": { + "defined": "I80F48" + } }, { - name: 'initAssetWeight'; - type: { - defined: 'I80F48'; - }; + "name": "initAssetWeight", + "type": { + "defined": "I80F48" + } }, { - name: 'maintLiabWeight'; - type: { - defined: 'I80F48'; - }; + "name": "maintLiabWeight", + "type": { + "defined": "I80F48" + } }, { - name: 'initLiabWeight'; - type: { - defined: 'I80F48'; - }; + "name": "initLiabWeight", + "type": { + "defined": "I80F48" + } }, { - name: 'liquidationFee'; - type: { - defined: 'I80F48'; - }; + "name": "liquidationFee", + "type": { + "defined": "I80F48" + } }, { - name: 'makerFee'; - type: { - defined: 'I80F48'; - }; + "name": "makerFee", + "type": { + "defined": "I80F48" + } }, { - name: 'takerFee'; - type: { - defined: 'I80F48'; - }; + "name": "takerFee", + "type": { + "defined": "I80F48" + } }, { - name: 'openInterest'; - type: 'i64'; + "name": "openInterest", + "type": "i64" }, { - name: 'seqNum'; - type: 'u64'; + "name": "seqNum", + "type": "u64" }, { - name: 'feesAccrued'; - type: { - defined: 'I80F48'; - }; + "name": "feesAccrued", + "type": { + "defined": "I80F48" + } }, { - name: 'bump'; - type: 'u8'; + "name": "bump", + "type": "u8" }, { - name: 'perpMarketIndex'; - type: 'u16'; + "name": "perpMarketIndex", + "type": "u16" }, { - name: 'baseTokenIndex'; - type: 'u16'; + "name": "baseTokenIndex", + "type": "u16" }, { - name: 'quoteTokenIndex'; - type: 'u16'; - }, - ]; - }; + "name": "quoteTokenIndex", + "type": "u16" + } + ] + } }, { - name: 'queue'; - type: { - kind: 'struct'; - fields: [ + "name": "queue", + "type": { + "kind": "struct", + "fields": [ { - name: 'header'; - type: { - defined: 'H'; - }; + "name": "header", + "type": { + "defined": "H" + } }, { - name: 'buf'; - type: { - array: [ + "name": "buf", + "type": { + "array": [ { - defined: 'H::Item'; + "defined": "H::Item" }, - 512, - ]; - }; - }, - ]; - }; + 512 + ] + } + } + ] + } }, { - name: 'eventQueueHeader'; - type: { - kind: 'struct'; - fields: [ + "name": "eventQueueHeader", + "type": { + "kind": "struct", + "fields": [ { - name: 'head'; - type: { - defined: 'usize'; - }; + "name": "head", + "type": { + "defined": "usize" + } }, { - name: 'count'; - type: { - defined: 'usize'; - }; + "name": "count", + "type": { + "defined": "usize" + } }, { - name: 'seqNum'; - type: { - defined: 'usize'; - }; - }, - ]; - }; + "name": "seqNum", + "type": { + "defined": "usize" + } + } + ] + } }, { - name: 'serum3Market'; - type: { - kind: 'struct'; - fields: [ + "name": "serum3Market", + "type": { + "kind": "struct", + "fields": [ { - name: 'group'; - type: 'publicKey'; + "name": "group", + "type": "publicKey" }, { - name: 'serumProgram'; - type: 'publicKey'; + "name": "serumProgram", + "type": "publicKey" }, { - name: 'serumMarketExternal'; - type: 'publicKey'; + "name": "serumMarketExternal", + "type": "publicKey" }, { - name: 'marketIndex'; - type: 'u16'; + "name": "marketIndex", + "type": "u16" }, { - name: 'baseTokenIndex'; - type: 'u16'; + "name": "baseTokenIndex", + "type": "u16" }, { - name: 'quoteTokenIndex'; - type: 'u16'; + "name": "quoteTokenIndex", + "type": "u16" }, { - name: 'bump'; - type: 'u8'; + "name": "bump", + "type": "u8" }, { - name: 'reserved'; - type: { - array: ['u8', 1]; - }; - }, - ]; - }; - }, - ]; - types: [ + "name": "reserved", + "type": { + "array": [ + "u8", + 1 + ] + } + } + ] + } + } + ], + "types": [ { - name: 'TokenAccount'; - type: { - kind: 'struct'; - fields: [ + "name": "TokenAccount", + "type": { + "kind": "struct", + "fields": [ { - name: 'indexedValue'; - type: { - defined: 'I80F48'; - }; + "name": "indexedValue", + "type": { + "defined": "I80F48" + } }, { - name: 'tokenIndex'; - type: 'u16'; + "name": "tokenIndex", + "type": "u16" }, { - name: 'inUseCount'; - type: 'u8'; + "name": "inUseCount", + "type": "u8" }, { - name: 'reserved'; - type: { - array: ['u8', 5]; - }; - }, - ]; - }; + "name": "reserved", + "type": { + "array": [ + "u8", + 5 + ] + } + } + ] + } }, { - name: 'MangoAccountTokens'; - type: { - kind: 'struct'; - fields: [ + "name": "MangoAccountTokens", + "type": { + "kind": "struct", + "fields": [ { - name: 'values'; - type: { - array: [ + "name": "values", + "type": { + "array": [ { - defined: 'TokenAccount'; + "defined": "TokenAccount" }, - 16, - ]; - }; - }, - ]; - }; + 16 + ] + } + } + ] + } }, { - name: 'Serum3Account'; - type: { - kind: 'struct'; - fields: [ + "name": "Serum3Account", + "type": { + "kind": "struct", + "fields": [ { - name: 'openOrders'; - type: 'publicKey'; + "name": "openOrders", + "type": "publicKey" }, { - name: 'marketIndex'; - type: 'u16'; + "name": "marketIndex", + "type": "u16" }, { - name: 'baseTokenIndex'; - type: 'u16'; + "name": "baseTokenIndex", + "type": "u16" }, { - name: 'quoteTokenIndex'; - type: 'u16'; + "name": "quoteTokenIndex", + "type": "u16" }, { - name: 'reserved'; - type: { - array: ['u8', 2]; - }; - }, - ]; - }; + "name": "reserved", + "type": { + "array": [ + "u8", + 2 + ] + } + } + ] + } }, { - name: 'MangoAccountSerum3'; - type: { - kind: 'struct'; - fields: [ + "name": "MangoAccountSerum3", + "type": { + "kind": "struct", + "fields": [ { - name: 'values'; - type: { - array: [ + "name": "values", + "type": { + "array": [ { - defined: 'Serum3Account'; + "defined": "Serum3Account" }, - 8, - ]; - }; - }, - ]; - }; + 8 + ] + } + } + ] + } }, { - name: 'PerpAccount'; - type: { - kind: 'struct'; - fields: [ + "name": "PerpAccount", + "type": { + "kind": "struct", + "fields": [ { - name: 'marketIndex'; - type: 'u16'; + "name": "marketIndex", + "type": "u16" }, { - name: 'reserved'; - type: { - array: ['u8', 6]; - }; + "name": "reserved", + "type": { + "array": [ + "u8", + 6 + ] + } }, { - name: 'basePositionLots'; - type: 'i64'; + "name": "basePositionLots", + "type": "i64" }, { - name: 'quotePositionNative'; - type: { - defined: 'I80F48'; - }; + "name": "quotePositionNative", + "type": { + "defined": "I80F48" + } }, { - name: 'bidsBaseLots'; - type: 'i64'; + "name": "bidsBaseLots", + "type": "i64" }, { - name: 'asksBaseLots'; - type: 'i64'; + "name": "asksBaseLots", + "type": "i64" }, { - name: 'takerBaseLots'; - type: 'i64'; + "name": "takerBaseLots", + "type": "i64" }, { - name: 'takerQuoteLots'; - type: 'i64'; - }, - ]; - }; + "name": "takerQuoteLots", + "type": "i64" + } + ] + } }, { - name: 'MangoAccountPerps'; - type: { - kind: 'struct'; - fields: [ + "name": "MangoAccountPerps", + "type": { + "kind": "struct", + "fields": [ { - name: 'accounts'; - type: { - array: [ + "name": "accounts", + "type": { + "array": [ { - defined: 'PerpAccount'; + "defined": "PerpAccount" }, - 8, - ]; - }; + 8 + ] + } }, { - name: 'orderMarket'; - type: { - array: ['u16', 8]; - }; + "name": "orderMarket", + "type": { + "array": [ + "u16", + 8 + ] + } }, { - name: 'orderSide'; - type: { - array: [ + "name": "orderSide", + "type": { + "array": [ { - defined: 'Side'; + "defined": "Side" }, - 8, - ]; - }; + 8 + ] + } }, { - name: 'orderId'; - type: { - array: ['i128', 8]; - }; + "name": "orderId", + "type": { + "array": [ + "i128", + 8 + ] + } }, { - name: 'orderClientId'; - type: { - array: ['u64', 8]; - }; - }, - ]; - }; + "name": "orderClientId", + "type": { + "array": [ + "u64", + 8 + ] + } + } + ] + } }, { - name: 'TokenIndex'; - type: { - kind: 'struct'; - fields: [ + "name": "TokenIndex", + "type": { + "kind": "struct", + "fields": [ { - name: 'val'; - type: 'u16'; - }, - ]; - }; + "name": "val", + "type": "u16" + } + ] + } }, { - name: 'Serum3MarketIndex'; - type: { - kind: 'struct'; - fields: [ + "name": "Serum3MarketIndex", + "type": { + "kind": "struct", + "fields": [ { - name: 'val'; - type: 'u16'; - }, - ]; - }; + "name": "val", + "type": "u16" + } + ] + } }, { - name: 'PerpMarketIndex'; - type: { - kind: 'struct'; - fields: [ + "name": "PerpMarketIndex", + "type": { + "kind": "struct", + "fields": [ { - name: 'val'; - type: 'u16'; - }, - ]; - }; + "name": "val", + "type": "u16" + } + ] + } }, { - name: 'I80F48'; - type: { - kind: 'struct'; - fields: [ + "name": "I80F48", + "type": { + "kind": "struct", + "fields": [ { - name: 'val'; - type: 'i128'; - }, - ]; - }; + "name": "val", + "type": "i128" + } + ] + } }, { - name: 'BookSideType'; - type: { - kind: 'enum'; - variants: [ + "name": "BookSideType", + "type": { + "kind": "enum", + "variants": [ { - name: 'Bids'; + "name": "Bids" }, { - name: 'Asks'; - }, - ]; - }; + "name": "Asks" + } + ] + } }, { - name: 'HealthType'; - type: { - kind: 'enum'; - variants: [ + "name": "HealthType", + "type": { + "kind": "enum", + "variants": [ { - name: 'Init'; + "name": "Init" }, { - name: 'Maint'; - }, - ]; - }; + "name": "Maint" + } + ] + } }, { - name: 'NodeTag'; - type: { - kind: 'enum'; - variants: [ + "name": "NodeTag", + "type": { + "kind": "enum", + "variants": [ { - name: 'Uninitialized'; + "name": "Uninitialized" }, { - name: 'InnerNode'; + "name": "InnerNode" }, { - name: 'LeafNode'; + "name": "LeafNode" }, { - name: 'FreeNode'; + "name": "FreeNode" }, { - name: 'LastFreeNode'; - }, - ]; - }; + "name": "LastFreeNode" + } + ] + } }, { - name: 'NodeRef'; - type: { - kind: 'enum'; - variants: [ + "name": "NodeRef", + "type": { + "kind": "enum", + "variants": [ { - name: 'Inner'; - fields: [ + "name": "Inner", + "fields": [ { - defined: "&'aInnerNode"; - }, - ]; + "defined": "&'aInnerNode" + } + ] }, { - name: 'Leaf'; - fields: [ + "name": "Leaf", + "fields": [ { - defined: "&'aLeafNode"; - }, - ]; - }, - ]; - }; + "defined": "&'aLeafNode" + } + ] + } + ] + } }, { - name: 'NodeRefMut'; - type: { - kind: 'enum'; - variants: [ + "name": "NodeRefMut", + "type": { + "kind": "enum", + "variants": [ { - name: 'Inner'; - fields: [ + "name": "Inner", + "fields": [ { - defined: "&'amutInnerNode"; - }, - ]; + "defined": "&'amutInnerNode" + } + ] }, { - name: 'Leaf'; - fields: [ + "name": "Leaf", + "fields": [ { - defined: "&'amutLeafNode"; - }, - ]; - }, - ]; - }; + "defined": "&'amutLeafNode" + } + ] + } + ] + } }, { - name: 'OracleType'; - type: { - kind: 'enum'; - variants: [ + "name": "OracleType", + "type": { + "kind": "enum", + "variants": [ { - name: 'Stub'; + "name": "Stub" }, { - name: 'Pyth'; - }, - ]; - }; + "name": "Pyth" + } + ] + } }, { - name: 'OrderType'; - type: { - kind: 'enum'; - variants: [ + "name": "OrderType", + "type": { + "kind": "enum", + "variants": [ { - name: 'Limit'; + "name": "Limit" }, { - name: 'ImmediateOrCancel'; + "name": "ImmediateOrCancel" }, { - name: 'PostOnly'; + "name": "PostOnly" }, { - name: 'Market'; + "name": "Market" }, { - name: 'PostOnlySlide'; - }, - ]; - }; + "name": "PostOnlySlide" + } + ] + } }, { - name: 'Side'; - type: { - kind: 'enum'; - variants: [ + "name": "Side", + "type": { + "kind": "enum", + "variants": [ { - name: 'Bid'; + "name": "Bid" }, { - name: 'Ask'; - }, - ]; - }; + "name": "Ask" + } + ] + } }, { - name: 'EventType'; - type: { - kind: 'enum'; - variants: [ + "name": "EventType", + "type": { + "kind": "enum", + "variants": [ { - name: 'Fill'; + "name": "Fill" }, { - name: 'Out'; + "name": "Out" }, { - name: 'Liquidate'; - }, - ]; - }; + "name": "Liquidate" + } + ] + } }, { - name: 'Serum3SelfTradeBehavior'; - type: { - kind: 'enum'; - variants: [ + "name": "Serum3SelfTradeBehavior", + "type": { + "kind": "enum", + "variants": [ { - name: 'DecrementTake'; + "name": "DecrementTake" }, { - name: 'CancelProvide'; + "name": "CancelProvide" }, { - name: 'AbortTransaction'; - }, - ]; - }; + "name": "AbortTransaction" + } + ] + } }, { - name: 'Serum3OrderType'; - type: { - kind: 'enum'; - variants: [ + "name": "Serum3OrderType", + "type": { + "kind": "enum", + "variants": [ { - name: 'Limit'; + "name": "Limit" }, { - name: 'ImmediateOrCancel'; + "name": "ImmediateOrCancel" }, { - name: 'PostOnly'; - }, - ]; - }; + "name": "PostOnly" + } + ] + } }, { - name: 'Serum3Side'; - type: { - kind: 'enum'; - variants: [ + "name": "Serum3Side", + "type": { + "kind": "enum", + "variants": [ { - name: 'Bid'; + "name": "Bid" }, { - name: 'Ask'; - }, - ]; - }; + "name": "Ask" + } + ] + } }, { - name: 'ProgramInstruction'; - type: { - kind: 'enum'; - variants: [ + "name": "ProgramInstruction", + "type": { + "kind": "enum", + "variants": [ { - name: 'CreateLookupTable'; - fields: [ + "name": "CreateLookupTable", + "fields": [ { - name: 'recent_slot'; - type: { - defined: 'Slot'; - }; + "name": "recent_slot", + "type": { + "defined": "Slot" + } }, { - name: 'bump_seed'; - type: 'u8'; - }, - ]; + "name": "bump_seed", + "type": "u8" + } + ] }, { - name: 'FreezeLookupTable'; + "name": "FreezeLookupTable" }, { - name: 'ExtendLookupTable'; - fields: [ + "name": "ExtendLookupTable", + "fields": [ { - name: 'new_addresses'; - type: { - vec: 'publicKey'; - }; - }, - ]; + "name": "new_addresses", + "type": { + "vec": "publicKey" + } + } + ] }, { - name: 'DeactivateLookupTable'; + "name": "DeactivateLookupTable" }, { - name: 'CloseLookupTable'; - }, - ]; - }; - }, - ]; - errors: [ + "name": "CloseLookupTable" + } + ] + } + } + ], + "errors": [ { - code: 6000; - name: 'SomeError'; - msg: ''; + "code": 6000, + "name": "SomeError", + "msg": "" }, { - code: 6001; - name: 'MathError'; - msg: ''; + "code": 6001, + "name": "MathError", + "msg": "" }, { - code: 6002; - name: 'UnexpectedOracle'; - msg: ''; + "code": 6002, + "name": "UnexpectedOracle", + "msg": "" }, { - code: 6003; - name: 'UnknownOracleType'; - msg: ''; + "code": 6003, + "name": "UnknownOracleType", + "msg": "" }, { - code: 6004; - name: 'InvalidMarginTradeTargetCpiProgram'; - msg: ''; + "code": 6004, + "name": "InvalidMarginTradeTargetCpiProgram", + "msg": "" }, { - code: 6005; - name: 'HealthMustBePositive'; - msg: ''; + "code": 6005, + "name": "HealthMustBePositive", + "msg": "" }, { - code: 6006; - name: 'IsBankrupt'; - msg: 'The account is bankrupt'; - }, - ]; + "code": 6006, + "name": "IsBankrupt", + "msg": "The account is bankrupt" + } + ] }; export const IDL: MangoV4 = { - version: '0.1.0', - name: 'mango_v4', - instructions: [ + "version": "0.1.0", + "name": "mango_v4", + "instructions": [ { - name: 'createGroup', - accounts: [ + "name": "createGroup", + "accounts": [ { - name: 'group', - isMut: true, - isSigner: false, - pda: { - seeds: [ + "name": "group", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'const', - type: 'string', - value: 'Group', + "kind": "const", + "type": "string", + "value": "Group" }, { - kind: 'account', - type: 'publicKey', - path: 'admin', - }, - ], - }, + "kind": "account", + "type": "publicKey", + "path": "admin" + } + ] + } }, { - name: 'admin', - isMut: false, - isSigner: true, + "name": "admin", + "isMut": false, + "isSigner": true }, { - name: 'payer', - isMut: true, - isSigner: true, + "name": "payer", + "isMut": true, + "isSigner": true }, { - name: 'systemProgram', - isMut: false, - isSigner: false, - }, + "name": "systemProgram", + "isMut": false, + "isSigner": false + } ], - args: [], + "args": [] }, { - name: 'registerToken', - accounts: [ + "name": "registerToken", + "accounts": [ { - name: 'group', - isMut: false, - isSigner: false, + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'admin', - isMut: false, - isSigner: true, + "name": "admin", + "isMut": false, + "isSigner": true }, { - name: 'mint', - isMut: false, - isSigner: false, + "name": "mint", + "isMut": false, + "isSigner": false }, { - name: 'bank', - isMut: true, - isSigner: false, - pda: { - seeds: [ + "name": "bank", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'account', - type: 'publicKey', - path: 'group', + "kind": "account", + "type": "publicKey", + "path": "group" }, { - kind: 'const', - type: 'string', - value: 'Bank', + "kind": "const", + "type": "string", + "value": "Bank" }, { - kind: 'arg', - type: 'u16', - path: 'token_index', - }, - ], - }, + "kind": "arg", + "type": "u16", + "path": "token_index" + } + ] + } }, { - name: 'vault', - isMut: true, - isSigner: false, - pda: { - seeds: [ + "name": "vault", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'account', - type: 'publicKey', - path: 'group', + "kind": "account", + "type": "publicKey", + "path": "group" }, { - kind: 'const', - type: 'string', - value: 'Vault', + "kind": "const", + "type": "string", + "value": "Vault" }, { - kind: 'arg', - type: 'u16', - path: 'token_index', - }, - ], - }, + "kind": "arg", + "type": "u16", + "path": "token_index" + } + ] + } }, { - name: 'mintInfo', - isMut: true, - isSigner: false, - pda: { - seeds: [ + "name": "mintInfo", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'account', - type: 'publicKey', - path: 'group', + "kind": "account", + "type": "publicKey", + "path": "group" }, { - kind: 'const', - type: 'string', - value: 'MintInfo', + "kind": "const", + "type": "string", + "value": "MintInfo" }, { - kind: 'account', - type: 'publicKey', - account: 'Mint', - path: 'mint', - }, - ], - }, + "kind": "account", + "type": "publicKey", + "account": "Mint", + "path": "mint" + } + ] + } }, { - name: 'oracle', - isMut: false, - isSigner: false, + "name": "oracle", + "isMut": false, + "isSigner": false }, { - name: 'payer', - isMut: true, - isSigner: true, + "name": "payer", + "isMut": true, + "isSigner": true }, { - name: 'tokenProgram', - isMut: false, - isSigner: false, + "name": "tokenProgram", + "isMut": false, + "isSigner": false }, { - name: 'systemProgram', - isMut: false, - isSigner: false, + "name": "systemProgram", + "isMut": false, + "isSigner": false }, { - name: 'rent', - isMut: false, - isSigner: false, - }, + "name": "rent", + "isMut": false, + "isSigner": false + } ], - args: [ + "args": [ { - name: 'tokenIndex', - type: 'u16', + "name": "tokenIndex", + "type": "u16" }, { - name: 'maintAssetWeight', - type: 'f32', + "name": "maintAssetWeight", + "type": "f32" }, { - name: 'initAssetWeight', - type: 'f32', + "name": "initAssetWeight", + "type": "f32" }, { - name: 'maintLiabWeight', - type: 'f32', + "name": "maintLiabWeight", + "type": "f32" }, { - name: 'initLiabWeight', - type: 'f32', + "name": "initLiabWeight", + "type": "f32" }, { - name: 'liquidationFee', - type: 'f32', - }, - ], + "name": "liquidationFee", + "type": "f32" + } + ] }, { - name: 'createAccount', - accounts: [ + "name": "createAccount", + "accounts": [ { - name: 'group', - isMut: false, - isSigner: false, + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account', - isMut: true, - isSigner: false, - pda: { - seeds: [ + "name": "account", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'account', - type: 'publicKey', - path: 'group', + "kind": "account", + "type": "publicKey", + "path": "group" }, { - kind: 'const', - type: 'string', - value: 'MangoAccount', + "kind": "const", + "type": "string", + "value": "MangoAccount" }, { - kind: 'account', - type: 'publicKey', - path: 'owner', + "kind": "account", + "type": "publicKey", + "path": "owner" }, { - kind: 'arg', - type: 'u8', - path: 'account_num', - }, - ], - }, + "kind": "arg", + "type": "u8", + "path": "account_num" + } + ] + } }, { - name: 'owner', - isMut: false, - isSigner: true, + "name": "owner", + "isMut": false, + "isSigner": true }, { - name: 'payer', - isMut: true, - isSigner: true, + "name": "payer", + "isMut": true, + "isSigner": true }, { - name: 'systemProgram', - isMut: false, - isSigner: false, - }, + "name": "systemProgram", + "isMut": false, + "isSigner": false + } ], - args: [ + "args": [ { - name: 'accountNum', - type: 'u8', - }, - ], + "name": "accountNum", + "type": "u8" + } + ] }, { - name: 'closeAccount', - accounts: [ + "name": "closeAccount", + "accounts": [ { - name: 'account', - isMut: true, - isSigner: false, + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'owner', - isMut: false, - isSigner: true, + "name": "owner", + "isMut": false, + "isSigner": true }, { - name: 'solDestination', - isMut: true, - isSigner: false, + "name": "solDestination", + "isMut": true, + "isSigner": false }, { - name: 'tokenProgram', - isMut: false, - isSigner: false, - }, + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } ], - args: [], + "args": [] }, { - name: 'createStubOracle', - accounts: [ + "name": "createStubOracle", + "accounts": [ { - name: 'group', - isMut: false, - isSigner: false, + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'oracle', - isMut: true, - isSigner: false, - pda: { - seeds: [ + "name": "oracle", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'account', - type: 'publicKey', - path: 'group', + "kind": "account", + "type": "publicKey", + "path": "group" }, { - kind: 'const', - type: 'string', - value: 'StubOracle', + "kind": "const", + "type": "string", + "value": "StubOracle" }, { - kind: 'account', - type: 'publicKey', - account: 'Mint', - path: 'token_mint', - }, - ], - }, + "kind": "account", + "type": "publicKey", + "account": "Mint", + "path": "token_mint" + } + ] + } }, { - name: 'admin', - isMut: false, - isSigner: true, + "name": "admin", + "isMut": false, + "isSigner": true }, { - name: 'tokenMint', - isMut: false, - isSigner: false, + "name": "tokenMint", + "isMut": false, + "isSigner": false }, { - name: 'payer', - isMut: true, - isSigner: true, + "name": "payer", + "isMut": true, + "isSigner": true }, { - name: 'systemProgram', - isMut: false, - isSigner: false, - }, + "name": "systemProgram", + "isMut": false, + "isSigner": false + } ], - args: [ + "args": [ { - name: 'price', - type: { - defined: 'I80F48', - }, - }, - ], + "name": "price", + "type": { + "defined": "I80F48" + } + } + ] }, { - name: 'setStubOracle', - accounts: [ + "name": "setStubOracle", + "accounts": [ { - name: 'group', - isMut: false, - isSigner: false, + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'admin', - isMut: false, - isSigner: true, + "name": "admin", + "isMut": false, + "isSigner": true }, { - name: 'oracle', - isMut: true, - isSigner: false, + "name": "oracle", + "isMut": true, + "isSigner": false }, { - name: 'payer', - isMut: true, - isSigner: true, - }, + "name": "payer", + "isMut": true, + "isSigner": true + } ], - args: [ + "args": [ { - name: 'price', - type: { - defined: 'I80F48', - }, - }, - ], + "name": "price", + "type": { + "defined": "I80F48" + } + } + ] }, { - name: 'deposit', - accounts: [ + "name": "deposit", + "accounts": [ { - name: 'group', - isMut: false, - isSigner: false, + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account', - isMut: true, - isSigner: false, + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'bank', - isMut: true, - isSigner: false, + "name": "bank", + "isMut": true, + "isSigner": false }, { - name: 'vault', - isMut: true, - isSigner: false, + "name": "vault", + "isMut": true, + "isSigner": false }, { - name: 'tokenAccount', - isMut: true, - isSigner: false, + "name": "tokenAccount", + "isMut": true, + "isSigner": false }, { - name: 'tokenAuthority', - isMut: false, - isSigner: true, + "name": "tokenAuthority", + "isMut": false, + "isSigner": true }, { - name: 'tokenProgram', - isMut: false, - isSigner: false, - }, + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } ], - args: [ + "args": [ { - name: 'amount', - type: 'u64', - }, - ], + "name": "amount", + "type": "u64" + } + ] }, { - name: 'withdraw', - accounts: [ + "name": "withdraw", + "accounts": [ { - name: 'group', - isMut: false, - isSigner: false, + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account', - isMut: true, - isSigner: false, + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'owner', - isMut: false, - isSigner: true, + "name": "owner", + "isMut": false, + "isSigner": true }, { - name: 'bank', - isMut: true, - isSigner: false, + "name": "bank", + "isMut": true, + "isSigner": false }, { - name: 'vault', - isMut: true, - isSigner: false, + "name": "vault", + "isMut": true, + "isSigner": false }, { - name: 'tokenAccount', - isMut: true, - isSigner: false, + "name": "tokenAccount", + "isMut": true, + "isSigner": false }, { - name: 'tokenProgram', - isMut: false, - isSigner: false, - }, + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } ], - args: [ + "args": [ { - name: 'amount', - type: 'u64', + "name": "amount", + "type": "u64" }, { - name: 'allowBorrow', - type: 'bool', - }, - ], + "name": "allowBorrow", + "type": "bool" + } + ] }, { - name: 'marginTrade', - accounts: [ + "name": "marginTrade", + "accounts": [ { - name: 'group', - isMut: false, - isSigner: false, + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account', - isMut: true, - isSigner: false, + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'owner', - isMut: false, - isSigner: true, - }, + "name": "owner", + "isMut": false, + "isSigner": true + } ], - args: [ + "args": [ { - name: 'banksLen', - type: { - defined: 'usize', - }, + "name": "banksLen", + "type": { + "defined": "usize" + } }, { - name: 'cpiData', - type: 'bytes', - }, - ], + "name": "cpiData", + "type": "bytes" + } + ] }, { - name: 'serum3RegisterMarket', - accounts: [ + "name": "serum3RegisterMarket", + "accounts": [ { - name: 'group', - isMut: true, - isSigner: false, + "name": "group", + "isMut": true, + "isSigner": false }, { - name: 'admin', - isMut: false, - isSigner: true, + "name": "admin", + "isMut": false, + "isSigner": true }, { - name: 'serumProgram', - isMut: false, - isSigner: false, + "name": "serumProgram", + "isMut": false, + "isSigner": false }, { - name: 'serumMarketExternal', - isMut: false, - isSigner: false, + "name": "serumMarketExternal", + "isMut": false, + "isSigner": false }, { - name: 'serumMarket', - isMut: true, - isSigner: false, - pda: { - seeds: [ + "name": "serumMarket", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'account', - type: 'publicKey', - path: 'group', + "kind": "account", + "type": "publicKey", + "path": "group" }, { - kind: 'const', - type: 'string', - value: 'Serum3Market', + "kind": "const", + "type": "string", + "value": "Serum3Market" }, { - kind: 'account', - type: 'publicKey', - path: 'serum_market_external', - }, - ], - }, + "kind": "account", + "type": "publicKey", + "path": "serum_market_external" + } + ] + } }, { - name: 'quoteBank', - isMut: false, - isSigner: false, + "name": "quoteBank", + "isMut": false, + "isSigner": false }, { - name: 'baseBank', - isMut: false, - isSigner: false, + "name": "baseBank", + "isMut": false, + "isSigner": false }, { - name: 'payer', - isMut: true, - isSigner: true, + "name": "payer", + "isMut": true, + "isSigner": true }, { - name: 'systemProgram', - isMut: false, - isSigner: false, - }, + "name": "systemProgram", + "isMut": false, + "isSigner": false + } ], - args: [ + "args": [ { - name: 'marketIndex', - type: 'u16', - }, - ], + "name": "marketIndex", + "type": "u16" + } + ] }, { - name: 'serum3CreateOpenOrders', - accounts: [ + "name": "serum3CreateOpenOrders", + "accounts": [ { - name: 'group', - isMut: false, - isSigner: false, + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account', - isMut: true, - isSigner: false, + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'serumMarket', - isMut: false, - isSigner: false, + "name": "serumMarket", + "isMut": false, + "isSigner": false }, { - name: 'serumProgram', - isMut: false, - isSigner: false, + "name": "serumProgram", + "isMut": false, + "isSigner": false }, { - name: 'serumMarketExternal', - isMut: false, - isSigner: false, + "name": "serumMarketExternal", + "isMut": false, + "isSigner": false }, { - name: 'openOrders', - isMut: true, - isSigner: false, - pda: { - seeds: [ + "name": "openOrders", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'account', - type: 'publicKey', - path: 'account', + "kind": "account", + "type": "publicKey", + "path": "account" }, { - kind: 'const', - type: 'string', - value: 'Serum3OO', + "kind": "const", + "type": "string", + "value": "Serum3OO" }, { - kind: 'account', - type: 'publicKey', - path: 'serum_market', - }, - ], - }, + "kind": "account", + "type": "publicKey", + "path": "serum_market" + } + ] + } }, { - name: 'owner', - isMut: false, - isSigner: true, + "name": "owner", + "isMut": false, + "isSigner": true }, { - name: 'payer', - isMut: true, - isSigner: true, + "name": "payer", + "isMut": true, + "isSigner": true }, { - name: 'systemProgram', - isMut: false, - isSigner: false, + "name": "systemProgram", + "isMut": false, + "isSigner": false }, { - name: 'rent', - isMut: false, - isSigner: false, - }, + "name": "rent", + "isMut": false, + "isSigner": false + } ], - args: [], + "args": [] }, { - name: 'serum3PlaceOrder', - accounts: [ + "name": "serum3PlaceOrder", + "accounts": [ { - name: 'group', - isMut: false, - isSigner: false, + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account', - isMut: true, - isSigner: false, + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'owner', - isMut: false, - isSigner: true, + "name": "owner", + "isMut": false, + "isSigner": true }, { - name: 'openOrders', - isMut: true, - isSigner: false, + "name": "openOrders", + "isMut": true, + "isSigner": false }, { - name: 'serumMarket', - isMut: false, - isSigner: false, + "name": "serumMarket", + "isMut": false, + "isSigner": false }, { - name: 'serumProgram', - isMut: false, - isSigner: false, + "name": "serumProgram", + "isMut": false, + "isSigner": false }, { - name: 'serumMarketExternal', - isMut: true, - isSigner: false, + "name": "serumMarketExternal", + "isMut": true, + "isSigner": false }, { - name: 'marketBids', - isMut: true, - isSigner: false, + "name": "marketBids", + "isMut": true, + "isSigner": false }, { - name: 'marketAsks', - isMut: true, - isSigner: false, + "name": "marketAsks", + "isMut": true, + "isSigner": false }, { - name: 'marketEventQueue', - isMut: true, - isSigner: false, + "name": "marketEventQueue", + "isMut": true, + "isSigner": false }, { - name: 'marketRequestQueue', - isMut: true, - isSigner: false, + "name": "marketRequestQueue", + "isMut": true, + "isSigner": false }, { - name: 'marketBaseVault', - isMut: true, - isSigner: false, + "name": "marketBaseVault", + "isMut": true, + "isSigner": false }, { - name: 'marketQuoteVault', - isMut: true, - isSigner: false, + "name": "marketQuoteVault", + "isMut": true, + "isSigner": false }, { - name: 'marketVaultSigner', - isMut: false, - isSigner: false, + "name": "marketVaultSigner", + "isMut": false, + "isSigner": false }, { - name: 'quoteBank', - isMut: true, - isSigner: false, + "name": "quoteBank", + "isMut": true, + "isSigner": false }, { - name: 'quoteVault', - isMut: true, - isSigner: false, + "name": "quoteVault", + "isMut": true, + "isSigner": false }, { - name: 'baseBank', - isMut: true, - isSigner: false, + "name": "baseBank", + "isMut": true, + "isSigner": false }, { - name: 'baseVault', - isMut: true, - isSigner: false, + "name": "baseVault", + "isMut": true, + "isSigner": false }, { - name: 'tokenProgram', - isMut: false, - isSigner: false, - }, + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } ], - args: [ + "args": [ { - name: 'side', - type: { - defined: 'Serum3Side', - }, + "name": "side", + "type": { + "defined": "Serum3Side" + } }, { - name: 'limitPrice', - type: 'u64', + "name": "limitPrice", + "type": "u64" }, { - name: 'maxBaseQty', - type: 'u64', + "name": "maxBaseQty", + "type": "u64" }, { - name: 'maxNativeQuoteQtyIncludingFees', - type: 'u64', + "name": "maxNativeQuoteQtyIncludingFees", + "type": "u64" }, { - name: 'selfTradeBehavior', - type: { - defined: 'Serum3SelfTradeBehavior', - }, + "name": "selfTradeBehavior", + "type": { + "defined": "Serum3SelfTradeBehavior" + } }, { - name: 'orderType', - type: { - defined: 'Serum3OrderType', - }, + "name": "orderType", + "type": { + "defined": "Serum3OrderType" + } }, { - name: 'clientOrderId', - type: 'u64', + "name": "clientOrderId", + "type": "u64" }, { - name: 'limit', - type: 'u16', - }, - ], + "name": "limit", + "type": "u16" + } + ] }, { - name: 'serum3CancelOrder', - accounts: [ + "name": "serum3CancelOrder", + "accounts": [ { - name: 'group', - isMut: false, - isSigner: false, + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account', - isMut: true, - isSigner: false, + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'owner', - isMut: false, - isSigner: true, + "name": "owner", + "isMut": false, + "isSigner": true }, { - name: 'openOrders', - isMut: true, - isSigner: false, + "name": "openOrders", + "isMut": true, + "isSigner": false }, { - name: 'serumMarket', - isMut: false, - isSigner: false, + "name": "serumMarket", + "isMut": false, + "isSigner": false }, { - name: 'serumProgram', - isMut: false, - isSigner: false, + "name": "serumProgram", + "isMut": false, + "isSigner": false }, { - name: 'serumMarketExternal', - isMut: true, - isSigner: false, + "name": "serumMarketExternal", + "isMut": true, + "isSigner": false }, { - name: 'marketBids', - isMut: true, - isSigner: false, + "name": "marketBids", + "isMut": true, + "isSigner": false }, { - name: 'marketAsks', - isMut: true, - isSigner: false, + "name": "marketAsks", + "isMut": true, + "isSigner": false }, { - name: 'marketEventQueue', - isMut: true, - isSigner: false, - }, + "name": "marketEventQueue", + "isMut": true, + "isSigner": false + } ], - args: [ + "args": [ { - name: 'side', - type: { - defined: 'Serum3Side', - }, + "name": "side", + "type": { + "defined": "Serum3Side" + } }, { - name: 'orderId', - type: 'u128', - }, - ], + "name": "orderId", + "type": "u128" + } + ] }, { - name: 'serum3SettleFunds', - accounts: [ + "name": "serum3SettleFunds", + "accounts": [ { - name: 'group', - isMut: false, - isSigner: false, + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account', - isMut: true, - isSigner: false, + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'owner', - isMut: false, - isSigner: true, + "name": "owner", + "isMut": false, + "isSigner": true }, { - name: 'openOrders', - isMut: true, - isSigner: false, + "name": "openOrders", + "isMut": true, + "isSigner": false }, { - name: 'serumMarket', - isMut: false, - isSigner: false, + "name": "serumMarket", + "isMut": false, + "isSigner": false }, { - name: 'serumProgram', - isMut: false, - isSigner: false, + "name": "serumProgram", + "isMut": false, + "isSigner": false }, { - name: 'serumMarketExternal', - isMut: true, - isSigner: false, + "name": "serumMarketExternal", + "isMut": true, + "isSigner": false }, { - name: 'marketBaseVault', - isMut: true, - isSigner: false, + "name": "marketBaseVault", + "isMut": true, + "isSigner": false }, { - name: 'marketQuoteVault', - isMut: true, - isSigner: false, + "name": "marketQuoteVault", + "isMut": true, + "isSigner": false }, { - name: 'marketVaultSigner', - isMut: false, - isSigner: false, + "name": "marketVaultSigner", + "isMut": false, + "isSigner": false }, { - name: 'quoteBank', - isMut: true, - isSigner: false, + "name": "quoteBank", + "isMut": true, + "isSigner": false }, { - name: 'quoteVault', - isMut: true, - isSigner: false, + "name": "quoteVault", + "isMut": true, + "isSigner": false }, { - name: 'baseBank', - isMut: true, - isSigner: false, + "name": "baseBank", + "isMut": true, + "isSigner": false }, { - name: 'baseVault', - isMut: true, - isSigner: false, + "name": "baseVault", + "isMut": true, + "isSigner": false }, { - name: 'tokenProgram', - isMut: false, - isSigner: false, - }, + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } ], - args: [], + "args": [] }, { - name: 'serum3LiqForceCancelOrders', - accounts: [ + "name": "serum3LiqForceCancelOrders", + "accounts": [ { - name: 'group', - isMut: false, - isSigner: false, + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account', - isMut: true, - isSigner: false, + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'openOrders', - isMut: true, - isSigner: false, + "name": "openOrders", + "isMut": true, + "isSigner": false }, { - name: 'serumMarket', - isMut: false, - isSigner: false, + "name": "serumMarket", + "isMut": false, + "isSigner": false }, { - name: 'serumProgram', - isMut: false, - isSigner: false, + "name": "serumProgram", + "isMut": false, + "isSigner": false }, { - name: 'serumMarketExternal', - isMut: true, - isSigner: false, + "name": "serumMarketExternal", + "isMut": true, + "isSigner": false }, { - name: 'marketBids', - isMut: true, - isSigner: false, + "name": "marketBids", + "isMut": true, + "isSigner": false }, { - name: 'marketAsks', - isMut: true, - isSigner: false, + "name": "marketAsks", + "isMut": true, + "isSigner": false }, { - name: 'marketEventQueue', - isMut: true, - isSigner: false, + "name": "marketEventQueue", + "isMut": true, + "isSigner": false }, { - name: 'marketBaseVault', - isMut: true, - isSigner: false, + "name": "marketBaseVault", + "isMut": true, + "isSigner": false }, { - name: 'marketQuoteVault', - isMut: true, - isSigner: false, + "name": "marketQuoteVault", + "isMut": true, + "isSigner": false }, { - name: 'marketVaultSigner', - isMut: false, - isSigner: false, + "name": "marketVaultSigner", + "isMut": false, + "isSigner": false }, { - name: 'quoteBank', - isMut: true, - isSigner: false, + "name": "quoteBank", + "isMut": true, + "isSigner": false }, { - name: 'quoteVault', - isMut: true, - isSigner: false, + "name": "quoteVault", + "isMut": true, + "isSigner": false }, { - name: 'baseBank', - isMut: true, - isSigner: false, + "name": "baseBank", + "isMut": true, + "isSigner": false }, { - name: 'baseVault', - isMut: true, - isSigner: false, + "name": "baseVault", + "isMut": true, + "isSigner": false }, { - name: 'tokenProgram', - isMut: false, - isSigner: false, - }, + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } ], - args: [ + "args": [ { - name: 'limit', - type: 'u8', - }, - ], + "name": "limit", + "type": "u8" + } + ] }, { - name: 'liqTokenWithToken', - accounts: [ + "name": "liqTokenWithToken", + "accounts": [ { - name: 'group', - isMut: false, - isSigner: false, + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'liqor', - isMut: true, - isSigner: false, + "name": "liqor", + "isMut": true, + "isSigner": false }, { - name: 'liqorOwner', - isMut: false, - isSigner: true, + "name": "liqorOwner", + "isMut": false, + "isSigner": true }, { - name: 'liqee', - isMut: true, - isSigner: false, - }, + "name": "liqee", + "isMut": true, + "isSigner": false + } ], - args: [ + "args": [ { - name: 'assetTokenIndex', - type: 'u16', + "name": "assetTokenIndex", + "type": "u16" }, { - name: 'liabTokenIndex', - type: 'u16', + "name": "liabTokenIndex", + "type": "u16" }, { - name: 'maxLiabTransfer', - type: { - defined: 'I80F48', - }, - }, - ], + "name": "maxLiabTransfer", + "type": { + "defined": "I80F48" + } + } + ] }, { - name: 'perpCreateMarket', - accounts: [ + "name": "perpCreateMarket", + "accounts": [ { - name: 'group', - isMut: false, - isSigner: false, + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'admin', - isMut: false, - isSigner: true, + "name": "admin", + "isMut": false, + "isSigner": true }, { - name: 'oracle', - isMut: false, - isSigner: false, + "name": "oracle", + "isMut": false, + "isSigner": false }, { - name: 'perpMarket', - isMut: true, - isSigner: false, - pda: { - seeds: [ + "name": "perpMarket", + "isMut": true, + "isSigner": false, + "pda": { + "seeds": [ { - kind: 'account', - type: 'publicKey', - path: 'group', + "kind": "account", + "type": "publicKey", + "path": "group" }, { - kind: 'const', - type: 'string', - value: 'PerpMarket', + "kind": "const", + "type": "string", + "value": "PerpMarket" }, { - kind: 'arg', - type: 'u16', - path: 'perp_market_index', - }, - ], - }, + "kind": "arg", + "type": "u16", + "path": "perp_market_index" + } + ] + } }, { - name: 'bids', - isMut: true, - isSigner: false, + "name": "bids", + "isMut": true, + "isSigner": false }, { - name: 'asks', - isMut: true, - isSigner: false, + "name": "asks", + "isMut": true, + "isSigner": false }, { - name: 'eventQueue', - isMut: true, - isSigner: false, + "name": "eventQueue", + "isMut": true, + "isSigner": false }, { - name: 'payer', - isMut: true, - isSigner: true, + "name": "payer", + "isMut": true, + "isSigner": true }, { - name: 'systemProgram', - isMut: false, - isSigner: false, - }, + "name": "systemProgram", + "isMut": false, + "isSigner": false + } ], - args: [ + "args": [ { - name: 'perpMarketIndex', - type: 'u16', + "name": "perpMarketIndex", + "type": "u16" }, { - name: 'baseTokenIndexOpt', - type: { - option: 'u16', - }, + "name": "baseTokenIndexOpt", + "type": { + "option": "u16" + } }, { - name: 'quoteTokenIndex', - type: 'u16', + "name": "quoteTokenIndex", + "type": "u16" }, { - name: 'quoteLotSize', - type: 'i64', + "name": "quoteLotSize", + "type": "i64" }, { - name: 'baseLotSize', - type: 'i64', + "name": "baseLotSize", + "type": "i64" }, { - name: 'maintAssetWeight', - type: 'f32', + "name": "maintAssetWeight", + "type": "f32" }, { - name: 'initAssetWeight', - type: 'f32', + "name": "initAssetWeight", + "type": "f32" }, { - name: 'maintLiabWeight', - type: 'f32', + "name": "maintLiabWeight", + "type": "f32" }, { - name: 'initLiabWeight', - type: 'f32', + "name": "initLiabWeight", + "type": "f32" }, { - name: 'liquidationFee', - type: 'f32', + "name": "liquidationFee", + "type": "f32" }, { - name: 'makerFee', - type: 'f32', + "name": "makerFee", + "type": "f32" }, { - name: 'takerFee', - type: 'f32', - }, - ], + "name": "takerFee", + "type": "f32" + } + ] }, { - name: 'perpPlaceOrder', - accounts: [ + "name": "perpPlaceOrder", + "accounts": [ { - name: 'group', - isMut: false, - isSigner: false, + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'account', - isMut: true, - isSigner: false, + "name": "account", + "isMut": true, + "isSigner": false }, { - name: 'perpMarket', - isMut: true, - isSigner: false, + "name": "perpMarket", + "isMut": true, + "isSigner": false }, { - name: 'asks', - isMut: true, - isSigner: false, + "name": "asks", + "isMut": true, + "isSigner": false }, { - name: 'bids', - isMut: true, - isSigner: false, + "name": "bids", + "isMut": true, + "isSigner": false }, { - name: 'eventQueue', - isMut: true, - isSigner: false, + "name": "eventQueue", + "isMut": true, + "isSigner": false }, { - name: 'oracle', - isMut: false, - isSigner: false, + "name": "oracle", + "isMut": false, + "isSigner": false }, { - name: 'owner', - isMut: false, - isSigner: true, - }, + "name": "owner", + "isMut": false, + "isSigner": true + } ], - args: [ + "args": [ { - name: 'side', - type: { - defined: 'Side', - }, + "name": "side", + "type": { + "defined": "Side" + } }, { - name: 'priceLots', - type: 'i64', + "name": "priceLots", + "type": "i64" }, { - name: 'maxBaseLots', - type: 'i64', + "name": "maxBaseLots", + "type": "i64" }, { - name: 'maxQuoteLots', - type: 'i64', + "name": "maxQuoteLots", + "type": "i64" }, { - name: 'clientOrderId', - type: 'u64', + "name": "clientOrderId", + "type": "u64" }, { - name: 'orderType', - type: { - defined: 'OrderType', - }, + "name": "orderType", + "type": { + "defined": "OrderType" + } }, { - name: 'expiryTimestamp', - type: 'u64', + "name": "expiryTimestamp", + "type": "u64" }, { - name: 'limit', - type: 'u8', - }, - ], + "name": "limit", + "type": "u8" + } + ] }, { - name: 'perpConsumeEvents', - accounts: [ + "name": "perpConsumeEvents", + "accounts": [ { - name: 'group', - isMut: false, - isSigner: false, + "name": "group", + "isMut": false, + "isSigner": false }, { - name: 'perpMarket', - isMut: true, - isSigner: false, + "name": "perpMarket", + "isMut": true, + "isSigner": false }, { - name: 'eventQueue', - isMut: true, - isSigner: false, - }, + "name": "eventQueue", + "isMut": true, + "isSigner": false + } ], - args: [ + "args": [ { - name: 'limit', - type: { - defined: 'usize', - }, - }, - ], + "name": "limit", + "type": { + "defined": "usize" + } + } + ] }, { - name: 'benchmark', - accounts: [], - args: [], - }, + "name": "benchmark", + "accounts": [], + "args": [] + } ], - accounts: [ + "accounts": [ { - name: 'bank', - type: { - kind: 'struct', - fields: [ + "name": "bank", + "type": { + "kind": "struct", + "fields": [ { - name: 'group', - type: 'publicKey', + "name": "group", + "type": "publicKey" }, { - name: 'mint', - type: 'publicKey', + "name": "mint", + "type": "publicKey" }, { - name: 'vault', - type: 'publicKey', + "name": "vault", + "type": "publicKey" }, { - name: 'oracle', - type: 'publicKey', + "name": "oracle", + "type": "publicKey" }, { - name: 'depositIndex', - type: { - defined: 'I80F48', - }, + "name": "depositIndex", + "type": { + "defined": "I80F48" + } }, { - name: 'borrowIndex', - type: { - defined: 'I80F48', - }, + "name": "borrowIndex", + "type": { + "defined": "I80F48" + } }, { - name: 'indexedTotalDeposits', - type: { - defined: 'I80F48', - }, + "name": "indexedTotalDeposits", + "type": { + "defined": "I80F48" + } }, { - name: 'indexedTotalBorrows', - type: { - defined: 'I80F48', - }, + "name": "indexedTotalBorrows", + "type": { + "defined": "I80F48" + } }, { - name: 'maintAssetWeight', - type: { - defined: 'I80F48', - }, + "name": "maintAssetWeight", + "type": { + "defined": "I80F48" + } }, { - name: 'initAssetWeight', - type: { - defined: 'I80F48', - }, + "name": "initAssetWeight", + "type": { + "defined": "I80F48" + } }, { - name: 'maintLiabWeight', - type: { - defined: 'I80F48', - }, + "name": "maintLiabWeight", + "type": { + "defined": "I80F48" + } }, { - name: 'initLiabWeight', - type: { - defined: 'I80F48', - }, + "name": "initLiabWeight", + "type": { + "defined": "I80F48" + } }, { - name: 'liquidationFee', - type: { - defined: 'I80F48', - }, + "name": "liquidationFee", + "type": { + "defined": "I80F48" + } }, { - name: 'dust', - type: { - defined: 'I80F48', - }, + "name": "dust", + "type": { + "defined": "I80F48" + } }, { - name: 'tokenIndex', - type: 'u16', + "name": "tokenIndex", + "type": "u16" }, { - name: 'reserved', - type: { - array: ['u8', 6], - }, - }, - ], - }, + "name": "reserved", + "type": { + "array": [ + "u8", + 6 + ] + } + } + ] + } }, { - name: 'bookSide', - type: { - kind: 'struct', - fields: [ + "name": "bookSide", + "type": { + "kind": "struct", + "fields": [ { - name: 'bookSideType', - type: { - defined: 'BookSideType', - }, + "name": "bookSideType", + "type": { + "defined": "BookSideType" + } }, { - name: 'bumpIndex', - type: { - defined: 'usize', - }, + "name": "bumpIndex", + "type": { + "defined": "usize" + } }, { - name: 'freeListLen', - type: { - defined: 'usize', - }, + "name": "freeListLen", + "type": { + "defined": "usize" + } }, { - name: 'freeListHead', - type: { - defined: 'NodeHandle', - }, + "name": "freeListHead", + "type": { + "defined": "NodeHandle" + } }, { - name: 'rootNode', - type: { - defined: 'NodeHandle', - }, + "name": "rootNode", + "type": { + "defined": "NodeHandle" + } }, { - name: 'leafCount', - type: { - defined: 'usize', - }, + "name": "leafCount", + "type": { + "defined": "usize" + } }, { - name: 'nodes', - type: { - array: [ + "name": "nodes", + "type": { + "array": [ { - defined: 'AnyNode', + "defined": "AnyNode" }, - 1024, - ], - }, - }, - ], - }, + 1024 + ] + } + } + ] + } }, { - name: 'group', - type: { - kind: 'struct', - fields: [ + "name": "group", + "type": { + "kind": "struct", + "fields": [ { - name: 'admin', - type: 'publicKey', + "name": "admin", + "type": "publicKey" }, { - name: 'bump', - type: 'u8', + "name": "bump", + "type": "u8" }, { - name: 'reserved', - type: { - array: ['u8', 7], - }, - }, - ], - }, + "name": "reserved", + "type": { + "array": [ + "u8", + 7 + ] + } + } + ] + } }, { - name: 'mangoAccount', - type: { - kind: 'struct', - fields: [ + "name": "mangoAccount", + "type": { + "kind": "struct", + "fields": [ { - name: 'group', - type: 'publicKey', + "name": "group", + "type": "publicKey" }, { - name: 'owner', - type: 'publicKey', + "name": "owner", + "type": "publicKey" }, { - name: 'delegate', - type: 'publicKey', + "name": "delegate", + "type": "publicKey" }, { - name: 'tokens', - type: { - defined: 'MangoAccountTokens', - }, + "name": "tokens", + "type": { + "defined": "MangoAccountTokens" + } }, { - name: 'serum3', - type: { - defined: 'MangoAccountSerum3', - }, + "name": "serum3", + "type": { + "defined": "MangoAccountSerum3" + } }, { - name: 'perps', - type: { - defined: 'MangoAccountPerps', - }, + "name": "perps", + "type": { + "defined": "MangoAccountPerps" + } }, { - name: 'beingLiquidated', - type: 'u8', + "name": "beingLiquidated", + "type": "u8" }, { - name: 'isBankrupt', - type: 'u8', + "name": "isBankrupt", + "type": "u8" }, { - name: 'accountNum', - type: 'u8', + "name": "accountNum", + "type": "u8" }, { - name: 'bump', - type: 'u8', + "name": "bump", + "type": "u8" }, { - name: 'reserved', - type: { - array: ['u8', 4], - }, - }, - ], - }, + "name": "reserved", + "type": { + "array": [ + "u8", + 4 + ] + } + } + ] + } }, { - name: 'mintInfo', - type: { - kind: 'struct', - fields: [ + "name": "mintInfo", + "type": { + "kind": "struct", + "fields": [ { - name: 'mint', - type: 'publicKey', + "name": "group", + "type": "publicKey" }, { - name: 'bank', - type: 'publicKey', + "name": "mint", + "type": "publicKey" }, { - name: 'vault', - type: 'publicKey', + "name": "bank", + "type": "publicKey" }, { - name: 'oracle', - type: 'publicKey', + "name": "vault", + "type": "publicKey" }, { - name: 'addressLookupTable', - type: 'publicKey', + "name": "oracle", + "type": "publicKey" }, { - name: 'tokenIndex', - type: 'u16', + "name": "addressLookupTable", + "type": "publicKey" }, { - name: 'addressLookupTableBankIndex', - type: 'u8', + "name": "tokenIndex", + "type": "u16" }, { - name: 'addressLookupTableOracleIndex', - type: 'u8', + "name": "addressLookupTableBankIndex", + "type": "u8" }, { - name: 'reserved', - type: { - array: ['u8', 4], - }, + "name": "addressLookupTableOracleIndex", + "type": "u8" }, - ], - }, + { + "name": "reserved", + "type": { + "array": [ + "u8", + 4 + ] + } + } + ] + } }, { - name: 'stubOracle', - type: { - kind: 'struct', - fields: [ + "name": "stubOracle", + "type": { + "kind": "struct", + "fields": [ { - name: 'group', - type: 'publicKey', + "name": "group", + "type": "publicKey" }, { - name: 'mint', - type: 'publicKey', + "name": "mint", + "type": "publicKey" }, { - name: 'price', - type: { - defined: 'I80F48', - }, + "name": "price", + "type": { + "defined": "I80F48" + } }, { - name: 'lastUpdated', - type: 'i64', + "name": "lastUpdated", + "type": "i64" }, { - name: 'reserved', - type: { - array: ['u8', 8], - }, - }, - ], - }, + "name": "reserved", + "type": { + "array": [ + "u8", + 8 + ] + } + } + ] + } }, { - name: 'perpMarket', - type: { - kind: 'struct', - fields: [ + "name": "perpMarket", + "type": { + "kind": "struct", + "fields": [ { - name: 'group', - type: 'publicKey', + "name": "group", + "type": "publicKey" }, { - name: 'oracle', - type: 'publicKey', + "name": "oracle", + "type": "publicKey" }, { - name: 'bids', - type: 'publicKey', + "name": "bids", + "type": "publicKey" }, { - name: 'asks', - type: 'publicKey', + "name": "asks", + "type": "publicKey" }, { - name: 'eventQueue', - type: 'publicKey', + "name": "eventQueue", + "type": "publicKey" }, { - name: 'quoteLotSize', - type: 'i64', + "name": "quoteLotSize", + "type": "i64" }, { - name: 'baseLotSize', - type: 'i64', + "name": "baseLotSize", + "type": "i64" }, { - name: 'maintAssetWeight', - type: { - defined: 'I80F48', - }, + "name": "maintAssetWeight", + "type": { + "defined": "I80F48" + } }, { - name: 'initAssetWeight', - type: { - defined: 'I80F48', - }, + "name": "initAssetWeight", + "type": { + "defined": "I80F48" + } }, { - name: 'maintLiabWeight', - type: { - defined: 'I80F48', - }, + "name": "maintLiabWeight", + "type": { + "defined": "I80F48" + } }, { - name: 'initLiabWeight', - type: { - defined: 'I80F48', - }, + "name": "initLiabWeight", + "type": { + "defined": "I80F48" + } }, { - name: 'liquidationFee', - type: { - defined: 'I80F48', - }, + "name": "liquidationFee", + "type": { + "defined": "I80F48" + } }, { - name: 'makerFee', - type: { - defined: 'I80F48', - }, + "name": "makerFee", + "type": { + "defined": "I80F48" + } }, { - name: 'takerFee', - type: { - defined: 'I80F48', - }, + "name": "takerFee", + "type": { + "defined": "I80F48" + } }, { - name: 'openInterest', - type: 'i64', + "name": "openInterest", + "type": "i64" }, { - name: 'seqNum', - type: 'u64', + "name": "seqNum", + "type": "u64" }, { - name: 'feesAccrued', - type: { - defined: 'I80F48', - }, + "name": "feesAccrued", + "type": { + "defined": "I80F48" + } }, { - name: 'bump', - type: 'u8', + "name": "bump", + "type": "u8" }, { - name: 'perpMarketIndex', - type: 'u16', + "name": "perpMarketIndex", + "type": "u16" }, { - name: 'baseTokenIndex', - type: 'u16', + "name": "baseTokenIndex", + "type": "u16" }, { - name: 'quoteTokenIndex', - type: 'u16', - }, - ], - }, + "name": "quoteTokenIndex", + "type": "u16" + } + ] + } }, { - name: 'queue', - type: { - kind: 'struct', - fields: [ + "name": "queue", + "type": { + "kind": "struct", + "fields": [ { - name: 'header', - type: { - defined: 'H', - }, + "name": "header", + "type": { + "defined": "H" + } }, { - name: 'buf', - type: { - array: [ + "name": "buf", + "type": { + "array": [ { - defined: 'H::Item', + "defined": "H::Item" }, - 512, - ], - }, - }, - ], - }, + 512 + ] + } + } + ] + } }, { - name: 'eventQueueHeader', - type: { - kind: 'struct', - fields: [ + "name": "eventQueueHeader", + "type": { + "kind": "struct", + "fields": [ { - name: 'head', - type: { - defined: 'usize', - }, + "name": "head", + "type": { + "defined": "usize" + } }, { - name: 'count', - type: { - defined: 'usize', - }, + "name": "count", + "type": { + "defined": "usize" + } }, { - name: 'seqNum', - type: { - defined: 'usize', - }, - }, - ], - }, + "name": "seqNum", + "type": { + "defined": "usize" + } + } + ] + } }, { - name: 'serum3Market', - type: { - kind: 'struct', - fields: [ + "name": "serum3Market", + "type": { + "kind": "struct", + "fields": [ { - name: 'group', - type: 'publicKey', + "name": "group", + "type": "publicKey" }, { - name: 'serumProgram', - type: 'publicKey', + "name": "serumProgram", + "type": "publicKey" }, { - name: 'serumMarketExternal', - type: 'publicKey', + "name": "serumMarketExternal", + "type": "publicKey" }, { - name: 'marketIndex', - type: 'u16', + "name": "marketIndex", + "type": "u16" }, { - name: 'baseTokenIndex', - type: 'u16', + "name": "baseTokenIndex", + "type": "u16" }, { - name: 'quoteTokenIndex', - type: 'u16', + "name": "quoteTokenIndex", + "type": "u16" }, { - name: 'bump', - type: 'u8', + "name": "bump", + "type": "u8" }, { - name: 'reserved', - type: { - array: ['u8', 1], - }, - }, - ], - }, - }, + "name": "reserved", + "type": { + "array": [ + "u8", + 1 + ] + } + } + ] + } + } ], - types: [ + "types": [ { - name: 'TokenAccount', - type: { - kind: 'struct', - fields: [ + "name": "TokenAccount", + "type": { + "kind": "struct", + "fields": [ { - name: 'indexedValue', - type: { - defined: 'I80F48', - }, + "name": "indexedValue", + "type": { + "defined": "I80F48" + } }, { - name: 'tokenIndex', - type: 'u16', + "name": "tokenIndex", + "type": "u16" }, { - name: 'inUseCount', - type: 'u8', + "name": "inUseCount", + "type": "u8" }, { - name: 'reserved', - type: { - array: ['u8', 5], - }, - }, - ], - }, + "name": "reserved", + "type": { + "array": [ + "u8", + 5 + ] + } + } + ] + } }, { - name: 'MangoAccountTokens', - type: { - kind: 'struct', - fields: [ + "name": "MangoAccountTokens", + "type": { + "kind": "struct", + "fields": [ { - name: 'values', - type: { - array: [ + "name": "values", + "type": { + "array": [ { - defined: 'TokenAccount', + "defined": "TokenAccount" }, - 16, - ], - }, - }, - ], - }, + 16 + ] + } + } + ] + } }, { - name: 'Serum3Account', - type: { - kind: 'struct', - fields: [ + "name": "Serum3Account", + "type": { + "kind": "struct", + "fields": [ { - name: 'openOrders', - type: 'publicKey', + "name": "openOrders", + "type": "publicKey" }, { - name: 'marketIndex', - type: 'u16', + "name": "marketIndex", + "type": "u16" }, { - name: 'baseTokenIndex', - type: 'u16', + "name": "baseTokenIndex", + "type": "u16" }, { - name: 'quoteTokenIndex', - type: 'u16', + "name": "quoteTokenIndex", + "type": "u16" }, { - name: 'reserved', - type: { - array: ['u8', 2], - }, - }, - ], - }, + "name": "reserved", + "type": { + "array": [ + "u8", + 2 + ] + } + } + ] + } }, { - name: 'MangoAccountSerum3', - type: { - kind: 'struct', - fields: [ + "name": "MangoAccountSerum3", + "type": { + "kind": "struct", + "fields": [ { - name: 'values', - type: { - array: [ + "name": "values", + "type": { + "array": [ { - defined: 'Serum3Account', + "defined": "Serum3Account" }, - 8, - ], - }, - }, - ], - }, + 8 + ] + } + } + ] + } }, { - name: 'PerpAccount', - type: { - kind: 'struct', - fields: [ + "name": "PerpAccount", + "type": { + "kind": "struct", + "fields": [ { - name: 'marketIndex', - type: 'u16', + "name": "marketIndex", + "type": "u16" }, { - name: 'reserved', - type: { - array: ['u8', 6], - }, + "name": "reserved", + "type": { + "array": [ + "u8", + 6 + ] + } }, { - name: 'basePositionLots', - type: 'i64', + "name": "basePositionLots", + "type": "i64" }, { - name: 'quotePositionNative', - type: { - defined: 'I80F48', - }, + "name": "quotePositionNative", + "type": { + "defined": "I80F48" + } }, { - name: 'bidsBaseLots', - type: 'i64', + "name": "bidsBaseLots", + "type": "i64" }, { - name: 'asksBaseLots', - type: 'i64', + "name": "asksBaseLots", + "type": "i64" }, { - name: 'takerBaseLots', - type: 'i64', + "name": "takerBaseLots", + "type": "i64" }, { - name: 'takerQuoteLots', - type: 'i64', - }, - ], - }, + "name": "takerQuoteLots", + "type": "i64" + } + ] + } }, { - name: 'MangoAccountPerps', - type: { - kind: 'struct', - fields: [ + "name": "MangoAccountPerps", + "type": { + "kind": "struct", + "fields": [ { - name: 'accounts', - type: { - array: [ + "name": "accounts", + "type": { + "array": [ { - defined: 'PerpAccount', + "defined": "PerpAccount" }, - 8, - ], - }, + 8 + ] + } }, { - name: 'orderMarket', - type: { - array: ['u16', 8], - }, + "name": "orderMarket", + "type": { + "array": [ + "u16", + 8 + ] + } }, { - name: 'orderSide', - type: { - array: [ + "name": "orderSide", + "type": { + "array": [ { - defined: 'Side', + "defined": "Side" }, - 8, - ], - }, + 8 + ] + } }, { - name: 'orderId', - type: { - array: ['i128', 8], - }, + "name": "orderId", + "type": { + "array": [ + "i128", + 8 + ] + } }, { - name: 'orderClientId', - type: { - array: ['u64', 8], - }, - }, - ], - }, + "name": "orderClientId", + "type": { + "array": [ + "u64", + 8 + ] + } + } + ] + } }, { - name: 'TokenIndex', - type: { - kind: 'struct', - fields: [ + "name": "TokenIndex", + "type": { + "kind": "struct", + "fields": [ { - name: 'val', - type: 'u16', - }, - ], - }, + "name": "val", + "type": "u16" + } + ] + } }, { - name: 'Serum3MarketIndex', - type: { - kind: 'struct', - fields: [ + "name": "Serum3MarketIndex", + "type": { + "kind": "struct", + "fields": [ { - name: 'val', - type: 'u16', - }, - ], - }, + "name": "val", + "type": "u16" + } + ] + } }, { - name: 'PerpMarketIndex', - type: { - kind: 'struct', - fields: [ + "name": "PerpMarketIndex", + "type": { + "kind": "struct", + "fields": [ { - name: 'val', - type: 'u16', - }, - ], - }, + "name": "val", + "type": "u16" + } + ] + } }, { - name: 'I80F48', - type: { - kind: 'struct', - fields: [ + "name": "I80F48", + "type": { + "kind": "struct", + "fields": [ { - name: 'val', - type: 'i128', - }, - ], - }, + "name": "val", + "type": "i128" + } + ] + } }, { - name: 'BookSideType', - type: { - kind: 'enum', - variants: [ + "name": "BookSideType", + "type": { + "kind": "enum", + "variants": [ { - name: 'Bids', + "name": "Bids" }, { - name: 'Asks', - }, - ], - }, + "name": "Asks" + } + ] + } }, { - name: 'HealthType', - type: { - kind: 'enum', - variants: [ + "name": "HealthType", + "type": { + "kind": "enum", + "variants": [ { - name: 'Init', + "name": "Init" }, { - name: 'Maint', - }, - ], - }, + "name": "Maint" + } + ] + } }, { - name: 'NodeTag', - type: { - kind: 'enum', - variants: [ + "name": "NodeTag", + "type": { + "kind": "enum", + "variants": [ { - name: 'Uninitialized', + "name": "Uninitialized" }, { - name: 'InnerNode', + "name": "InnerNode" }, { - name: 'LeafNode', + "name": "LeafNode" }, { - name: 'FreeNode', + "name": "FreeNode" }, { - name: 'LastFreeNode', - }, - ], - }, + "name": "LastFreeNode" + } + ] + } }, { - name: 'NodeRef', - type: { - kind: 'enum', - variants: [ + "name": "NodeRef", + "type": { + "kind": "enum", + "variants": [ { - name: 'Inner', - fields: [ + "name": "Inner", + "fields": [ { - defined: "&'aInnerNode", - }, - ], + "defined": "&'aInnerNode" + } + ] }, { - name: 'Leaf', - fields: [ + "name": "Leaf", + "fields": [ { - defined: "&'aLeafNode", - }, - ], - }, - ], - }, + "defined": "&'aLeafNode" + } + ] + } + ] + } }, { - name: 'NodeRefMut', - type: { - kind: 'enum', - variants: [ + "name": "NodeRefMut", + "type": { + "kind": "enum", + "variants": [ { - name: 'Inner', - fields: [ + "name": "Inner", + "fields": [ { - defined: "&'amutInnerNode", - }, - ], + "defined": "&'amutInnerNode" + } + ] }, { - name: 'Leaf', - fields: [ + "name": "Leaf", + "fields": [ { - defined: "&'amutLeafNode", - }, - ], - }, - ], - }, + "defined": "&'amutLeafNode" + } + ] + } + ] + } }, { - name: 'OracleType', - type: { - kind: 'enum', - variants: [ + "name": "OracleType", + "type": { + "kind": "enum", + "variants": [ { - name: 'Stub', + "name": "Stub" }, { - name: 'Pyth', - }, - ], - }, + "name": "Pyth" + } + ] + } }, { - name: 'OrderType', - type: { - kind: 'enum', - variants: [ + "name": "OrderType", + "type": { + "kind": "enum", + "variants": [ { - name: 'Limit', + "name": "Limit" }, { - name: 'ImmediateOrCancel', + "name": "ImmediateOrCancel" }, { - name: 'PostOnly', + "name": "PostOnly" }, { - name: 'Market', + "name": "Market" }, { - name: 'PostOnlySlide', - }, - ], - }, + "name": "PostOnlySlide" + } + ] + } }, { - name: 'Side', - type: { - kind: 'enum', - variants: [ + "name": "Side", + "type": { + "kind": "enum", + "variants": [ { - name: 'Bid', + "name": "Bid" }, { - name: 'Ask', - }, - ], - }, + "name": "Ask" + } + ] + } }, { - name: 'EventType', - type: { - kind: 'enum', - variants: [ + "name": "EventType", + "type": { + "kind": "enum", + "variants": [ { - name: 'Fill', + "name": "Fill" }, { - name: 'Out', + "name": "Out" }, { - name: 'Liquidate', - }, - ], - }, + "name": "Liquidate" + } + ] + } }, { - name: 'Serum3SelfTradeBehavior', - type: { - kind: 'enum', - variants: [ + "name": "Serum3SelfTradeBehavior", + "type": { + "kind": "enum", + "variants": [ { - name: 'DecrementTake', + "name": "DecrementTake" }, { - name: 'CancelProvide', + "name": "CancelProvide" }, { - name: 'AbortTransaction', - }, - ], - }, + "name": "AbortTransaction" + } + ] + } }, { - name: 'Serum3OrderType', - type: { - kind: 'enum', - variants: [ + "name": "Serum3OrderType", + "type": { + "kind": "enum", + "variants": [ { - name: 'Limit', + "name": "Limit" }, { - name: 'ImmediateOrCancel', + "name": "ImmediateOrCancel" }, { - name: 'PostOnly', - }, - ], - }, + "name": "PostOnly" + } + ] + } }, { - name: 'Serum3Side', - type: { - kind: 'enum', - variants: [ + "name": "Serum3Side", + "type": { + "kind": "enum", + "variants": [ { - name: 'Bid', + "name": "Bid" }, { - name: 'Ask', - }, - ], - }, + "name": "Ask" + } + ] + } }, { - name: 'ProgramInstruction', - type: { - kind: 'enum', - variants: [ + "name": "ProgramInstruction", + "type": { + "kind": "enum", + "variants": [ { - name: 'CreateLookupTable', - fields: [ + "name": "CreateLookupTable", + "fields": [ { - name: 'recent_slot', - type: { - defined: 'Slot', - }, + "name": "recent_slot", + "type": { + "defined": "Slot" + } }, { - name: 'bump_seed', - type: 'u8', - }, - ], + "name": "bump_seed", + "type": "u8" + } + ] }, { - name: 'FreezeLookupTable', + "name": "FreezeLookupTable" }, { - name: 'ExtendLookupTable', - fields: [ + "name": "ExtendLookupTable", + "fields": [ { - name: 'new_addresses', - type: { - vec: 'publicKey', - }, - }, - ], + "name": "new_addresses", + "type": { + "vec": "publicKey" + } + } + ] }, { - name: 'DeactivateLookupTable', + "name": "DeactivateLookupTable" }, { - name: 'CloseLookupTable', - }, - ], - }, - }, + "name": "CloseLookupTable" + } + ] + } + } ], - errors: [ + "errors": [ { - code: 6000, - name: 'SomeError', - msg: '', + "code": 6000, + "name": "SomeError", + "msg": "" }, { - code: 6001, - name: 'MathError', - msg: '', + "code": 6001, + "name": "MathError", + "msg": "" }, { - code: 6002, - name: 'UnexpectedOracle', - msg: '', + "code": 6002, + "name": "UnexpectedOracle", + "msg": "" }, { - code: 6003, - name: 'UnknownOracleType', - msg: '', + "code": 6003, + "name": "UnknownOracleType", + "msg": "" }, { - code: 6004, - name: 'InvalidMarginTradeTargetCpiProgram', - msg: '', + "code": 6004, + "name": "InvalidMarginTradeTargetCpiProgram", + "msg": "" }, { - code: 6005, - name: 'HealthMustBePositive', - msg: '', + "code": 6005, + "name": "HealthMustBePositive", + "msg": "" }, { - code: 6006, - name: 'IsBankrupt', - msg: 'The account is bankrupt', - }, - ], + "code": 6006, + "name": "IsBankrupt", + "msg": "The account is bankrupt" + } + ] };