<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sbe:messageSchema
    xmlns:sbe="http://fixprotocol.io/2016/sbe"
    package="market_data_feed"
    id="19"
    version="1"
    semanticVersion="1.0"
    description="OneChronos European Market Data Feed Spec"
    byteOrder="littleEndian">

  <!-- ====================== Types ====================== -->
  <types>
    <composite name="messageHeader" description="Message identifiers and length of message root">
      <type name="sequenceNumber" primitiveType="uint64"/>
      <type name="reserved" primitiveType="uint8"/>
      <type name="blockLength" primitiveType="uint16"/>
      <type name="templateId" primitiveType="uint16"/>
      <type name="schemaId" primitiveType="uint16"/>
      <type name="version" primitiveType="uint16"/>
    </composite>
    <composite name="groupSizeEncoding" description="Repeating group dimensions">
      <type name="blockLength" primitiveType="uint16"/>
      <type name="numInGroup" primitiveType="uint16"/>
    </composite>
    <composite name="varAsciiEncoding" description="Variable length ASCII String.">
      <type name="length" primitiveType="uint32" maxValue="1073741824"/>
      <type name="varData" primitiveType="uint8" length="0" characterEncoding="ASCII"/>
    </composite>
    <type name="String32" length="32" primitiveType="char" characterEncoding="US-ASCII"/>
    <type name="String12" length="12" primitiveType="char" characterEncoding="US-ASCII"/>
    <type name="String4" length="4" primitiveType="char" characterEncoding="US-ASCII"/>
    <type name="String3" length="3" primitiveType="char" characterEncoding="US-ASCII"/>
    <type name="Reserved16" length="16" primitiveType="char" characterEncoding="US-ASCII"/>
    <type name="Quantity" primitiveType="uint64"/>
    <enum name="BooleanType" encodingType="uint8" description="Boolean Type.">
      <validValue name="False">0</validValue>
      <validValue name="True">1</validValue>
    </enum>
    <type name="Currency" length="3" primitiveType="char" characterEncoding="US-ASCII"/>
    <type name="Isin" length="12" primitiveType="char" characterEncoding="US-ASCII"/>
    <type name="MarketIdentifierCode" length="4" primitiveType="char" characterEncoding="US-ASCII"/>
    <type name="Price" primitiveType="uint8" length="16"/>
    <enum name="HaltReason" encodingType="char">
      <validValue name="MarketState">M</validValue>
      <validValue name="StaleReference">S</validValue>
      <validValue name="ManualHalt">H</validValue>
      <validValue name="Unspecified">U</validValue>
    </enum>
    <type name="PriceMantissa" primitiveType="int64"/>
    <enum name="SecurityStatus" encodingType="char">
      <validValue name="Trading">T</validValue>
      <validValue name="Closed">C</validValue>
      <validValue name="Halted">H</validValue>
      <validValue name="Suspended">S</validValue>
    </enum>
    <enum name="SuspensionReason" encodingType="char">
      <validValue name="NcaSuspension">N</validValue>
      <validValue name="ManualSuspension">M</validValue>
      <validValue name="Unspecified">U</validValue>
    </enum>
    <!--YYYY-MM-DDTHH:mm:ss.ddddddZ-->
    <type name="DateTimeISO8601" length="27" primitiveType="char" characterEncoding="US-ASCII"/>
    <!--"ALGO" – Algorithmic transaction flag; "CANC" – Cancellation flag-->
    <type name="Flags" length="4" primitiveType="char" characterEncoding="US-ASCII"/>
    <!--"MONE" — Monetary value in the case of equity and equity-like financial instruments-->
    <type name="PriceNotation" length="4" primitiveType="char" characterEncoding="US-ASCII"/>
    <!--Transaction identification code {date}{OCXL/E}{auction id padded to 8 chars}{symbol id padded to 8 chars}{P1/2}-->
    <type name="TIC" length="30" primitiveType="char" characterEncoding="US-ASCII"/>
    <!--"PATS" – periodic auction trading system-->
    <type name="TradingSystem" length="4" primitiveType="char" characterEncoding="US-ASCII"/>
    <!--"UDUC" – Undefined Auction-->
    <type name="TradingSystemPhase" length="4" primitiveType="char" characterEncoding="US-ASCII"/>
  </types>

  <!-- ====================== Messages ====================== -->
  <sbe:message name="Heartbeat" id="1" description="OneChronos Market Data Feed Heartbeat">
    <field name="executingExchange" id="1" type="MarketIdentifierCode"/>
    <field name="sendTime" id="2" type="DateTimeISO8601"/>
  </sbe:message>
  <sbe:message name="LastTrade" id="2" description="OneChronos Last Trade">
    <field name="executingExchange" id="1" type="MarketIdentifierCode"/>
    <field name="tradingSystem" id="2" type="TradingSystem"/>
    <field name="auctionCallTime" id="3" type="DateTimeISO8601"/>
    <field name="auctionId" id="4" type="uint64"/>
    <field name="listingExchange" id="5" type="MarketIdentifierCode"/>
    <field name="currency" id="6" type="Currency"/>
    <field name="priceNotation" id="7" type="PriceNotation"/>
    <field name="isin" id="8" type="Isin"/>
    <field name="priceScale" id="9" type="uint8"/>
    <field name="price" id="10" type="PriceMantissa"/>
    <field name="quantity" id="11" type="Quantity"/>
    <field name="TIC" id="12" type="TIC"/>
    <field name="flags" id="13" type="Flags"/>
    <field name="reserved" id="14" type="Reserved16"/>
  </sbe:message>
  <sbe:message name="AuctionStart" id="3" description="OneChronos Auction Start">
    <field name="executingExchange" id="1" type="MarketIdentifierCode"/>
    <field name="updateDateAndTime" id="2" type="DateTimeISO8601"/>
    <field name="auctionId" id="3" type="uint64"/>
  </sbe:message>
  <sbe:message name="AuctionUncrossing" id="4" description="OneChronos Auction Uncrossing">
    <field name="executingExchange" id="1" type="MarketIdentifierCode"/>
    <field name="updateDateAndTime" id="2" type="DateTimeISO8601"/>
    <field name="auctionId" id="3" type="uint64"/>
  </sbe:message>
  <sbe:message name="AuctionIndicative" id="5" description="OneChronos Auction Indicative">
    <field name="executingExchange" id="1" type="MarketIdentifierCode"/>
    <field name="tradingSystem" id="2" type="TradingSystem"/>
    <field name="tradingSystemPhase" id="3" type="TradingSystemPhase"/>
    <field name="updateDateAndTime" id="4" type="DateTimeISO8601"/>
    <field name="auctionId" id="5" type="uint64"/>
    <field name="listingExchange" id="6" type="MarketIdentifierCode"/>
    <field name="currency" id="7" type="Currency"/>
    <field name="isin" id="8" type="Isin"/>
    <field name="priceScale" id="9" type="uint8"/>
    <field name="priceNotation" id="10" type="PriceNotation"/>
    <field name="price1" id="11" type="PriceMantissa"/>
    <field name="quantity1" id="12" type="Quantity"/>
    <field name="price2" id="13" type="PriceMantissa" presence="optional"/>
    <field name="quantity2" id="14" type="Quantity" presence="optional"/>
    <field name="intendedPrice" id="15" type="PriceMantissa"/>
    <field name="totalQuantity" id="16" type="Quantity"/>
    <field name="reserved" id="17" type="Reserved16"/>
  </sbe:message>
  <sbe:message name="AuctionSummary" id="6" description="OneChronos Auction Summary">
    <field name="executingExchange" id="1" type="MarketIdentifierCode"/>
    <field name="auctionCallTime" id="2" type="DateTimeISO8601"/>
    <field name="auctionId" id="3" type="uint64"/>
    <field name="listingExchange" id="4" type="MarketIdentifierCode"/>
    <field name="currency" id="5" type="Currency"/>
    <field name="isin" id="6" type="Isin"/>
    <field name="priceScale" id="7" type="uint8"/>
    <field name="priceNotation" id="8" type="PriceNotation"/>
    <field name="price1" id="9" type="PriceMantissa"/>
    <field name="quantity1" id="10" type="Quantity"/>
    <field name="price2" id="11" type="PriceMantissa" presence="optional"/>
    <field name="quantity2" id="12" type="Quantity" presence="optional"/>
    <field name="intendedPrice" id="13" type="PriceMantissa"/>
    <field name="totalQuantity" id="14" type="Quantity"/>
    <field name="reserved" id="15" type="Reserved16"/>
  </sbe:message>
  <sbe:message name="SecurityStateChange" id="7" description="OneChronos Security State Change">
    <field name="executingExchange" id="1" type="MarketIdentifierCode"/>
    <field name="updateDateAndTime" id="2" type="DateTimeISO8601"/>
    <field name="auctionId" id="3" type="uint64"/>
    <field name="listingExchange" id="4" type="MarketIdentifierCode"/>
    <field name="currency" id="5" type="Currency"/>
    <field name="isin" id="6" type="Isin"/>
    <field name="securityStatus" id="7" type="SecurityStatus"/>
    <field name="haltReason" id="8" type="HaltReason" presence="optional"/>
    <field name="suspensionReason" id="9" type="SuspensionReason" presence="optional"/>
    <field name="reserved" id="10" type="Reserved16"/>
  </sbe:message>
</sbe:messageSchema>
