<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sbe:messageSchema xmlns:sbe="http://fixprotocol.io/2016/sbe" package="com.okx.sbe.private" id="1" version="1" semanticVersion="1.1.0" description="orders and fills private-channel SBE push schema" byteOrder="littleEndian">
    <types>
        <composite name="messageHeader" description="Template ID and length of message root.">
            <type name="blockLength" primitiveType="uint16" />
            <type name="templateId" primitiveType="uint16" />
            <type name="schemaId" primitiveType="uint16" />
            <type name="version" primitiveType="uint16" />
        </composite>
        <enum name="stateEnum" encodingType="int8">
            <validValue name="CANCELED">2</validValue>
            <validValue name="LIVE">3</validValue>
            <validValue name="PARTIALLY_FILLED">4</validValue>
            <validValue name="FILLED">5</validValue>
            <validValue name="MMP_CANCELED">6</validValue>
        </enum>
        <enum name="sideEnum" encodingType="int8">
            <validValue name="SELL">0</validValue>
            <validValue name="BUY">1</validValue>
        </enum>
        <enum name="tdModeEnum" encodingType="int8">
            <validValue name="CASH">1</validValue>
            <validValue name="CROSS">2</validValue>
            <validValue name="ISOLATED">3</validValue>
            <validValue name="SPOT_ISOLATED">4</validValue>
        </enum>
        <enum name="execTypeEnum" encodingType="int8">
            <validValue name="MAKER">0</validValue>
            <validValue name="TAKER">1</validValue>
        </enum>
        <enum name="categoryEnum" encodingType="int8">
            <validValue name="NORMAL">0</validValue>
            <validValue name="TWAP">1</validValue>
            <validValue name="ADL">2</validValue>
            <validValue name="FULL_LIQUIDATION">3</validValue>
            <validValue name="PARTIAL_LIQUIDATION">4</validValue>
            <validValue name="DELIVERY">5</validValue>
            <validValue name="DDH">6</validValue>
            <validValue name="AUTO_CONVERSION">7</validValue>
            <validValue name="XSTOCK_LIQUIDATION">8</validValue>
        </enum>
        <enum name="amendResultEnum" encodingType="int8">
            <validValue name="FAILED">-1</validValue>
            <validValue name="SUCCESS">0</validValue>
            <validValue name="AUTO_CANCELED">1</validValue>
            <validValue name="AUTO_AMENDED">2</validValue>
        </enum>
        <enum name="cancelSourceEnum" encodingType="int8">
            <validValue name="SYSTEM">0</validValue>
            <validValue name="USER">1</validValue>
            <validValue name="PRE_REDUCE_MARGIN">2</validValue>
            <validValue name="RISK_CONTROL">3</validValue>
            <validValue name="BORROW_CAP">4</validValue>
            <validValue name="ADL">6</validValue>
            <validValue name="FUTURES_EXPIRY">7</validValue>
            <validValue name="FUNDING_FEE_BALANCE">9</validValue>
            <validValue name="OPTION_EXPIRY">10</validValue>
            <validValue name="FOK_INCOMPLETE">13</validValue>
            <validValue name="IOC_REMAINDER">14</validValue>
            <validValue name="PRICE_LIMIT">15</validValue>
            <validValue name="POSITION_MARKET_CLOSED">17</validValue>
            <validValue name="CANCEL_ALL_AFTER">20</validValue>
            <validValue name="POSITION_FULLY_CLOSED">21</validValue>
            <validValue name="BETTER_SAME_SIDE_CURRENT_REDUCE_ONLY">22</validValue>
            <validValue name="BETTER_SAME_SIDE_EXISTING_REDUCE_ONLY">23</validValue>
            <validValue name="SLIPPAGE_PROTECTION">27</validValue>
            <validValue name="POST_ONLY_WOULD_TAKE">31</validValue>
            <validValue name="STP">32</validValue>
            <validValue name="TAKER_MATCH_COUNT_LIMIT">33</validValue>
            <validValue name="LINKED_STOP_LOSS_TRIGGERED">36</validValue>
            <validValue name="LINKED_STOP_LOSS_CANCELED">37</validValue>
            <validValue name="MMP_CANCELED_BY_USER">38</validValue>
            <validValue name="MMP_TRIGGERED">39</validValue>
            <validValue name="CHASE_DISTANCE">42</validValue>
            <validValue name="INDEX_PRICE_VALIDATION">43</validValue>
            <validValue name="AUTO_CONVERSION_BALANCE">44</validValue>
            <validValue name="ELP_PRICE_VALIDATION">45</validValue>
            <validValue name="DELTA_REDUCTION">46</validValue>
        </enum>
        <enum name="amendSourceEnum" encodingType="int8">
            <validValue name="USER_AMENDMENT">1</validValue>
            <validValue name="USER_AMENDMENT_REDUCE_ONLY_ADJUSTED">2</validValue>
            <validValue name="SYSTEM_REDUCE_ONLY_ADJUSTMENT">4</validValue>
            <validValue name="OPTION_PX_FOLLOW_UP_AMENDMENT">5</validValue>
        </enum>
        <enum name="riskBypassResultEnum" encodingType="int8">
            <validValue name="APPLIED">1</validValue>
            <validValue name="IMR_GATE_RATIO_BELOW_THRESHOLD">2</validValue>
            <validValue name="ADJUSTED_EQUITY_BELOW_MINIMUM">3</validValue>
            <validValue name="BORROWING_LIMIT_EXCEEDED">4</validValue>
            <validValue name="PER_ORDER_VALUE_LIMIT_EXCEEDED">5</validValue>
            <validValue name="CUMULATIVE_ORDER_VALUE_LIMIT_EXCEEDED">6</validValue>
            <validValue name="PLATFORM_DISABLED">7</validValue>
            <validValue name="UNSUPPORTED_TYPE">8</validValue>
            <validValue name="AUTO_BORROW_DISABLED">9</validValue>
            <validValue name="MULTIPLE_MARGIN_CURRENCIES_IN_BATCH">10</validValue>
            <validValue name="TEMPORARILY_UNAVAILABLE">11</validValue>
        </enum>
        <enum name="booleanEnum" encodingType="int8" sinceVersion="1">
            <validValue name="FALSE">0</validValue>
            <validValue name="TRUE">1</validValue>
        </enum>
    </types>
    <sbe:message name="OrdersChannelEvent" id="1100" description="One incremental orders-channel event.">
        <field name="instIdCode" id="1" type="int64" description="Unique instrument code." />
        <field name="ordId" id="2" type="int64" description="Order ID." />
        <field name="clOrdId" id="3" type="int64" presence="optional" description="Client order ID." />
        <field name="tag" id="4" type="int64" presence="optional" description="Numeric order tag." />
        <field name="pxMantissa" id="5" type="int64" presence="optional" description="Order price mantissa." />
        <field name="pxExponent" id="6" type="int8" description="Shared price exponent for pxMantissa, fillPxMantissa, and avgPxMantissa." />
        <field name="szMantissa" id="7" type="int64" presence="optional" description="Order size mantissa." />
        <field name="szExponent" id="8" type="int8" description="Shared size exponent for szMantissa, fillSzMantissa, and accFillSzMantissa." />
        <field name="side" id="9" type="sideEnum" description="Order side." />
        <field name="tdMode" id="10" type="tdModeEnum" description="Trade mode." />
        <field name="fillPxMantissa" id="11" type="int64" presence="optional" description="Latest fill price mantissa; uses pxExponent." />
        <field name="fillSzMantissa" id="12" type="int64" presence="optional" description="Latest fill size mantissa; uses szExponent." />
        <field name="fillTimeUs" id="13" type="int64" presence="optional" description="Latest fill time in microseconds." />
        <field name="tradeId" id="14" type="int64" presence="optional" description="Latest trade ID." />
        <field name="execType" id="15" type="execTypeEnum" presence="optional" description="Liquidity role." />
        <field name="fillFeeMantissa" id="16" type="int64" presence="optional" description="Latest fill fee or rebate mantissa; uses feeExponent." />
        <field name="accFillSzMantissa" id="17" type="int64" presence="optional" description="Accumulated fill size mantissa; uses szExponent." />
        <field name="state" id="18" type="stateEnum" description="Order state." />
        <field name="feeMantissa" id="19" type="int64" presence="optional" description="Accumulated fee or rebate mantissa; uses feeExponent." />
        <field name="feeExponent" id="20" type="int8" description="Shared fee exponent for feeMantissa and fillFeeMantissa." />
        <field name="cancelSource" id="21" type="cancelSourceEnum" presence="optional" description="Cancellation source." />
        <field name="amendSource" id="22" type="amendSourceEnum" presence="optional" description="Amendment source." />
        <field name="category" id="23" type="categoryEnum" presence="optional" description="Order category." />
        <field name="uTimeUs" id="24" type="int64" description="Order update time in microseconds since Unix epoch." />
        <field name="cTimeUs" id="25" type="int64" description="Order creation time in microseconds since Unix epoch." />
        <field name="reqId" id="26" type="int64" presence="optional" description="Amendment request ID." />
        <field name="amendResult" id="27" type="amendResultEnum" presence="optional" description="Amendment result." />
        <field name="riskBypassResult" id="28" type="riskBypassResultEnum" presence="optional" description="Risk Bypass result." />
        <field name="reduceOnly" id="29" type="booleanEnum" presence="optional" sinceVersion="1" description="Current reduce-only flag." />
        <field name="avgPxMantissa" id="30" type="int64" presence="optional" sinceVersion="1" description="Average executed price mantissa; uses pxExponent." />
    </sbe:message>
    <sbe:message name="FillsChannelEvent" id="1101">
        <field name="instIdCode" id="1" type="int64" description="Unique instrument code." />
        <field name="tsUs" id="2" type="int64" description="Fill event time in microseconds since Unix epoch." />
        <field name="tradeId" id="3" type="int64" description="Trade ID; for aggregated taker fills, the latest trade ID." />
        <field name="ordId" id="4" type="int64" description="Order ID." />
        <field name="clOrdId" id="5" type="int64" presence="optional" description="Client order ID." />
        <field name="fillPxMantissa" id="6" type="int64" description="Fill price mantissa." />
        <field name="fillSzMantissa" id="7" type="int64" description="Aggregated fill size mantissa." />
        <field name="count" id="8" type="int16" description="Number of matched fills represented by this event." />
        <field name="side" id="9" type="sideEnum" description="Order side." />
        <field name="execType" id="10" type="execTypeEnum" description="Liquidity role." />
        <field name="fillPxExponent" id="11" type="int8" description="Fill price exponent." />
        <field name="fillSzExponent" id="12" type="int8" description="Fill size exponent." />
    </sbe:message>
</sbe:messageSchema>
