diff --git a/ts/example.ts b/ts/example.ts index c9285a3b1..0422315f6 100644 --- a/ts/example.ts +++ b/ts/example.ts @@ -14,11 +14,25 @@ async function main() { options, ); - const privateKeyPath = os.homedir() + '/.config/solana/dev.json'; - const owner = Keypair.fromSecretKey( - Buffer.from(JSON.parse(fs.readFileSync(privateKeyPath, 'utf-8'))), + const admin = Keypair.fromSecretKey( + Buffer.from( + JSON.parse( + fs.readFileSync(os.homedir() + '/.config/solana/dev.json', 'utf-8'), + ), + ), + ); + const wallet = new Wallet(admin); + + const payer = Keypair.fromSecretKey( + Buffer.from( + JSON.parse( + fs.readFileSync( + os.homedir() + '/.config/solana/mango-devnet.json', + 'utf-8', + ), + ), + ), ); - const wallet = new Wallet(owner); const provider = new Provider(connection, wallet, options); const client = await MangoClient.connect(provider, true); @@ -27,7 +41,7 @@ async function main() { let gpa = await client.program.account.group.all([ { memcmp: { - bytes: bs58.encode(owner.publicKey.toBuffer()), + bytes: bs58.encode(admin.publicKey.toBuffer()), offset: 8, }, }, @@ -38,17 +52,17 @@ async function main() { await client.program.methods .createGroup() .accounts({ - admin: owner.publicKey, - payer: owner.publicKey, + admin: admin.publicKey, + payer: admin.publicKey, system_program: SystemProgram.programId, }) - .signers([owner]) + .signers([admin]) .rpc(); gpa = await client.program.account.group.all([ { memcmp: { - bytes: bs58.encode(owner.publicKey.toBuffer()), + bytes: bs58.encode(admin.publicKey.toBuffer()), offset: 8, }, }, @@ -67,35 +81,20 @@ async function main() { const mngoOracle = new web3.PublicKey( '8k7F9Xb36oFJsjpCKpsXvg4cgBRoZtwNTc3EzG5Ttd2o', ); - // some random address atm - const address_lookup_table = new web3.PublicKey( - '8k7F9Xb36oFJsjpCKpsXvg4cgBRoZtwNTc3EzG5Ttd2o', - ); - const address_lookup_table_program = new web3.PublicKey( - 'AddressLookupTab1e1111111111111111111111111', - ); + await client.program.methods - .registerToken( - TokenIndex.fromValue(new BN(0)) as any, - 0.8, - 0.6, - 1.2, - 1.4, - 0.02, - ) + .registerToken(0, 0.8, 0.6, 1.2, 1.4, 0.02) .accounts({ group: group.publicKey, - admin: owner.publicKey, + admin: admin.publicKey, mint, oracle: mngoOracle, - address_lookup_table, - payer: owner.publicKey, + payer: payer.publicKey, token_program: TOKEN_PROGRAM_ID, system_program: SystemProgram.programId, - address_lookup_table_program, rent: web3.SYSVAR_RENT_PUBKEY, }) - .signers([owner]) + .signers([admin, payer]) .rpc(); gpa = await client.program.account.bank.all([ diff --git a/ts/mango_v4.ts b/ts/mango_v4.ts index 61160116d..983d05c27 100644 --- a/ts/mango_v4.ts +++ b/ts/mango_v4.ts @@ -1,4443 +1,4361 @@ 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": { - "defined": "TokenIndex" - }, - "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": { - "defined": "TokenIndex" - }, - "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": { - "defined": "TokenIndex" - } + 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": "createStubOracle", - "accounts": [ + name: 'createStubOracle'; + accounts: [ { - "name": "oracle", - "isMut": true, - "isSigner": false, - "pda": { - "seeds": [ + name: 'oracle'; + isMut: true; + isSigner: false; + pda: { + seeds: [ { - "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": "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": "oracle", - "isMut": true, - "isSigner": false - } - ], - "args": [ + name: 'oracle'; + isMut: true; + isSigner: false; + }, + ]; + 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": { - "defined": "Serum3MarketIndex" - } - } - ] + name: 'marketIndex'; + type: { + defined: 'Serum3MarketIndex'; + }; + }, + ]; }, { - "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": "order", - "type": { - "defined": "instructions::NewOrderInstructionData" - } - } - ] + name: 'order'; + type: { + defined: 'instructions::NewOrderInstructionData'; + }; + }, + ]; }, { - "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": "order", - "type": { - "defined": "instructions::CancelOrderInstructionData" - } - } - ] + name: 'order'; + type: { + defined: 'instructions::CancelOrderInstructionData'; + }; + }, + ]; }, { - "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": { - "defined": "TokenIndex" - } + name: 'assetTokenIndex'; + type: 'u16'; }, { - "name": "liabTokenIndex", - "type": { - "defined": "TokenIndex" - } + name: 'liabTokenIndex'; + type: 'u16'; }, { - "name": "maxLiabTransfer", - "type": { - "defined": "I80F48" - } - } - ] + name: 'maxLiabTransfer'; + type: { + defined: 'I80F48'; + }; + }, + ]; }, { - "name": "createPerpMarket", - "accounts": [ + name: 'createPerpMarket'; + 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": { - "defined": "PerpMarketIndex" - }, - "path": "perp_market_index" - } - ] - } + kind: 'arg'; + type: { + defined: 'PerpMarketIndex'; + }; + 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": { - "defined": "PerpMarketIndex" - } + name: 'perpMarketIndex'; + type: { + defined: 'PerpMarketIndex'; + }; }, { - "name": "baseTokenIndexOpt", - "type": { - "option": { - "defined": "TokenIndex" - } - } + name: 'baseTokenIndexOpt'; + type: { + option: 'u16'; + }; }, { - "name": "quoteTokenIndex", - "type": { - "defined": "TokenIndex" - } + 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": "placePerpOrder", - "accounts": [ + name: 'placePerpOrder'; + 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": "price", - "type": "i64" + name: 'price'; + type: 'i64'; }, { - "name": "maxBaseQuantity", - "type": "i64" + name: 'maxBaseQuantity'; + type: 'i64'; }, { - "name": "maxQuoteQuantity", - "type": "i64" + name: 'maxQuoteQuantity'; + 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": "consumeEvents", - "accounts": [ + name: 'consumeEvents'; + 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": { - "defined": "TokenIndex" - } - } - ] - } + name: 'tokenIndex'; + type: 'u16'; + }, + ]; + }; }, { - "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": "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": "tokenAccountMap", - "type": { - "defined": "TokenAccountMap" - } + name: 'tokenAccountMap'; + type: { + defined: 'TokenAccountMap'; + }; }, { - "name": "serum3AccountMap", - "type": { - "defined": "Serum3AccountMap" - } + name: 'serum3AccountMap'; + type: { + defined: 'Serum3AccountMap'; + }; }, { - "name": "perpAccountMap", - "type": { - "defined": "PerpAccountMap" - } + name: 'perpAccountMap'; + type: { + defined: 'PerpAccountMap'; + }; }, { - "name": "orderMarket", - "type": { - "array": [ + name: 'orderMarket'; + type: { + array: [ { - "defined": "PerpMarketIndex" + defined: 'PerpMarketIndex'; }, - 8 - ] - } + 8, + ]; + }; }, { - "name": "orderSide", - "type": { - "array": [ + name: 'orderSide'; + type: { + array: [ { - "defined": "Side" + defined: 'Side'; }, - 8 - ] - } + 8, + ]; + }; }, { - "name": "orders", - "type": { - "array": [ - "i128", - 8 - ] - } + name: 'orders'; + type: { + array: ['i128', 8]; + }; }, { - "name": "clientOrderIds", - "type": { - "array": [ - "u64", - 8 - ] - } + name: 'clientOrderIds'; + type: { + array: ['u64', 8]; + }; }, { - "name": "beingLiquidated", - "type": "bool" + name: 'beingLiquidated'; + type: 'bool'; }, { - "name": "isBankrupt", - "type": "bool" + name: 'isBankrupt'; + type: 'bool'; }, { - "name": "accountNum", - "type": "u8" + name: 'accountNum'; + type: 'u8'; }, { - "name": "bump", - "type": "u8" + name: 'bump'; + type: 'u8'; }, { - "name": "reserved", - "type": { - "array": [ - "u8", - 5 - ] - } - } - ] - } + name: 'reserved'; + type: { + array: ['u8', 5]; + }; + }, + ]; + }; }, { - "name": "mintInfo", - "type": { - "kind": "struct", - "fields": [ + name: 'mintInfo'; + type: { + kind: 'struct'; + fields: [ { - "name": "mint", - "type": "publicKey" + name: 'mint'; + type: 'publicKey'; }, { - "name": "bank", - "type": "publicKey" + name: 'bank'; + type: 'publicKey'; }, { - "name": "vault", - "type": "publicKey" + name: 'vault'; + type: 'publicKey'; }, { - "name": "oracle", - "type": "publicKey" + name: 'oracle'; + type: 'publicKey'; }, { - "name": "tokenIndex", - "type": { - "defined": "TokenIndex" - } + name: 'tokenIndex'; + type: 'u16'; }, { - "name": "addressLookupTable", - "type": "publicKey" + name: 'addressLookupTable'; + type: 'publicKey'; }, { - "name": "addressLookupTableBankIndex", - "type": "u8" + name: 'addressLookupTableBankIndex'; + type: 'u8'; }, { - "name": "addressLookupTableOracleIndex", - "type": "u8" - } - ] - } + name: 'addressLookupTableOracleIndex'; + type: 'u8'; + }, + ]; + }; }, { - "name": "stubOracle", - "type": { - "kind": "struct", - "fields": [ + name: 'stubOracle'; + type: { + kind: 'struct'; + fields: [ { - "name": "price", - "type": { - "defined": "I80F48" - } + name: 'price'; + type: { + defined: 'I80F48'; + }; }, { - "name": "lastUpdated", - "type": "i64" - } - ] - } + name: 'lastUpdated'; + type: 'i64'; + }, + ]; + }; }, { - "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": { - "defined": "PerpMarketIndex" - } + name: 'perpMarketIndex'; + type: { + defined: 'PerpMarketIndex'; + }; }, { - "name": "baseTokenIndex", - "type": { - "defined": "TokenIndex" - } + name: 'baseTokenIndex'; + type: 'u16'; }, { - "name": "quoteTokenIndex", - "type": { - "defined": "TokenIndex" - } - } - ] - } + 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": { - "defined": "Serum3MarketIndex" - } + name: 'marketIndex'; + type: { + defined: 'Serum3MarketIndex'; + }; }, { - "name": "baseTokenIndex", - "type": { - "defined": "TokenIndex" - } + name: 'baseTokenIndex'; + type: 'u16'; }, { - "name": "quoteTokenIndex", - "type": { - "defined": "TokenIndex" - } + name: 'quoteTokenIndex'; + type: 'u16'; }, { - "name": "bump", - "type": "u8" - } - ] - } - } - ], - "types": [ + name: 'bump'; + type: 'u8'; + }, + ]; + }; + }, + ]; + 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": { - "defined": "TokenIndex" - } + name: 'tokenIndex'; + type: 'u16'; }, { - "name": "inUseCount", - "type": "u8" - } - ] - } + name: 'inUseCount'; + type: 'u8'; + }, + ]; + }; }, { - "name": "TokenAccountMap", - "type": { - "kind": "struct", - "fields": [ + name: 'TokenAccountMap'; + 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": { - "defined": "Serum3MarketIndex" - } + name: 'marketIndex'; + type: { + defined: 'Serum3MarketIndex'; + }; }, { - "name": "baseTokenIndex", - "type": { - "defined": "TokenIndex" - } + name: 'baseTokenIndex'; + type: 'u16'; }, { - "name": "quoteTokenIndex", - "type": { - "defined": "TokenIndex" - } - } - ] - } + name: 'quoteTokenIndex'; + type: 'u16'; + }, + ]; + }; }, { - "name": "Serum3AccountMap", - "type": { - "kind": "struct", - "fields": [ + name: 'Serum3AccountMap'; + 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": { - "defined": "PerpMarketIndex" - } + name: 'marketIndex'; + type: { + defined: 'PerpMarketIndex'; + }; }, { - "name": "basePosition", - "type": "i64" + name: 'basePosition'; + type: 'i64'; }, { - "name": "quotePosition", - "type": { - "defined": "I80F48" - } + name: 'quotePosition'; + type: { + defined: 'I80F48'; + }; }, { - "name": "bidsQuantity", - "type": "i64" + name: 'bidsQuantity'; + type: 'i64'; }, { - "name": "asksQuantity", - "type": "i64" + name: 'asksQuantity'; + type: 'i64'; }, { - "name": "takerBase", - "type": "i64" + name: 'takerBase'; + type: 'i64'; }, { - "name": "takerQuote", - "type": "i64" - } - ] - } + name: 'takerQuote'; + type: 'i64'; + }, + ]; + }; }, { - "name": "PerpAccountMap", - "type": { - "kind": "struct", - "fields": [ + name: 'PerpAccountMap'; + type: { + kind: 'struct'; + fields: [ { - "name": "values", - "type": { - "array": [ + name: 'values'; + type: { + array: [ { - "defined": "PerpAccount" + defined: 'PerpAccount'; }, - 8 - ] - } - } - ] - } + 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": "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": { - "defined": "TokenIndex" + kind: 'arg', + type: 'u16', + path: 'token_index', + }, + ], + }, + }, + { + name: 'vault', + isMut: true, + isSigner: false, + pda: { + seeds: [ + { + kind: 'account', + type: 'publicKey', + path: 'group', + }, + { + kind: 'const', + type: 'string', + value: 'Vault', + }, + { + kind: 'arg', + type: 'u16', + path: 'token_index', + }, + ], + }, + }, + { + name: 'mintInfo', + isMut: true, + isSigner: false, + pda: { + seeds: [ + { + kind: 'account', + type: 'publicKey', + path: 'group', + }, + { + kind: 'const', + type: 'string', + value: 'MintInfo', + }, + { + kind: 'account', + type: 'publicKey', + account: 'Mint', + path: 'mint', + }, + ], + }, + }, + { + name: 'oracle', + isMut: false, + isSigner: false, + }, + { + name: 'payer', + isMut: true, + isSigner: true, + }, + { + name: 'tokenProgram', + isMut: false, + isSigner: false, + }, + { + name: 'systemProgram', + isMut: false, + isSigner: false, + }, + { + name: 'rent', + isMut: false, + isSigner: false, + }, + ], + args: [ + { + name: 'tokenIndex', + type: 'u16', + }, + { + name: 'maintAssetWeight', + type: 'f32', + }, + { + name: 'initAssetWeight', + type: 'f32', + }, + { + name: 'maintLiabWeight', + type: 'f32', + }, + { + name: 'initLiabWeight', + type: 'f32', + }, + { + name: 'liquidationFee', + type: 'f32', + }, + ], + }, + { + name: 'createAccount', + accounts: [ + { + name: 'group', + isMut: false, + isSigner: false, + }, + { + name: 'account', + isMut: true, + isSigner: false, + pda: { + seeds: [ + { + kind: 'account', + type: 'publicKey', + path: 'group', + }, + { + kind: 'const', + type: 'string', + value: 'MangoAccount', + }, + { + kind: 'account', + type: 'publicKey', + path: 'owner', + }, + { + kind: 'arg', + type: 'u8', + path: 'account_num', + }, + ], + }, + }, + { + name: 'owner', + isMut: false, + isSigner: true, + }, + { + name: 'payer', + isMut: true, + isSigner: true, + }, + { + name: 'systemProgram', + isMut: false, + isSigner: false, + }, + ], + args: [ + { + name: 'accountNum', + type: 'u8', + }, + ], + }, + { + name: 'createStubOracle', + accounts: [ + { + name: 'oracle', + isMut: true, + isSigner: false, + pda: { + seeds: [ + { + kind: 'const', + type: 'string', + value: 'StubOracle', + }, + { + kind: 'account', + type: 'publicKey', + account: 'Mint', + path: 'token_mint', + }, + ], + }, + }, + { + name: 'tokenMint', + isMut: false, + isSigner: false, + }, + { + name: 'payer', + isMut: true, + isSigner: true, + }, + { + name: 'systemProgram', + isMut: false, + isSigner: false, + }, + ], + args: [ + { + name: 'price', + type: { + defined: 'I80F48', + }, + }, + ], + }, + { + name: 'setStubOracle', + accounts: [ + { + name: 'oracle', + isMut: true, + isSigner: false, + }, + ], + args: [ + { + name: 'price', + type: { + defined: 'I80F48', + }, + }, + ], + }, + { + name: 'deposit', + accounts: [ + { + name: 'group', + isMut: false, + isSigner: false, + }, + { + name: 'account', + isMut: true, + isSigner: false, + }, + { + name: 'bank', + isMut: true, + isSigner: false, + }, + { + name: 'vault', + isMut: true, + isSigner: false, + }, + { + name: 'tokenAccount', + isMut: true, + isSigner: false, + }, + { + name: 'tokenAuthority', + isMut: false, + isSigner: true, + }, + { + name: 'tokenProgram', + isMut: false, + isSigner: false, + }, + ], + args: [ + { + name: 'amount', + type: 'u64', + }, + ], + }, + { + name: 'withdraw', + accounts: [ + { + name: 'group', + isMut: false, + isSigner: false, + }, + { + name: 'account', + isMut: true, + isSigner: false, + }, + { + name: 'owner', + isMut: false, + isSigner: true, + }, + { + name: 'bank', + isMut: true, + isSigner: false, + }, + { + name: 'vault', + isMut: true, + isSigner: false, + }, + { + name: 'tokenAccount', + isMut: true, + isSigner: false, + }, + { + name: 'tokenProgram', + isMut: false, + isSigner: false, + }, + ], + args: [ + { + name: 'amount', + type: 'u64', + }, + { + name: 'allowBorrow', + type: 'bool', + }, + ], + }, + { + name: 'marginTrade', + accounts: [ + { + name: 'group', + isMut: false, + isSigner: false, + }, + { + name: 'account', + isMut: true, + isSigner: false, + }, + { + name: 'owner', + isMut: false, + isSigner: true, + }, + ], + args: [ + { + name: 'banksLen', + type: { + defined: 'usize', + }, + }, + { + name: 'cpiData', + type: 'bytes', + }, + ], + }, + { + name: 'serum3RegisterMarket', + accounts: [ + { + name: 'group', + isMut: true, + isSigner: false, + }, + { + name: 'admin', + isMut: false, + isSigner: true, + }, + { + name: 'serumProgram', + isMut: false, + isSigner: false, + }, + { + name: 'serumMarketExternal', + isMut: false, + isSigner: false, + }, + { + name: 'serumMarket', + isMut: true, + isSigner: false, + pda: { + seeds: [ + { + kind: 'account', + type: 'publicKey', + path: 'group', + }, + { + kind: 'const', + type: 'string', + value: 'Serum3Market', + }, + { + kind: 'account', + type: 'publicKey', + path: 'serum_market_external', + }, + ], + }, + }, + { + name: 'quoteBank', + isMut: false, + isSigner: false, + }, + { + name: 'baseBank', + isMut: false, + isSigner: false, + }, + { + name: 'payer', + isMut: true, + isSigner: true, + }, + { + name: 'systemProgram', + isMut: false, + isSigner: false, + }, + ], + args: [ + { + name: 'marketIndex', + type: { + defined: 'Serum3MarketIndex', + }, + }, + ], + }, + { + name: 'serum3CreateOpenOrders', + accounts: [ + { + name: 'group', + isMut: false, + isSigner: false, + }, + { + name: 'account', + isMut: true, + isSigner: false, + }, + { + name: 'serumMarket', + isMut: false, + isSigner: false, + }, + { + name: 'serumProgram', + isMut: false, + isSigner: false, + }, + { + name: 'serumMarketExternal', + isMut: false, + isSigner: false, + }, + { + name: 'openOrders', + isMut: true, + isSigner: false, + pda: { + seeds: [ + { + kind: 'account', + type: 'publicKey', + path: 'account', + }, + { + kind: 'const', + type: 'string', + value: 'Serum3OO', + }, + { + kind: 'account', + type: 'publicKey', + path: 'serum_market', + }, + ], + }, + }, + { + name: 'owner', + isMut: false, + isSigner: true, + }, + { + name: 'payer', + isMut: true, + isSigner: true, + }, + { + name: 'systemProgram', + isMut: false, + isSigner: false, + }, + { + name: 'rent', + isMut: false, + isSigner: false, + }, + ], + args: [], + }, + { + name: 'serum3PlaceOrder', + accounts: [ + { + name: 'group', + isMut: false, + isSigner: false, + }, + { + name: 'account', + isMut: true, + isSigner: false, + }, + { + name: 'owner', + isMut: false, + isSigner: true, + }, + { + name: 'openOrders', + isMut: true, + isSigner: false, + }, + { + name: 'serumMarket', + isMut: false, + isSigner: false, + }, + { + name: 'serumProgram', + isMut: false, + isSigner: false, + }, + { + name: 'serumMarketExternal', + isMut: true, + isSigner: false, + }, + { + name: 'marketBids', + isMut: true, + isSigner: false, + }, + { + name: 'marketAsks', + isMut: true, + isSigner: false, + }, + { + name: 'marketEventQueue', + isMut: true, + isSigner: false, + }, + { + name: 'marketRequestQueue', + isMut: true, + isSigner: false, + }, + { + name: 'marketBaseVault', + isMut: true, + isSigner: false, + }, + { + name: 'marketQuoteVault', + isMut: true, + isSigner: false, + }, + { + name: 'marketVaultSigner', + isMut: false, + isSigner: false, + }, + { + name: 'quoteBank', + isMut: true, + isSigner: false, + }, + { + name: 'quoteVault', + isMut: true, + isSigner: false, + }, + { + name: 'baseBank', + isMut: true, + isSigner: false, + }, + { + name: 'baseVault', + isMut: true, + isSigner: false, + }, + { + name: 'tokenProgram', + isMut: false, + isSigner: false, + }, + ], + args: [ + { + name: 'order', + type: { + defined: 'instructions::NewOrderInstructionData', + }, + }, + ], + }, + { + name: 'serum3CancelOrder', + accounts: [ + { + name: 'group', + isMut: false, + isSigner: false, + }, + { + name: 'account', + isMut: true, + isSigner: false, + }, + { + name: 'owner', + isMut: false, + isSigner: true, + }, + { + name: 'openOrders', + isMut: true, + isSigner: false, + }, + { + name: 'serumMarket', + isMut: false, + isSigner: false, + }, + { + name: 'serumProgram', + isMut: false, + isSigner: false, + }, + { + name: 'serumMarketExternal', + isMut: true, + isSigner: false, + }, + { + name: 'marketBids', + isMut: true, + isSigner: false, + }, + { + name: 'marketAsks', + isMut: true, + isSigner: false, + }, + { + name: 'marketEventQueue', + isMut: true, + isSigner: false, + }, + ], + args: [ + { + name: 'order', + type: { + defined: 'instructions::CancelOrderInstructionData', + }, + }, + ], + }, + { + name: 'serum3SettleFunds', + accounts: [ + { + name: 'group', + isMut: false, + isSigner: false, + }, + { + name: 'account', + isMut: true, + isSigner: false, + }, + { + name: 'owner', + isMut: false, + isSigner: true, + }, + { + name: 'openOrders', + isMut: true, + isSigner: false, + }, + { + name: 'serumMarket', + isMut: false, + isSigner: false, + }, + { + name: 'serumProgram', + isMut: false, + isSigner: false, + }, + { + name: 'serumMarketExternal', + isMut: true, + isSigner: false, + }, + { + name: 'marketBaseVault', + isMut: true, + isSigner: false, + }, + { + name: 'marketQuoteVault', + isMut: true, + isSigner: false, + }, + { + name: 'marketVaultSigner', + isMut: false, + isSigner: false, + }, + { + name: 'quoteBank', + isMut: true, + isSigner: false, + }, + { + name: 'quoteVault', + isMut: true, + isSigner: false, + }, + { + name: 'baseBank', + isMut: true, + isSigner: false, + }, + { + name: 'baseVault', + isMut: true, + isSigner: false, + }, + { + name: 'tokenProgram', + isMut: false, + isSigner: false, + }, + ], + args: [], + }, + { + name: 'serum3LiqForceCancelOrders', + accounts: [ + { + name: 'group', + isMut: false, + isSigner: false, + }, + { + name: 'account', + isMut: true, + isSigner: false, + }, + { + name: 'openOrders', + isMut: true, + isSigner: false, + }, + { + name: 'serumMarket', + isMut: false, + isSigner: false, + }, + { + name: 'serumProgram', + isMut: false, + isSigner: false, + }, + { + name: 'serumMarketExternal', + isMut: true, + isSigner: false, + }, + { + name: 'marketBids', + isMut: true, + isSigner: false, + }, + { + name: 'marketAsks', + isMut: true, + isSigner: false, + }, + { + name: 'marketEventQueue', + isMut: true, + isSigner: false, + }, + { + name: 'marketBaseVault', + isMut: true, + isSigner: false, + }, + { + name: 'marketQuoteVault', + isMut: true, + isSigner: false, + }, + { + name: 'marketVaultSigner', + isMut: false, + isSigner: false, + }, + { + name: 'quoteBank', + isMut: true, + isSigner: false, + }, + { + name: 'quoteVault', + isMut: true, + isSigner: false, + }, + { + name: 'baseBank', + isMut: true, + isSigner: false, + }, + { + name: 'baseVault', + isMut: true, + isSigner: false, + }, + { + name: 'tokenProgram', + isMut: false, + isSigner: false, + }, + ], + args: [ + { + name: 'limit', + type: 'u8', + }, + ], + }, + { + name: 'liqTokenWithToken', + accounts: [ + { + name: 'group', + isMut: false, + isSigner: false, + }, + { + name: 'liqor', + isMut: true, + isSigner: false, + }, + { + name: 'liqorOwner', + isMut: false, + isSigner: true, + }, + { + name: 'liqee', + isMut: true, + isSigner: false, + }, + ], + args: [ + { + name: 'assetTokenIndex', + type: 'u16', + }, + { + name: 'liabTokenIndex', + type: 'u16', + }, + { + name: 'maxLiabTransfer', + type: { + defined: 'I80F48', + }, + }, + ], + }, + { + name: 'createPerpMarket', + accounts: [ + { + name: 'group', + isMut: false, + isSigner: false, + }, + { + name: 'admin', + isMut: false, + isSigner: true, + }, + { + name: 'oracle', + isMut: false, + isSigner: false, + }, + { + name: 'perpMarket', + isMut: true, + isSigner: false, + pda: { + seeds: [ + { + kind: 'account', + type: 'publicKey', + path: 'group', + }, + { + kind: 'const', + type: 'string', + value: 'PerpMarket', + }, + { + kind: 'arg', + type: { + defined: 'PerpMarketIndex', }, - "path": "token_index" - } - ] - } - }, - { - "name": "vault", - "isMut": true, - "isSigner": false, - "pda": { - "seeds": [ - { - "kind": "account", - "type": "publicKey", - "path": "group" + path: 'perp_market_index', }, - { - "kind": "const", - "type": "string", - "value": "Vault" - }, - { - "kind": "arg", - "type": { - "defined": "TokenIndex" - }, - "path": "token_index" - } - ] - } + ], + }, }, { - "name": "mintInfo", - "isMut": true, - "isSigner": false, - "pda": { - "seeds": [ - { - "kind": "account", - "type": "publicKey", - "path": "group" - }, - { - "kind": "const", - "type": "string", - "value": "MintInfo" - }, - { - "kind": "account", - "type": "publicKey", - "account": "Mint", - "path": "mint" - } - ] - } + name: 'bids', + isMut: true, + isSigner: false, }, { - "name": "oracle", - "isMut": false, - "isSigner": false + name: 'asks', + isMut: true, + isSigner: false, }, { - "name": "payer", - "isMut": true, - "isSigner": true + name: 'eventQueue', + isMut: true, + isSigner: false, }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false + 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": [ + args: [ { - "name": "tokenIndex", - "type": { - "defined": "TokenIndex" - } + name: 'perpMarketIndex', + type: { + defined: 'PerpMarketIndex', + }, }, { - "name": "maintAssetWeight", - "type": "f32" + name: 'baseTokenIndexOpt', + type: { + option: 'u16', + }, }, { - "name": "initAssetWeight", - "type": "f32" + name: 'quoteTokenIndex', + type: 'u16', }, { - "name": "maintLiabWeight", - "type": "f32" + name: 'quoteLotSize', + type: 'i64', }, { - "name": "initLiabWeight", - "type": "f32" + name: 'baseLotSize', + type: 'i64', }, { - "name": "liquidationFee", - "type": "f32" - } - ] + name: 'maintAssetWeight', + type: 'f32', + }, + { + name: 'initAssetWeight', + type: 'f32', + }, + { + name: 'maintLiabWeight', + type: 'f32', + }, + { + name: 'initLiabWeight', + type: 'f32', + }, + { + name: 'liquidationFee', + type: 'f32', + }, + { + name: 'makerFee', + type: 'f32', + }, + { + name: 'takerFee', + type: 'f32', + }, + ], }, { - "name": "createAccount", - "accounts": [ + name: 'placePerpOrder', + accounts: [ { - "name": "group", - "isMut": false, - "isSigner": false + name: 'group', + isMut: false, + isSigner: false, }, { - "name": "account", - "isMut": true, - "isSigner": false, - "pda": { - "seeds": [ - { - "kind": "account", - "type": "publicKey", - "path": "group" - }, - { - "kind": "const", - "type": "string", - "value": "MangoAccount" - }, - { - "kind": "account", - "type": "publicKey", - "path": "owner" - }, - { - "kind": "arg", - "type": "u8", - "path": "account_num" - } - ] - } + name: 'account', + isMut: true, + isSigner: false, }, { - "name": "owner", - "isMut": false, - "isSigner": true + name: 'perpMarket', + isMut: true, + isSigner: false, }, { - "name": "payer", - "isMut": true, - "isSigner": true + name: 'asks', + isMut: true, + isSigner: false, }, { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } + name: 'bids', + isMut: true, + isSigner: false, + }, + { + name: 'eventQueue', + isMut: true, + isSigner: false, + }, + { + name: 'oracle', + isMut: false, + isSigner: false, + }, + { + name: 'owner', + isMut: false, + isSigner: true, + }, ], - "args": [ + args: [ { - "name": "accountNum", - "type": "u8" - } - ] + name: 'side', + type: { + defined: 'Side', + }, + }, + { + name: 'price', + type: 'i64', + }, + { + name: 'maxBaseQuantity', + type: 'i64', + }, + { + name: 'maxQuoteQuantity', + type: 'i64', + }, + { + name: 'clientOrderId', + type: 'u64', + }, + { + name: 'orderType', + type: { + defined: 'OrderType', + }, + }, + { + name: 'expiryTimestamp', + type: 'u64', + }, + { + name: 'limit', + type: 'u8', + }, + ], }, { - "name": "createStubOracle", - "accounts": [ + name: 'consumeEvents', + accounts: [ { - "name": "oracle", - "isMut": true, - "isSigner": false, - "pda": { - "seeds": [ - { - "kind": "const", - "type": "string", - "value": "StubOracle" - }, - { - "kind": "account", - "type": "publicKey", - "account": "Mint", - "path": "token_mint" - } - ] - } + name: 'group', + isMut: false, + isSigner: false, }, { - "name": "tokenMint", - "isMut": false, - "isSigner": false + name: 'perpMarket', + isMut: true, + isSigner: false, }, { - "name": "payer", - "isMut": true, - "isSigner": true + name: 'eventQueue', + isMut: true, + isSigner: false, }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } ], - "args": [ + args: [ { - "name": "price", - "type": { - "defined": "I80F48" - } - } - ] + name: 'limit', + type: { + defined: 'usize', + }, + }, + ], }, { - "name": "setStubOracle", - "accounts": [ - { - "name": "oracle", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "price", - "type": { - "defined": "I80F48" - } - } - ] + name: 'benchmark', + accounts: [], + args: [], }, - { - "name": "deposit", - "accounts": [ - { - "name": "group", - "isMut": false, - "isSigner": false - }, - { - "name": "account", - "isMut": true, - "isSigner": false - }, - { - "name": "bank", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "amount", - "type": "u64" - } - ] - }, - { - "name": "withdraw", - "accounts": [ - { - "name": "group", - "isMut": false, - "isSigner": false - }, - { - "name": "account", - "isMut": true, - "isSigner": false - }, - { - "name": "owner", - "isMut": false, - "isSigner": true - }, - { - "name": "bank", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "amount", - "type": "u64" - }, - { - "name": "allowBorrow", - "type": "bool" - } - ] - }, - { - "name": "marginTrade", - "accounts": [ - { - "name": "group", - "isMut": false, - "isSigner": false - }, - { - "name": "account", - "isMut": true, - "isSigner": false - }, - { - "name": "owner", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "banksLen", - "type": { - "defined": "usize" - } - }, - { - "name": "cpiData", - "type": "bytes" - } - ] - }, - { - "name": "serum3RegisterMarket", - "accounts": [ - { - "name": "group", - "isMut": true, - "isSigner": false - }, - { - "name": "admin", - "isMut": false, - "isSigner": true - }, - { - "name": "serumProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "serumMarketExternal", - "isMut": false, - "isSigner": false - }, - { - "name": "serumMarket", - "isMut": true, - "isSigner": false, - "pda": { - "seeds": [ - { - "kind": "account", - "type": "publicKey", - "path": "group" - }, - { - "kind": "const", - "type": "string", - "value": "Serum3Market" - }, - { - "kind": "account", - "type": "publicKey", - "path": "serum_market_external" - } - ] - } - }, - { - "name": "quoteBank", - "isMut": false, - "isSigner": false - }, - { - "name": "baseBank", - "isMut": false, - "isSigner": false - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "marketIndex", - "type": { - "defined": "Serum3MarketIndex" - } - } - ] - }, - { - "name": "serum3CreateOpenOrders", - "accounts": [ - { - "name": "group", - "isMut": false, - "isSigner": false - }, - { - "name": "account", - "isMut": true, - "isSigner": false - }, - { - "name": "serumMarket", - "isMut": false, - "isSigner": false - }, - { - "name": "serumProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "serumMarketExternal", - "isMut": false, - "isSigner": false - }, - { - "name": "openOrders", - "isMut": true, - "isSigner": false, - "pda": { - "seeds": [ - { - "kind": "account", - "type": "publicKey", - "path": "account" - }, - { - "kind": "const", - "type": "string", - "value": "Serum3OO" - }, - { - "kind": "account", - "type": "publicKey", - "path": "serum_market" - } - ] - } - }, - { - "name": "owner", - "isMut": false, - "isSigner": true - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "serum3PlaceOrder", - "accounts": [ - { - "name": "group", - "isMut": false, - "isSigner": false - }, - { - "name": "account", - "isMut": true, - "isSigner": false - }, - { - "name": "owner", - "isMut": false, - "isSigner": true - }, - { - "name": "openOrders", - "isMut": true, - "isSigner": false - }, - { - "name": "serumMarket", - "isMut": false, - "isSigner": false - }, - { - "name": "serumProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "serumMarketExternal", - "isMut": true, - "isSigner": false - }, - { - "name": "marketBids", - "isMut": true, - "isSigner": false - }, - { - "name": "marketAsks", - "isMut": true, - "isSigner": false - }, - { - "name": "marketEventQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "marketRequestQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "marketBaseVault", - "isMut": true, - "isSigner": false - }, - { - "name": "marketQuoteVault", - "isMut": true, - "isSigner": false - }, - { - "name": "marketVaultSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "quoteBank", - "isMut": true, - "isSigner": false - }, - { - "name": "quoteVault", - "isMut": true, - "isSigner": false - }, - { - "name": "baseBank", - "isMut": true, - "isSigner": false - }, - { - "name": "baseVault", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "order", - "type": { - "defined": "instructions::NewOrderInstructionData" - } - } - ] - }, - { - "name": "serum3CancelOrder", - "accounts": [ - { - "name": "group", - "isMut": false, - "isSigner": false - }, - { - "name": "account", - "isMut": true, - "isSigner": false - }, - { - "name": "owner", - "isMut": false, - "isSigner": true - }, - { - "name": "openOrders", - "isMut": true, - "isSigner": false - }, - { - "name": "serumMarket", - "isMut": false, - "isSigner": false - }, - { - "name": "serumProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "serumMarketExternal", - "isMut": true, - "isSigner": false - }, - { - "name": "marketBids", - "isMut": true, - "isSigner": false - }, - { - "name": "marketAsks", - "isMut": true, - "isSigner": false - }, - { - "name": "marketEventQueue", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "order", - "type": { - "defined": "instructions::CancelOrderInstructionData" - } - } - ] - }, - { - "name": "serum3SettleFunds", - "accounts": [ - { - "name": "group", - "isMut": false, - "isSigner": false - }, - { - "name": "account", - "isMut": true, - "isSigner": false - }, - { - "name": "owner", - "isMut": false, - "isSigner": true - }, - { - "name": "openOrders", - "isMut": true, - "isSigner": false - }, - { - "name": "serumMarket", - "isMut": false, - "isSigner": false - }, - { - "name": "serumProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "serumMarketExternal", - "isMut": true, - "isSigner": false - }, - { - "name": "marketBaseVault", - "isMut": true, - "isSigner": false - }, - { - "name": "marketQuoteVault", - "isMut": true, - "isSigner": false - }, - { - "name": "marketVaultSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "quoteBank", - "isMut": true, - "isSigner": false - }, - { - "name": "quoteVault", - "isMut": true, - "isSigner": false - }, - { - "name": "baseBank", - "isMut": true, - "isSigner": false - }, - { - "name": "baseVault", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "serum3LiqForceCancelOrders", - "accounts": [ - { - "name": "group", - "isMut": false, - "isSigner": false - }, - { - "name": "account", - "isMut": true, - "isSigner": false - }, - { - "name": "openOrders", - "isMut": true, - "isSigner": false - }, - { - "name": "serumMarket", - "isMut": false, - "isSigner": false - }, - { - "name": "serumProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "serumMarketExternal", - "isMut": true, - "isSigner": false - }, - { - "name": "marketBids", - "isMut": true, - "isSigner": false - }, - { - "name": "marketAsks", - "isMut": true, - "isSigner": false - }, - { - "name": "marketEventQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "marketBaseVault", - "isMut": true, - "isSigner": false - }, - { - "name": "marketQuoteVault", - "isMut": true, - "isSigner": false - }, - { - "name": "marketVaultSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "quoteBank", - "isMut": true, - "isSigner": false - }, - { - "name": "quoteVault", - "isMut": true, - "isSigner": false - }, - { - "name": "baseBank", - "isMut": true, - "isSigner": false - }, - { - "name": "baseVault", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "limit", - "type": "u8" - } - ] - }, - { - "name": "liqTokenWithToken", - "accounts": [ - { - "name": "group", - "isMut": false, - "isSigner": false - }, - { - "name": "liqor", - "isMut": true, - "isSigner": false - }, - { - "name": "liqorOwner", - "isMut": false, - "isSigner": true - }, - { - "name": "liqee", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "assetTokenIndex", - "type": { - "defined": "TokenIndex" - } - }, - { - "name": "liabTokenIndex", - "type": { - "defined": "TokenIndex" - } - }, - { - "name": "maxLiabTransfer", - "type": { - "defined": "I80F48" - } - } - ] - }, - { - "name": "createPerpMarket", - "accounts": [ - { - "name": "group", - "isMut": false, - "isSigner": false - }, - { - "name": "admin", - "isMut": false, - "isSigner": true - }, - { - "name": "oracle", - "isMut": false, - "isSigner": false - }, - { - "name": "perpMarket", - "isMut": true, - "isSigner": false, - "pda": { - "seeds": [ - { - "kind": "account", - "type": "publicKey", - "path": "group" - }, - { - "kind": "const", - "type": "string", - "value": "PerpMarket" - }, - { - "kind": "arg", - "type": { - "defined": "PerpMarketIndex" - }, - "path": "perp_market_index" - } - ] - } - }, - { - "name": "bids", - "isMut": true, - "isSigner": false - }, - { - "name": "asks", - "isMut": true, - "isSigner": false - }, - { - "name": "eventQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "perpMarketIndex", - "type": { - "defined": "PerpMarketIndex" - } - }, - { - "name": "baseTokenIndexOpt", - "type": { - "option": { - "defined": "TokenIndex" - } - } - }, - { - "name": "quoteTokenIndex", - "type": { - "defined": "TokenIndex" - } - }, - { - "name": "quoteLotSize", - "type": "i64" - }, - { - "name": "baseLotSize", - "type": "i64" - }, - { - "name": "maintAssetWeight", - "type": "f32" - }, - { - "name": "initAssetWeight", - "type": "f32" - }, - { - "name": "maintLiabWeight", - "type": "f32" - }, - { - "name": "initLiabWeight", - "type": "f32" - }, - { - "name": "liquidationFee", - "type": "f32" - }, - { - "name": "makerFee", - "type": "f32" - }, - { - "name": "takerFee", - "type": "f32" - } - ] - }, - { - "name": "placePerpOrder", - "accounts": [ - { - "name": "group", - "isMut": false, - "isSigner": false - }, - { - "name": "account", - "isMut": true, - "isSigner": false - }, - { - "name": "perpMarket", - "isMut": true, - "isSigner": false - }, - { - "name": "asks", - "isMut": true, - "isSigner": false - }, - { - "name": "bids", - "isMut": true, - "isSigner": false - }, - { - "name": "eventQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "oracle", - "isMut": false, - "isSigner": false - }, - { - "name": "owner", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "side", - "type": { - "defined": "Side" - } - }, - { - "name": "price", - "type": "i64" - }, - { - "name": "maxBaseQuantity", - "type": "i64" - }, - { - "name": "maxQuoteQuantity", - "type": "i64" - }, - { - "name": "clientOrderId", - "type": "u64" - }, - { - "name": "orderType", - "type": { - "defined": "OrderType" - } - }, - { - "name": "expiryTimestamp", - "type": "u64" - }, - { - "name": "limit", - "type": "u8" - } - ] - }, - { - "name": "consumeEvents", - "accounts": [ - { - "name": "group", - "isMut": false, - "isSigner": false - }, - { - "name": "perpMarket", - "isMut": true, - "isSigner": false - }, - { - "name": "eventQueue", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "limit", - "type": { - "defined": "usize" - } - } - ] - }, - { - "name": "benchmark", - "accounts": [], - "args": [] - } ], - "accounts": [ + 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": { - "defined": "TokenIndex" - } - } - ] - } + name: 'tokenIndex', + type: 'u16', + }, + ], + }, }, { - "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": "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": "tokenAccountMap", - "type": { - "defined": "TokenAccountMap" - } + name: 'tokenAccountMap', + type: { + defined: 'TokenAccountMap', + }, }, { - "name": "serum3AccountMap", - "type": { - "defined": "Serum3AccountMap" - } + name: 'serum3AccountMap', + type: { + defined: 'Serum3AccountMap', + }, }, { - "name": "perpAccountMap", - "type": { - "defined": "PerpAccountMap" - } + name: 'perpAccountMap', + type: { + defined: 'PerpAccountMap', + }, }, { - "name": "orderMarket", - "type": { - "array": [ + name: 'orderMarket', + type: { + array: [ { - "defined": "PerpMarketIndex" + defined: 'PerpMarketIndex', }, - 8 - ] - } + 8, + ], + }, }, { - "name": "orderSide", - "type": { - "array": [ + name: 'orderSide', + type: { + array: [ { - "defined": "Side" + defined: 'Side', }, - 8 - ] - } + 8, + ], + }, }, { - "name": "orders", - "type": { - "array": [ - "i128", - 8 - ] - } + name: 'orders', + type: { + array: ['i128', 8], + }, }, { - "name": "clientOrderIds", - "type": { - "array": [ - "u64", - 8 - ] - } + name: 'clientOrderIds', + type: { + array: ['u64', 8], + }, }, { - "name": "beingLiquidated", - "type": "bool" + name: 'beingLiquidated', + type: 'bool', }, { - "name": "isBankrupt", - "type": "bool" + name: 'isBankrupt', + type: 'bool', }, { - "name": "accountNum", - "type": "u8" + name: 'accountNum', + type: 'u8', }, { - "name": "bump", - "type": "u8" + name: 'bump', + type: 'u8', }, { - "name": "reserved", - "type": { - "array": [ - "u8", - 5 - ] - } - } - ] - } + name: 'reserved', + type: { + array: ['u8', 5], + }, + }, + ], + }, }, { - "name": "mintInfo", - "type": { - "kind": "struct", - "fields": [ + name: 'mintInfo', + type: { + kind: 'struct', + fields: [ { - "name": "mint", - "type": "publicKey" + name: 'mint', + type: 'publicKey', }, { - "name": "bank", - "type": "publicKey" + name: 'bank', + type: 'publicKey', }, { - "name": "vault", - "type": "publicKey" + name: 'vault', + type: 'publicKey', }, { - "name": "oracle", - "type": "publicKey" + name: 'oracle', + type: 'publicKey', }, { - "name": "tokenIndex", - "type": { - "defined": "TokenIndex" - } + name: 'tokenIndex', + type: 'u16', }, { - "name": "addressLookupTable", - "type": "publicKey" + name: 'addressLookupTable', + type: 'publicKey', }, { - "name": "addressLookupTableBankIndex", - "type": "u8" + name: 'addressLookupTableBankIndex', + type: 'u8', }, { - "name": "addressLookupTableOracleIndex", - "type": "u8" - } - ] - } + name: 'addressLookupTableOracleIndex', + type: 'u8', + }, + ], + }, }, { - "name": "stubOracle", - "type": { - "kind": "struct", - "fields": [ + name: 'stubOracle', + type: { + kind: 'struct', + fields: [ { - "name": "price", - "type": { - "defined": "I80F48" - } + name: 'price', + type: { + defined: 'I80F48', + }, }, { - "name": "lastUpdated", - "type": "i64" - } - ] - } + name: 'lastUpdated', + type: 'i64', + }, + ], + }, }, { - "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": { - "defined": "PerpMarketIndex" - } + name: 'perpMarketIndex', + type: { + defined: 'PerpMarketIndex', + }, }, { - "name": "baseTokenIndex", - "type": { - "defined": "TokenIndex" - } + name: 'baseTokenIndex', + type: 'u16', }, { - "name": "quoteTokenIndex", - "type": { - "defined": "TokenIndex" - } - } - ] - } + 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": { - "defined": "Serum3MarketIndex" - } + name: 'marketIndex', + type: { + defined: 'Serum3MarketIndex', + }, }, { - "name": "baseTokenIndex", - "type": { - "defined": "TokenIndex" - } + name: 'baseTokenIndex', + type: 'u16', }, { - "name": "quoteTokenIndex", - "type": { - "defined": "TokenIndex" - } + name: 'quoteTokenIndex', + type: 'u16', }, { - "name": "bump", - "type": "u8" - } - ] - } - } + name: 'bump', + type: 'u8', + }, + ], + }, + }, ], - "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": { - "defined": "TokenIndex" - } + name: 'tokenIndex', + type: 'u16', }, { - "name": "inUseCount", - "type": "u8" - } - ] - } + name: 'inUseCount', + type: 'u8', + }, + ], + }, }, { - "name": "TokenAccountMap", - "type": { - "kind": "struct", - "fields": [ + name: 'TokenAccountMap', + 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": { - "defined": "Serum3MarketIndex" - } + name: 'marketIndex', + type: { + defined: 'Serum3MarketIndex', + }, }, { - "name": "baseTokenIndex", - "type": { - "defined": "TokenIndex" - } + name: 'baseTokenIndex', + type: 'u16', }, { - "name": "quoteTokenIndex", - "type": { - "defined": "TokenIndex" - } - } - ] - } + name: 'quoteTokenIndex', + type: 'u16', + }, + ], + }, }, { - "name": "Serum3AccountMap", - "type": { - "kind": "struct", - "fields": [ + name: 'Serum3AccountMap', + 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": { - "defined": "PerpMarketIndex" - } + name: 'marketIndex', + type: { + defined: 'PerpMarketIndex', + }, }, { - "name": "basePosition", - "type": "i64" + name: 'basePosition', + type: 'i64', }, { - "name": "quotePosition", - "type": { - "defined": "I80F48" - } + name: 'quotePosition', + type: { + defined: 'I80F48', + }, }, { - "name": "bidsQuantity", - "type": "i64" + name: 'bidsQuantity', + type: 'i64', }, { - "name": "asksQuantity", - "type": "i64" + name: 'asksQuantity', + type: 'i64', }, { - "name": "takerBase", - "type": "i64" + name: 'takerBase', + type: 'i64', }, { - "name": "takerQuote", - "type": "i64" - } - ] - } + name: 'takerQuote', + type: 'i64', + }, + ], + }, }, { - "name": "PerpAccountMap", - "type": { - "kind": "struct", - "fields": [ + name: 'PerpAccountMap', + type: { + kind: 'struct', + fields: [ { - "name": "values", - "type": { - "array": [ + name: 'values', + type: { + array: [ { - "defined": "PerpAccount" + defined: 'PerpAccount', }, - 8 - ] - } - } - ] - } + 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": "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', + }, + ], };