{
    "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": "FillOrKill"
                    }
                ]
            }
        },
        {
            "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": "FillOrKill",
                        "fields": [
                            {
                                "name": "price_lots",
                                "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"
        },
        {
            "code": 6043,
            "name": "WouldExecutePartially",
            "msg": "Fill-Or-Kill order would generate a partial execution"
        }
    ]
}
