3837 lines
118 KiB
JSON
3837 lines
118 KiB
JSON
{
|
|
"version": "0.1.0",
|
|
"name": "openbook_v2",
|
|
"instructions": [
|
|
{
|
|
"name": "createMarket",
|
|
"docs": [
|
|
"Create a [`Market`](crate::state::Market) for a given token pair."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "market",
|
|
"isMut": true,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "marketAuthority",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "bids",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"docs": [
|
|
"Accounts are initialized by client,",
|
|
"anchor discriminator is set first when ix exits,"
|
|
]
|
|
},
|
|
{
|
|
"name": "asks",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "eventHeap",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "payer",
|
|
"isMut": true,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "marketBaseVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketQuoteVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "baseMint",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "quoteMint",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "systemProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "associatedTokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "oracleA",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "oracleB",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "collectFeeAdmin",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "openOrdersAdmin",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "consumeEventsAdmin",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "closeMarketAdmin",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "eventAuthority",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "program",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "name",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"name": "oracleConfig",
|
|
"type": {
|
|
"defined": "OracleConfigParams"
|
|
}
|
|
},
|
|
{
|
|
"name": "quoteLotSize",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "baseLotSize",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "makerFee",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "takerFee",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "timeExpiry",
|
|
"type": "i64"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "closeMarket",
|
|
"docs": [
|
|
"Close a [`Market`](crate::state::Market) (only",
|
|
"[`close_market_admin`](crate::state::Market::close_market_admin))."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "closeMarketAdmin",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "bids",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "asks",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "eventHeap",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "solDestination",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": []
|
|
},
|
|
{
|
|
"name": "createOpenOrdersIndexer",
|
|
"docs": [
|
|
"Create an [`OpenOrdersIndexer`](crate::state::OpenOrdersIndexer) account."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "payer",
|
|
"isMut": true,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "owner",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "openOrdersIndexer",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "systemProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": []
|
|
},
|
|
{
|
|
"name": "closeOpenOrdersIndexer",
|
|
"docs": [
|
|
"Close an [`OpenOrdersIndexer`](crate::state::OpenOrdersIndexer) account."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "owner",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "openOrdersIndexer",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "solDestination",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": []
|
|
},
|
|
{
|
|
"name": "createOpenOrdersAccount",
|
|
"docs": [
|
|
"Create an [`OpenOrdersAccount`](crate::state::OpenOrdersAccount)."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "payer",
|
|
"isMut": true,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "owner",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "delegateAccount",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "openOrdersIndexer",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "systemProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "name",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "closeOpenOrdersAccount",
|
|
"docs": [
|
|
"Close an [`OpenOrdersAccount`](crate::state::OpenOrdersAccount)."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "owner",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "openOrdersIndexer",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "solDestination",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "systemProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": []
|
|
},
|
|
{
|
|
"name": "placeOrder",
|
|
"docs": [
|
|
"Place an order.",
|
|
"",
|
|
"Different types of orders have different effects on the order book,",
|
|
"as described in [`PlaceOrderType`](crate::state::PlaceOrderType).",
|
|
"",
|
|
"`price_lots` refers to the price in lots: the number of quote lots",
|
|
"per base lot. It is ignored for `PlaceOrderType::Market` orders.",
|
|
"",
|
|
"`expiry_timestamp` is a unix timestamp for when this order should",
|
|
"expire. If 0 is passed in, the order will never expire. If the time",
|
|
"is in the past, the instruction is skipped. Timestamps in the future",
|
|
"are reduced to now + 65,535s.",
|
|
"",
|
|
"`limit` determines the maximum number of orders from the book to fill,",
|
|
"and can be used to limit CU spent. When the limit is reached, processing",
|
|
"stops and the instruction succeeds."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "signer",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "openOrdersAdmin",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "userTokenAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "bids",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "asks",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "eventHeap",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "oracleA",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "oracleB",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "args",
|
|
"type": {
|
|
"defined": "PlaceOrderArgs"
|
|
}
|
|
}
|
|
],
|
|
"returns": {
|
|
"option": "u128"
|
|
}
|
|
},
|
|
{
|
|
"name": "editOrder",
|
|
"docs": [
|
|
"Edit an order."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "signer",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "openOrdersAdmin",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "userTokenAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "bids",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "asks",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "eventHeap",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "oracleA",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "oracleB",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "clientOrderId",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "expectedCancelSize",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "placeOrder",
|
|
"type": {
|
|
"defined": "PlaceOrderArgs"
|
|
}
|
|
}
|
|
],
|
|
"returns": {
|
|
"option": "u128"
|
|
}
|
|
},
|
|
{
|
|
"name": "editOrderPegged",
|
|
"docs": [
|
|
"Edit an order pegged."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "signer",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "openOrdersAdmin",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "userTokenAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "bids",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "asks",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "eventHeap",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "oracleA",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "oracleB",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "clientOrderId",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "expectedCancelSize",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "placeOrder",
|
|
"type": {
|
|
"defined": "PlaceOrderPeggedArgs"
|
|
}
|
|
}
|
|
],
|
|
"returns": {
|
|
"option": "u128"
|
|
}
|
|
},
|
|
{
|
|
"name": "placeOrders",
|
|
"docs": [
|
|
"Place multiple orders"
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "signer",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "openOrdersAdmin",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "userQuoteAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "userBaseAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "bids",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "asks",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "eventHeap",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketQuoteVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketBaseVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "oracleA",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "oracleB",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "ordersType",
|
|
"type": {
|
|
"defined": "PlaceOrderType"
|
|
}
|
|
},
|
|
{
|
|
"name": "bids",
|
|
"type": {
|
|
"vec": {
|
|
"defined": "PlaceMultipleOrdersArgs"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "asks",
|
|
"type": {
|
|
"vec": {
|
|
"defined": "PlaceMultipleOrdersArgs"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"type": "u8"
|
|
}
|
|
],
|
|
"returns": {
|
|
"vec": {
|
|
"option": "u128"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "cancelAllAndPlaceOrders",
|
|
"docs": [
|
|
"Cancel orders and place multiple orders."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "signer",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "openOrdersAdmin",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "userQuoteAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "userBaseAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "bids",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "asks",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "eventHeap",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketQuoteVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketBaseVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "oracleA",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "oracleB",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "ordersType",
|
|
"type": {
|
|
"defined": "PlaceOrderType"
|
|
}
|
|
},
|
|
{
|
|
"name": "bids",
|
|
"type": {
|
|
"vec": {
|
|
"defined": "PlaceMultipleOrdersArgs"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "asks",
|
|
"type": {
|
|
"vec": {
|
|
"defined": "PlaceMultipleOrdersArgs"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"type": "u8"
|
|
}
|
|
],
|
|
"returns": {
|
|
"vec": {
|
|
"option": "u128"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "placeOrderPegged",
|
|
"docs": [
|
|
"Place an oracle-peg order."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "signer",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "openOrdersAdmin",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "userTokenAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "bids",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "asks",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "eventHeap",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "oracleA",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "oracleB",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "args",
|
|
"type": {
|
|
"defined": "PlaceOrderPeggedArgs"
|
|
}
|
|
}
|
|
],
|
|
"returns": {
|
|
"option": "u128"
|
|
}
|
|
},
|
|
{
|
|
"name": "placeTakeOrder",
|
|
"docs": [
|
|
"Place an order that shall take existing liquidity off of the book, not",
|
|
"add a new order off the book.",
|
|
"",
|
|
"This type of order allows for instant token settlement for the taker."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "signer",
|
|
"isMut": true,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "penaltyPayer",
|
|
"isMut": true,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketAuthority",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "bids",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "asks",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketBaseVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketQuoteVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "eventHeap",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "userBaseAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "userQuoteAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "oracleA",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "oracleB",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "systemProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "openOrdersAdmin",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"isOptional": true
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "args",
|
|
"type": {
|
|
"defined": "PlaceTakeOrderArgs"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "consumeEvents",
|
|
"docs": [
|
|
"Process up to `limit` [events](crate::state::AnyEvent).",
|
|
"",
|
|
"When a user places a 'take' order, they do not know beforehand which",
|
|
"market maker will have placed the 'make' order that they get executed",
|
|
"against. This prevents them from passing in a market maker's",
|
|
"[`OpenOrdersAccount`](crate::state::OpenOrdersAccount), which is needed",
|
|
"to credit/debit the relevant tokens to/from the maker. As such, Openbook",
|
|
"uses a 'crank' system, where `place_order` only emits events, and",
|
|
"`consume_events` handles token settlement.",
|
|
"",
|
|
"Currently, there are two types of events: [`FillEvent`](crate::state::FillEvent)s",
|
|
"and [`OutEvent`](crate::state::OutEvent)s.",
|
|
"",
|
|
"A `FillEvent` is emitted when an order is filled, and it is handled by",
|
|
"debiting whatever the taker is selling from the taker and crediting",
|
|
"it to the maker, and debiting whatever the taker is buying from the",
|
|
"maker and crediting it to the taker. Note that *no tokens are moved*,",
|
|
"these are just debits and credits to each party's [`Position`](crate::state::Position).",
|
|
"",
|
|
"An `OutEvent` is emitted when a limit order needs to be removed from",
|
|
"the book during a `place_order` invocation, and it is handled by",
|
|
"crediting whatever the maker would have sold (quote token in a bid,",
|
|
"base token in an ask) back to the maker."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "consumeEventsAdmin",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "eventHeap",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "limit",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "consumeGivenEvents",
|
|
"docs": [
|
|
"Process the [events](crate::state::AnyEvent) at the given positions."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "consumeEventsAdmin",
|
|
"isMut": false,
|
|
"isSigner": true,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "eventHeap",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "slots",
|
|
"type": {
|
|
"vec": "u64"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "cancelOrder",
|
|
"docs": [
|
|
"Cancel an order by its `order_id`.",
|
|
"",
|
|
"Note that this doesn't emit an [`OutEvent`](crate::state::OutEvent) because a",
|
|
"maker knows that they will be passing in their own [`OpenOrdersAccount`](crate::state::OpenOrdersAccount)."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "signer",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "bids",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "asks",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "orderId",
|
|
"type": "u128"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "cancelOrderByClientOrderId",
|
|
"docs": [
|
|
"Cancel an order by its `client_order_id`.",
|
|
"",
|
|
"Note that this doesn't emit an [`OutEvent`](crate::state::OutEvent) because a",
|
|
"maker knows that they will be passing in their own [`OpenOrdersAccount`](crate::state::OpenOrdersAccount)."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "signer",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "bids",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "asks",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "clientOrderId",
|
|
"type": "u64"
|
|
}
|
|
],
|
|
"returns": "i64"
|
|
},
|
|
{
|
|
"name": "cancelAllOrders",
|
|
"docs": [
|
|
"Cancel up to `limit` orders, optionally filtering by side"
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "signer",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "bids",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "asks",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "sideOption",
|
|
"type": {
|
|
"option": {
|
|
"defined": "Side"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"type": "u8"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "deposit",
|
|
"docs": [
|
|
"Deposit a certain amount of `base` and `quote` lamports into one's",
|
|
"[`Position`](crate::state::Position).",
|
|
"",
|
|
"Makers might wish to `deposit`, rather than have actual tokens moved for",
|
|
"each trade, in order to reduce CUs."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "owner",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "userBaseAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "userQuoteAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketBaseVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketQuoteVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "baseAmount",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "quoteAmount",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "refill",
|
|
"docs": [
|
|
"Refill a certain amount of `base` and `quote` lamports. The amount being passed is the",
|
|
"total lamports that the [`Position`](crate::state::Position) will have.",
|
|
"",
|
|
"Makers might wish to `refill`, rather than have actual tokens moved for",
|
|
"each trade, in order to reduce CUs."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "owner",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "userBaseAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "userQuoteAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketBaseVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketQuoteVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "baseAmount",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "quoteAmount",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "settleFunds",
|
|
"docs": [
|
|
"Withdraw any available tokens."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "owner",
|
|
"isMut": true,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "penaltyPayer",
|
|
"isMut": true,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketAuthority",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketBaseVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketQuoteVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "userBaseAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "userQuoteAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "referrerAccount",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "systemProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": []
|
|
},
|
|
{
|
|
"name": "settleFundsExpired",
|
|
"docs": [
|
|
"Withdraw any available tokens when the market is expired (only",
|
|
"[`close_market_admin`](crate::state::Market::close_market_admin))."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "closeMarketAdmin",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "owner",
|
|
"isMut": true,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "penaltyPayer",
|
|
"isMut": true,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketAuthority",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketBaseVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketQuoteVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "userBaseAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "userQuoteAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "referrerAccount",
|
|
"isMut": true,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "systemProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": []
|
|
},
|
|
{
|
|
"name": "sweepFees",
|
|
"docs": [
|
|
"Sweep fees, as a [`Market`](crate::state::Market)'s admin."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "collectFeeAdmin",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketAuthority",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "marketQuoteVault",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenReceiverAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": []
|
|
},
|
|
{
|
|
"name": "setDelegate",
|
|
"docs": [
|
|
"Update the [`delegate`](crate::state::OpenOrdersAccount::delegate) of an open orders account."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "owner",
|
|
"isMut": true,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "delegateAccount",
|
|
"isMut": false,
|
|
"isSigner": false,
|
|
"isOptional": true
|
|
}
|
|
],
|
|
"args": []
|
|
},
|
|
{
|
|
"name": "setMarketExpired",
|
|
"docs": [
|
|
"Set market to expired before pruning orders and closing the market (only",
|
|
"[`close_market_admin`](crate::state::Market::close_market_admin))."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "closeMarketAdmin",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": []
|
|
},
|
|
{
|
|
"name": "pruneOrders",
|
|
"docs": [
|
|
"Remove orders from the book when the market is expired (only",
|
|
"[`close_market_admin`](crate::state::Market::close_market_admin))."
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "closeMarketAdmin",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "market",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "bids",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "asks",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "limit",
|
|
"type": "u8"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "stubOracleCreate",
|
|
"accounts": [
|
|
{
|
|
"name": "payer",
|
|
"isMut": true,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "owner",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "oracle",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "mint",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "systemProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "price",
|
|
"type": "f64"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "stubOracleClose",
|
|
"accounts": [
|
|
{
|
|
"name": "owner",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "oracle",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "solDestination",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
},
|
|
{
|
|
"name": "tokenProgram",
|
|
"isMut": false,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": []
|
|
},
|
|
{
|
|
"name": "stubOracleSet",
|
|
"accounts": [
|
|
{
|
|
"name": "owner",
|
|
"isMut": false,
|
|
"isSigner": true
|
|
},
|
|
{
|
|
"name": "oracle",
|
|
"isMut": true,
|
|
"isSigner": false
|
|
}
|
|
],
|
|
"args": [
|
|
{
|
|
"name": "price",
|
|
"type": "f64"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"accounts": [
|
|
{
|
|
"name": "Market",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "bump",
|
|
"docs": [
|
|
"PDA bump"
|
|
],
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "baseDecimals",
|
|
"docs": [
|
|
"Number of decimals used for the base token.",
|
|
"",
|
|
"Used to convert the oracle's price into a native/native price."
|
|
],
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "quoteDecimals",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "padding1",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
5
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "marketAuthority",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "timeExpiry",
|
|
"docs": [
|
|
"No expiry = 0. Market will expire and no trading allowed after time_expiry"
|
|
],
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "collectFeeAdmin",
|
|
"docs": [
|
|
"Admin who can collect fees from the market"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "openOrdersAdmin",
|
|
"docs": [
|
|
"Admin who must sign off on all order creations"
|
|
],
|
|
"type": {
|
|
"defined": "NonZeroPubkeyOption"
|
|
}
|
|
},
|
|
{
|
|
"name": "consumeEventsAdmin",
|
|
"docs": [
|
|
"Admin who must sign off on all event consumptions"
|
|
],
|
|
"type": {
|
|
"defined": "NonZeroPubkeyOption"
|
|
}
|
|
},
|
|
{
|
|
"name": "closeMarketAdmin",
|
|
"docs": [
|
|
"Admin who can set market expired, prune orders and close the market"
|
|
],
|
|
"type": {
|
|
"defined": "NonZeroPubkeyOption"
|
|
}
|
|
},
|
|
{
|
|
"name": "name",
|
|
"docs": [
|
|
"Name. Trailing zero bytes are ignored."
|
|
],
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
16
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "bids",
|
|
"docs": [
|
|
"Address of the BookSide account for bids"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "asks",
|
|
"docs": [
|
|
"Address of the BookSide account for asks"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "eventHeap",
|
|
"docs": [
|
|
"Address of the EventHeap account"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "oracleA",
|
|
"docs": [
|
|
"Oracles account address"
|
|
],
|
|
"type": {
|
|
"defined": "NonZeroPubkeyOption"
|
|
}
|
|
},
|
|
{
|
|
"name": "oracleB",
|
|
"type": {
|
|
"defined": "NonZeroPubkeyOption"
|
|
}
|
|
},
|
|
{
|
|
"name": "oracleConfig",
|
|
"docs": [
|
|
"Oracle configuration"
|
|
],
|
|
"type": {
|
|
"defined": "OracleConfig"
|
|
}
|
|
},
|
|
{
|
|
"name": "quoteLotSize",
|
|
"docs": [
|
|
"Number of quote native in a quote lot. Must be a power of 10.",
|
|
"",
|
|
"Primarily useful for increasing the tick size on the market: A lot price",
|
|
"of 1 becomes a native price of quote_lot_size/base_lot_size becomes a",
|
|
"ui price of quote_lot_size*base_decimals/base_lot_size/quote_decimals."
|
|
],
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "baseLotSize",
|
|
"docs": [
|
|
"Number of base native in a base lot. Must be a power of 10.",
|
|
"",
|
|
"Example: If base decimals for the underlying asset is 6, base lot size",
|
|
"is 100 and and base position lots is 10_000 then base position native is",
|
|
"1_000_000 and base position ui is 1."
|
|
],
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "seqNum",
|
|
"docs": [
|
|
"Total number of orders seen"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "registrationTime",
|
|
"docs": [
|
|
"Timestamp in seconds that the market was registered at."
|
|
],
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "makerFee",
|
|
"docs": [
|
|
"Fees",
|
|
"",
|
|
"Fee (in 10^-6) when matching maker orders.",
|
|
"maker_fee < 0 it means some of the taker_fees goes to the maker",
|
|
"maker_fee > 0, it means no taker_fee to the maker, and maker fee goes to the referral"
|
|
],
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "takerFee",
|
|
"docs": [
|
|
"Fee (in 10^-6) for taker orders, always >= 0."
|
|
],
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "feesAccrued",
|
|
"docs": [
|
|
"Total fees accrued in native quote"
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "feesToReferrers",
|
|
"docs": [
|
|
"Total fees settled in native quote"
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "referrerRebatesAccrued",
|
|
"docs": [
|
|
"Referrer rebates to be distributed"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "feesAvailable",
|
|
"docs": [
|
|
"Fees generated and available to withdraw via sweep_fees"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "makerVolume",
|
|
"docs": [
|
|
"Cumulative maker volume (same as taker volume) in quote native units"
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "takerVolumeWoOo",
|
|
"docs": [
|
|
"Cumulative taker volume in quote native units due to place take orders"
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "baseMint",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "quoteMint",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "marketBaseVault",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "baseDepositTotal",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "marketQuoteVault",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "quoteDepositTotal",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "reserved",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
128
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "OpenOrdersAccount",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "owner",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "market",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "name",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
32
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "delegate",
|
|
"type": {
|
|
"defined": "NonZeroPubkeyOption"
|
|
}
|
|
},
|
|
{
|
|
"name": "accountNum",
|
|
"type": "u32"
|
|
},
|
|
{
|
|
"name": "bump",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "version",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "padding",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
2
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "position",
|
|
"type": {
|
|
"defined": "Position"
|
|
}
|
|
},
|
|
{
|
|
"name": "openOrders",
|
|
"type": {
|
|
"array": [
|
|
{
|
|
"defined": "OpenOrder"
|
|
},
|
|
24
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "OpenOrdersIndexer",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "bump",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "createdCounter",
|
|
"type": "u32"
|
|
},
|
|
{
|
|
"name": "addresses",
|
|
"type": {
|
|
"vec": "publicKey"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "StubOracle",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "owner",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "mint",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "price",
|
|
"type": "f64"
|
|
},
|
|
{
|
|
"name": "lastUpdateTs",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "lastUpdateSlot",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "deviation",
|
|
"type": "f64"
|
|
},
|
|
{
|
|
"name": "reserved",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
104
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "BookSide",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "roots",
|
|
"type": {
|
|
"array": [
|
|
{
|
|
"defined": "OrderTreeRoot"
|
|
},
|
|
2
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "reservedRoots",
|
|
"type": {
|
|
"array": [
|
|
{
|
|
"defined": "OrderTreeRoot"
|
|
},
|
|
4
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "reserved",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
256
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "nodes",
|
|
"type": {
|
|
"defined": "OrderTreeNodes"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "EventHeap",
|
|
"docs": [
|
|
"Container for the different EventTypes.",
|
|
"",
|
|
"Events are stored in a fixed-array of nodes. Free nodes are connected by a single-linked list",
|
|
"starting at free_head while used nodes form a circular doubly-linked list starting at",
|
|
"used_head."
|
|
],
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "header",
|
|
"type": {
|
|
"defined": "EventHeapHeader"
|
|
}
|
|
},
|
|
{
|
|
"name": "nodes",
|
|
"type": {
|
|
"array": [
|
|
{
|
|
"defined": "EventNode"
|
|
},
|
|
600
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "reserved",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
64
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"types": [
|
|
{
|
|
"name": "NonZeroPubkeyOption",
|
|
"docs": [
|
|
"Like `Option`, but implemented for `Pubkey` to be used with `zero_copy`"
|
|
],
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "key",
|
|
"type": "publicKey"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "Position",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "bidsBaseLots",
|
|
"docs": [
|
|
"Base lots in open bids"
|
|
],
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "asksBaseLots",
|
|
"docs": [
|
|
"Base lots in open asks"
|
|
],
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "baseFreeNative",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "quoteFreeNative",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "lockedMakerFees",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "referrerRebatesAvailable",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "penaltyHeapCount",
|
|
"docs": [
|
|
"Count of ixs when events are added to the heap",
|
|
"To avoid this, send remaining accounts in order to process the events"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "makerVolume",
|
|
"docs": [
|
|
"Cumulative maker volume in quote native units (display only)"
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "takerVolume",
|
|
"docs": [
|
|
"Cumulative taker volume in quote native units (display only)"
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "bidsQuoteLots",
|
|
"docs": [
|
|
"Quote lots in open bids"
|
|
],
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "reserved",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
64
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "OpenOrder",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "id",
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "clientId",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "lockedPrice",
|
|
"docs": [
|
|
"Price at which user's assets were locked"
|
|
],
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "isFree",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "sideAndTree",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "padding",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
6
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "OracleConfig",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "confFilter",
|
|
"type": "f64"
|
|
},
|
|
{
|
|
"name": "maxStalenessSlots",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "reserved",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
72
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "OracleConfigParams",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "confFilter",
|
|
"type": "f32"
|
|
},
|
|
{
|
|
"name": "maxStalenessSlots",
|
|
"type": {
|
|
"option": "u32"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "EventHeapHeader",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "freeHead",
|
|
"type": "u16"
|
|
},
|
|
{
|
|
"name": "usedHead",
|
|
"type": "u16"
|
|
},
|
|
{
|
|
"name": "count",
|
|
"type": "u16"
|
|
},
|
|
{
|
|
"name": "padd",
|
|
"type": "u16"
|
|
},
|
|
{
|
|
"name": "seqNum",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "EventNode",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "next",
|
|
"type": "u16"
|
|
},
|
|
{
|
|
"name": "prev",
|
|
"type": "u16"
|
|
},
|
|
{
|
|
"name": "pad",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
4
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "event",
|
|
"type": {
|
|
"defined": "AnyEvent"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "AnyEvent",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "eventType",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "padding",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
143
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "FillEvent",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "eventType",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "takerSide",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "makerOut",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "makerSlot",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "padding",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
4
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "timestamp",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "seqNum",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "maker",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "makerTimestamp",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "taker",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "takerClientOrderId",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "price",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "pegLimit",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "quantity",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "makerClientOrderId",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "reserved",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
8
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "OutEvent",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "eventType",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "side",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "ownerSlot",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "padding0",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
5
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "timestamp",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "seqNum",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "owner",
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "quantity",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "padding1",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
80
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "InnerNode",
|
|
"docs": [
|
|
"InnerNodes and LeafNodes compose the binary tree of orders.",
|
|
"",
|
|
"Each InnerNode has exactly two children, which are either InnerNodes themselves,",
|
|
"or LeafNodes. The children share the top `prefix_len` bits of `key`. The left",
|
|
"child has a 0 in the next bit, and the right a 1."
|
|
],
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "tag",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "padding",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
3
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "prefixLen",
|
|
"docs": [
|
|
"number of highest `key` bits that all children share",
|
|
"e.g. if it's 2, the two highest bits of `key` will be the same on all children"
|
|
],
|
|
"type": "u32"
|
|
},
|
|
{
|
|
"name": "key",
|
|
"docs": [
|
|
"only the top `prefix_len` bits of `key` are relevant"
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "children",
|
|
"docs": [
|
|
"indexes into `BookSide::nodes`"
|
|
],
|
|
"type": {
|
|
"array": [
|
|
"u32",
|
|
2
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "childEarliestExpiry",
|
|
"docs": [
|
|
"The earliest expiry timestamp for the left and right subtrees.",
|
|
"",
|
|
"Needed to be able to find and remove expired orders without having to",
|
|
"iterate through the whole bookside."
|
|
],
|
|
"type": {
|
|
"array": [
|
|
"u64",
|
|
2
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "reserved",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
40
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "LeafNode",
|
|
"docs": [
|
|
"LeafNodes represent an order in the binary tree"
|
|
],
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "tag",
|
|
"docs": [
|
|
"NodeTag"
|
|
],
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "ownerSlot",
|
|
"docs": [
|
|
"Index into the owning OpenOrdersAccount's OpenOrders"
|
|
],
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "timeInForce",
|
|
"docs": [
|
|
"Time in seconds after `timestamp` at which the order expires.",
|
|
"A value of 0 means no expiry."
|
|
],
|
|
"type": "u16"
|
|
},
|
|
{
|
|
"name": "padding",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
4
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "key",
|
|
"docs": [
|
|
"The binary tree key, see new_node_key()"
|
|
],
|
|
"type": "u128"
|
|
},
|
|
{
|
|
"name": "owner",
|
|
"docs": [
|
|
"Address of the owning OpenOrdersAccount"
|
|
],
|
|
"type": "publicKey"
|
|
},
|
|
{
|
|
"name": "quantity",
|
|
"docs": [
|
|
"Number of base lots to buy or sell, always >=1"
|
|
],
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "timestamp",
|
|
"docs": [
|
|
"The time the order was placed"
|
|
],
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "pegLimit",
|
|
"docs": [
|
|
"If the effective price of an oracle pegged order exceeds this limit,",
|
|
"it will be considered invalid and may be removed.",
|
|
"",
|
|
"Only applicable in the oracle_pegged OrderTree"
|
|
],
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "clientOrderId",
|
|
"docs": [
|
|
"User defined id for this order, used in FillEvents"
|
|
],
|
|
"type": "u64"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "AnyNode",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "tag",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "data",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
87
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "OrderTreeRoot",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "maybeNode",
|
|
"type": "u32"
|
|
},
|
|
{
|
|
"name": "leafCount",
|
|
"type": "u32"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "OrderTreeNodes",
|
|
"docs": [
|
|
"A binary tree on AnyNode::key()",
|
|
"",
|
|
"The key encodes the price in the top 64 bits."
|
|
],
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "orderTreeType",
|
|
"type": "u8"
|
|
},
|
|
{
|
|
"name": "padding",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
3
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "bumpIndex",
|
|
"type": "u32"
|
|
},
|
|
{
|
|
"name": "freeListLen",
|
|
"type": "u32"
|
|
},
|
|
{
|
|
"name": "freeListHead",
|
|
"type": "u32"
|
|
},
|
|
{
|
|
"name": "reserved",
|
|
"type": {
|
|
"array": [
|
|
"u8",
|
|
512
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "nodes",
|
|
"type": {
|
|
"array": [
|
|
{
|
|
"defined": "AnyNode"
|
|
},
|
|
1024
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "I80F48",
|
|
"docs": [
|
|
"Nothing in Rust shall use these types. They only exist so that the Anchor IDL",
|
|
"knows about them and typescript can deserialize it."
|
|
],
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "val",
|
|
"type": "i128"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "PlaceOrderArgs",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "side",
|
|
"type": {
|
|
"defined": "Side"
|
|
}
|
|
},
|
|
{
|
|
"name": "priceLots",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "maxBaseLots",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "maxQuoteLotsIncludingFees",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "clientOrderId",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "orderType",
|
|
"type": {
|
|
"defined": "PlaceOrderType"
|
|
}
|
|
},
|
|
{
|
|
"name": "expiryTimestamp",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "selfTradeBehavior",
|
|
"type": {
|
|
"defined": "SelfTradeBehavior"
|
|
}
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"type": "u8"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "PlaceMultipleOrdersArgs",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "priceLots",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "maxQuoteLotsIncludingFees",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "expiryTimestamp",
|
|
"type": "u64"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "PlaceOrderPeggedArgs",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "side",
|
|
"type": {
|
|
"defined": "Side"
|
|
}
|
|
},
|
|
{
|
|
"name": "priceOffsetLots",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "pegLimit",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "maxBaseLots",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "maxQuoteLotsIncludingFees",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "clientOrderId",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "orderType",
|
|
"type": {
|
|
"defined": "PlaceOrderType"
|
|
}
|
|
},
|
|
{
|
|
"name": "expiryTimestamp",
|
|
"type": "u64"
|
|
},
|
|
{
|
|
"name": "selfTradeBehavior",
|
|
"type": {
|
|
"defined": "SelfTradeBehavior"
|
|
}
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"type": "u8"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "PlaceTakeOrderArgs",
|
|
"type": {
|
|
"kind": "struct",
|
|
"fields": [
|
|
{
|
|
"name": "side",
|
|
"type": {
|
|
"defined": "Side"
|
|
}
|
|
},
|
|
{
|
|
"name": "priceLots",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "maxBaseLots",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "maxQuoteLotsIncludingFees",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "orderType",
|
|
"type": {
|
|
"defined": "PlaceOrderType"
|
|
}
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"type": "u8"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "OracleType",
|
|
"type": {
|
|
"kind": "enum",
|
|
"variants": [
|
|
{
|
|
"name": "Pyth"
|
|
},
|
|
{
|
|
"name": "Stub"
|
|
},
|
|
{
|
|
"name": "SwitchboardV1"
|
|
},
|
|
{
|
|
"name": "SwitchboardV2"
|
|
},
|
|
{
|
|
"name": "RaydiumCLMM"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "OrderState",
|
|
"type": {
|
|
"kind": "enum",
|
|
"variants": [
|
|
{
|
|
"name": "Valid"
|
|
},
|
|
{
|
|
"name": "Invalid"
|
|
},
|
|
{
|
|
"name": "Skipped"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "BookSideOrderTree",
|
|
"type": {
|
|
"kind": "enum",
|
|
"variants": [
|
|
{
|
|
"name": "Fixed"
|
|
},
|
|
{
|
|
"name": "OraclePegged"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "EventType",
|
|
"type": {
|
|
"kind": "enum",
|
|
"variants": [
|
|
{
|
|
"name": "Fill"
|
|
},
|
|
{
|
|
"name": "Out"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "NodeTag",
|
|
"type": {
|
|
"kind": "enum",
|
|
"variants": [
|
|
{
|
|
"name": "Uninitialized"
|
|
},
|
|
{
|
|
"name": "InnerNode"
|
|
},
|
|
{
|
|
"name": "LeafNode"
|
|
},
|
|
{
|
|
"name": "FreeNode"
|
|
},
|
|
{
|
|
"name": "LastFreeNode"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "PlaceOrderType",
|
|
"type": {
|
|
"kind": "enum",
|
|
"variants": [
|
|
{
|
|
"name": "Limit"
|
|
},
|
|
{
|
|
"name": "ImmediateOrCancel"
|
|
},
|
|
{
|
|
"name": "PostOnly"
|
|
},
|
|
{
|
|
"name": "Market"
|
|
},
|
|
{
|
|
"name": "PostOnlySlide"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "PostOrderType",
|
|
"type": {
|
|
"kind": "enum",
|
|
"variants": [
|
|
{
|
|
"name": "Limit"
|
|
},
|
|
{
|
|
"name": "PostOnly"
|
|
},
|
|
{
|
|
"name": "PostOnlySlide"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "SelfTradeBehavior",
|
|
"docs": [
|
|
"Self trade behavior controls how taker orders interact with resting limit orders of the same account.",
|
|
"This setting has no influence on placing a resting or oracle pegged limit order that does not match",
|
|
"immediately, instead it's the responsibility of the user to correctly configure his taker orders."
|
|
],
|
|
"type": {
|
|
"kind": "enum",
|
|
"variants": [
|
|
{
|
|
"name": "DecrementTake"
|
|
},
|
|
{
|
|
"name": "CancelProvide"
|
|
},
|
|
{
|
|
"name": "AbortTransaction"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "Side",
|
|
"type": {
|
|
"kind": "enum",
|
|
"variants": [
|
|
{
|
|
"name": "Bid"
|
|
},
|
|
{
|
|
"name": "Ask"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "SideAndOrderTree",
|
|
"docs": [
|
|
"SideAndOrderTree is a storage optimization, so we don't need two bytes for the data"
|
|
],
|
|
"type": {
|
|
"kind": "enum",
|
|
"variants": [
|
|
{
|
|
"name": "BidFixed"
|
|
},
|
|
{
|
|
"name": "AskFixed"
|
|
},
|
|
{
|
|
"name": "BidOraclePegged"
|
|
},
|
|
{
|
|
"name": "AskOraclePegged"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "OrderParams",
|
|
"type": {
|
|
"kind": "enum",
|
|
"variants": [
|
|
{
|
|
"name": "Market"
|
|
},
|
|
{
|
|
"name": "ImmediateOrCancel",
|
|
"fields": [
|
|
{
|
|
"name": "price_lots",
|
|
"type": "i64"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Fixed",
|
|
"fields": [
|
|
{
|
|
"name": "price_lots",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "order_type",
|
|
"type": {
|
|
"defined": "PostOrderType"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "OraclePegged",
|
|
"fields": [
|
|
{
|
|
"name": "price_offset_lots",
|
|
"type": "i64"
|
|
},
|
|
{
|
|
"name": "order_type",
|
|
"type": {
|
|
"defined": "PostOrderType"
|
|
}
|
|
},
|
|
{
|
|
"name": "peg_limit",
|
|
"type": "i64"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "OrderTreeType",
|
|
"type": {
|
|
"kind": "enum",
|
|
"variants": [
|
|
{
|
|
"name": "Bids"
|
|
},
|
|
{
|
|
"name": "Asks"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "DepositLog",
|
|
"fields": [
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "signer",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "baseAmount",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "quoteAmount",
|
|
"type": "u64",
|
|
"index": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "FillLog",
|
|
"fields": [
|
|
{
|
|
"name": "market",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "takerSide",
|
|
"type": "u8",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "makerSlot",
|
|
"type": "u8",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "makerOut",
|
|
"type": "bool",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "timestamp",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "seqNum",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "maker",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "makerClientOrderId",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "makerFee",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "makerTimestamp",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "taker",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "takerClientOrderId",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "takerFeeCeil",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "price",
|
|
"type": "i64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "quantity",
|
|
"type": "i64",
|
|
"index": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "MarketMetaDataLog",
|
|
"fields": [
|
|
{
|
|
"name": "market",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "name",
|
|
"type": "string",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "baseMint",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "quoteMint",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "baseDecimals",
|
|
"type": "u8",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "quoteDecimals",
|
|
"type": "u8",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "baseLotSize",
|
|
"type": "i64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "quoteLotSize",
|
|
"type": "i64",
|
|
"index": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "TotalOrderFillEvent",
|
|
"fields": [
|
|
{
|
|
"name": "side",
|
|
"type": "u8",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "taker",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "totalQuantityPaid",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "totalQuantityReceived",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "fees",
|
|
"type": "u64",
|
|
"index": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "SetDelegateLog",
|
|
"fields": [
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "delegate",
|
|
"type": {
|
|
"option": "publicKey"
|
|
},
|
|
"index": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "SettleFundsLog",
|
|
"fields": [
|
|
{
|
|
"name": "openOrdersAccount",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "baseNative",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "quoteNative",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "referrerRebate",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "referrer",
|
|
"type": {
|
|
"option": "publicKey"
|
|
},
|
|
"index": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "SweepFeesLog",
|
|
"fields": [
|
|
{
|
|
"name": "market",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "amount",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "receiver",
|
|
"type": "publicKey",
|
|
"index": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "OpenOrdersPositionLog",
|
|
"fields": [
|
|
{
|
|
"name": "owner",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "openOrdersAccountNum",
|
|
"type": "u32",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "market",
|
|
"type": "publicKey",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "bidsBaseLots",
|
|
"type": "i64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "bidsQuoteLots",
|
|
"type": "i64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "asksBaseLots",
|
|
"type": "i64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "baseFreeNative",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "quoteFreeNative",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "lockedMakerFees",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "referrerRebatesAvailable",
|
|
"type": "u64",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "makerVolume",
|
|
"type": "u128",
|
|
"index": false
|
|
},
|
|
{
|
|
"name": "takerVolume",
|
|
"type": "u128",
|
|
"index": false
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"errors": [
|
|
{
|
|
"code": 6000,
|
|
"name": "SomeError",
|
|
"msg": ""
|
|
},
|
|
{
|
|
"code": 6001,
|
|
"name": "InvalidInputNameLength",
|
|
"msg": "Name lenght above limit"
|
|
},
|
|
{
|
|
"code": 6002,
|
|
"name": "InvalidInputMarketExpired",
|
|
"msg": "Market cannot be created as expired"
|
|
},
|
|
{
|
|
"code": 6003,
|
|
"name": "InvalidInputMarketFees",
|
|
"msg": "Taker fees should be positive and if maker fees are negative, greater or equal to their abs value"
|
|
},
|
|
{
|
|
"code": 6004,
|
|
"name": "InvalidInputLots",
|
|
"msg": "Lots cannot be negative"
|
|
},
|
|
{
|
|
"code": 6005,
|
|
"name": "InvalidInputLotsSize",
|
|
"msg": "Lots size above market limits"
|
|
},
|
|
{
|
|
"code": 6006,
|
|
"name": "InvalidInputOrdersAmounts",
|
|
"msg": "Input amounts above limits"
|
|
},
|
|
{
|
|
"code": 6007,
|
|
"name": "InvalidInputCancelSize",
|
|
"msg": "Price lots should be greater than zero"
|
|
},
|
|
{
|
|
"code": 6008,
|
|
"name": "InvalidInputPriceLots",
|
|
"msg": "Expected cancel size should be greater than zero"
|
|
},
|
|
{
|
|
"code": 6009,
|
|
"name": "InvalidInputPegLimit",
|
|
"msg": "Peg limit should be greater than zero"
|
|
},
|
|
{
|
|
"code": 6010,
|
|
"name": "InvalidInputOrderType",
|
|
"msg": "The order type is invalid. A taker order must be Market or ImmediateOrCancel"
|
|
},
|
|
{
|
|
"code": 6011,
|
|
"name": "InvalidInputOrderId",
|
|
"msg": "Order id cannot be zero"
|
|
},
|
|
{
|
|
"code": 6012,
|
|
"name": "InvalidInputHeapSlots",
|
|
"msg": "Slot above heap limit"
|
|
},
|
|
{
|
|
"code": 6013,
|
|
"name": "InvalidOracleTypes",
|
|
"msg": "Cannot combine two oracles of different providers"
|
|
},
|
|
{
|
|
"code": 6014,
|
|
"name": "InvalidSecondOracle",
|
|
"msg": "Cannot configure secondary oracle without primary"
|
|
},
|
|
{
|
|
"code": 6015,
|
|
"name": "NoCloseMarketAdmin",
|
|
"msg": "This market does not have a `close_market_admin` and thus cannot be closed."
|
|
},
|
|
{
|
|
"code": 6016,
|
|
"name": "InvalidCloseMarketAdmin",
|
|
"msg": "The signer of this transaction is not this market's `close_market_admin`."
|
|
},
|
|
{
|
|
"code": 6017,
|
|
"name": "InvalidOpenOrdersAdmin",
|
|
"msg": "The `open_orders_admin` required by this market to sign all instructions that creates orders is missing or is not valid"
|
|
},
|
|
{
|
|
"code": 6018,
|
|
"name": "InvalidConsumeEventsAdmin",
|
|
"msg": "The `consume_events_admin` required by this market to sign all instructions that consume events is missing or is not valid"
|
|
},
|
|
{
|
|
"code": 6019,
|
|
"name": "InvalidMarketVault",
|
|
"msg": "Provided `market_vault` is invalid"
|
|
},
|
|
{
|
|
"code": 6020,
|
|
"name": "IndexerActiveOO",
|
|
"msg": "Cannot be closed due to the existence of open orders accounts"
|
|
},
|
|
{
|
|
"code": 6021,
|
|
"name": "OraclePegInvalidOracleState",
|
|
"msg": "Cannot place a peg order due to invalid oracle state"
|
|
},
|
|
{
|
|
"code": 6022,
|
|
"name": "UnknownOracleType",
|
|
"msg": "oracle type cannot be determined"
|
|
},
|
|
{
|
|
"code": 6023,
|
|
"name": "OracleConfidence",
|
|
"msg": "an oracle does not reach the confidence threshold"
|
|
},
|
|
{
|
|
"code": 6024,
|
|
"name": "OracleStale",
|
|
"msg": "an oracle is stale"
|
|
},
|
|
{
|
|
"code": 6025,
|
|
"name": "OrderIdNotFound",
|
|
"msg": "Order id not found on the orderbook"
|
|
},
|
|
{
|
|
"code": 6026,
|
|
"name": "EventHeapContainsElements",
|
|
"msg": "Event heap contains elements and market can't be closed"
|
|
},
|
|
{
|
|
"code": 6027,
|
|
"name": "InvalidOrderPostIOC",
|
|
"msg": "ImmediateOrCancel is not a PostOrderType"
|
|
},
|
|
{
|
|
"code": 6028,
|
|
"name": "InvalidOrderPostMarket",
|
|
"msg": "Market is not a PostOrderType"
|
|
},
|
|
{
|
|
"code": 6029,
|
|
"name": "WouldSelfTrade",
|
|
"msg": "would self trade"
|
|
},
|
|
{
|
|
"code": 6030,
|
|
"name": "MarketHasExpired",
|
|
"msg": "The Market has already expired."
|
|
},
|
|
{
|
|
"code": 6031,
|
|
"name": "InvalidPriceLots",
|
|
"msg": "Price lots should be greater than zero"
|
|
},
|
|
{
|
|
"code": 6032,
|
|
"name": "InvalidOraclePrice",
|
|
"msg": "Oracle price above market limits"
|
|
},
|
|
{
|
|
"code": 6033,
|
|
"name": "MarketHasNotExpired",
|
|
"msg": "The Market has not expired yet."
|
|
},
|
|
{
|
|
"code": 6034,
|
|
"name": "NoOwnerOrDelegate",
|
|
"msg": "No correct owner or delegate."
|
|
},
|
|
{
|
|
"code": 6035,
|
|
"name": "NoOwner",
|
|
"msg": "No correct owner"
|
|
},
|
|
{
|
|
"code": 6036,
|
|
"name": "OpenOrdersFull",
|
|
"msg": "No free order index in open orders account"
|
|
},
|
|
{
|
|
"code": 6037,
|
|
"name": "BookContainsElements",
|
|
"msg": "Book contains elements"
|
|
},
|
|
{
|
|
"code": 6038,
|
|
"name": "OpenOrdersOrderNotFound",
|
|
"msg": "Could not find order in user account"
|
|
},
|
|
{
|
|
"code": 6039,
|
|
"name": "InvalidPostAmount",
|
|
"msg": "Amount to post above book limits"
|
|
},
|
|
{
|
|
"code": 6040,
|
|
"name": "DisabledOraclePeg",
|
|
"msg": "Oracle peg orders are not enabled for this market"
|
|
},
|
|
{
|
|
"code": 6041,
|
|
"name": "NonEmptyMarket",
|
|
"msg": "Cannot close a non-empty market"
|
|
},
|
|
{
|
|
"code": 6042,
|
|
"name": "NonEmptyOpenOrdersPosition",
|
|
"msg": "Cannot close a non-empty open orders account"
|
|
}
|
|
]
|
|
} |