/*
 * BitMEX API
 *
 * ## REST API for the BitMEX Trading Platform  _If you are building automated tools, please subscribe to the_ _[BitMEX API RSS Feed](https://blog.bitmex.com/api_announcement/feed/) for changes. The feed will be updated_ _regularly and is the most reliable way to get downtime and update announcements._  [View Changelog](/app/apiChangelog)  -  #### Getting Started  Base URI: [https://www.bitmex.com/api/v1](/api/v1)  ##### Fetching Data  All REST endpoints are documented below. You can try out any query right from this interface.  Most table queries accept `count`, `start`, and `reverse` params. Set `reverse=true` to get rows newest-first.  Additional documentation regarding filters, timestamps, and authentication is available in [the main API documentation](/app/restAPI).  _All_ table data is available via the [Websocket](/app/wsAPI). We highly recommend using the socket if you want to have the quickest possible data without being subject to ratelimits.  ##### Return Types  By default, all data is returned as JSON. Send `?_format=csv` to get CSV data or `?_format=xml` to get XML data.  ##### Trade Data Queries  _This is only a small subset of what is available, to get you started._  Fill in the parameters and click the `Try it out!` button to try any of these queries.  - [Pricing Data](#!/Quote/Quote_get)  - [Trade Data](#!/Trade/Trade_get)  - [OrderBook Data](#!/OrderBook/OrderBook_getL2)  - [Settlement Data](#!/Settlement/Settlement_get)  - [Exchange Statistics](#!/Stats/Stats_history)  Every function of the BitMEX.com platform is exposed here and documented. Many more functions are available.  ##### Swagger Specification  [⇩ Download Swagger JSON](swagger.json)  -  ## All API Endpoints  Click to expand a section. 
 *
 * API version: 1.2.0
 * Contact: support@bitmex.com
 * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git)
 */

package swagger

import (
	"time"
)

// Tradeable Contracts, Indices, and History
type Instrument struct {
	Symbol string `json:"symbol"`
	RootSymbol string `json:"rootSymbol,omitempty"`
	State string `json:"state,omitempty"`
	Typ string `json:"typ,omitempty"`
	Listing time.Time `json:"listing,omitempty"`
	Front time.Time `json:"front,omitempty"`
	Expiry time.Time `json:"expiry,omitempty"`
	Settle time.Time `json:"settle,omitempty"`
	ListedSettle time.Time `json:"listedSettle,omitempty"`
	PositionCurrency string `json:"positionCurrency,omitempty"`
	Underlying string `json:"underlying,omitempty"`
	QuoteCurrency string `json:"quoteCurrency,omitempty"`
	UnderlyingSymbol string `json:"underlyingSymbol,omitempty"`
	Reference string `json:"reference,omitempty"`
	ReferenceSymbol string `json:"referenceSymbol,omitempty"`
	CalcInterval time.Time `json:"calcInterval,omitempty"`
	PublishInterval time.Time `json:"publishInterval,omitempty"`
	PublishTime time.Time `json:"publishTime,omitempty"`
	MaxOrderQty int64 `json:"maxOrderQty,omitempty"`
	MaxPrice float64 `json:"maxPrice,omitempty"`
	LotSize int64 `json:"lotSize,omitempty"`
	TickSize float64 `json:"tickSize,omitempty"`
	Multiplier int64 `json:"multiplier,omitempty"`
	SettlCurrency string `json:"settlCurrency,omitempty"`
	UnderlyingToPositionMultiplier int64 `json:"underlyingToPositionMultiplier,omitempty"`
	UnderlyingToSettleMultiplier int64 `json:"underlyingToSettleMultiplier,omitempty"`
	QuoteToSettleMultiplier int64 `json:"quoteToSettleMultiplier,omitempty"`
	IsQuanto bool `json:"isQuanto,omitempty"`
	IsInverse bool `json:"isInverse,omitempty"`
	InitMargin float64 `json:"initMargin,omitempty"`
	MaintMargin float64 `json:"maintMargin,omitempty"`
	RiskLimit int64 `json:"riskLimit,omitempty"`
	RiskStep int64 `json:"riskStep,omitempty"`
	Limit float64 `json:"limit,omitempty"`
	Taxed bool `json:"taxed,omitempty"`
	Deleverage bool `json:"deleverage,omitempty"`
	MakerFee float64 `json:"makerFee,omitempty"`
	TakerFee float64 `json:"takerFee,omitempty"`
	SettlementFee float64 `json:"settlementFee,omitempty"`
	FundingBaseSymbol string `json:"fundingBaseSymbol,omitempty"`
	FundingQuoteSymbol string `json:"fundingQuoteSymbol,omitempty"`
	FundingPremiumSymbol string `json:"fundingPremiumSymbol,omitempty"`
	FundingTimestamp time.Time `json:"fundingTimestamp,omitempty"`
	FundingInterval time.Time `json:"fundingInterval,omitempty"`
	FundingRate float64 `json:"fundingRate,omitempty"`
	IndicativeFundingRate float64 `json:"indicativeFundingRate,omitempty"`
	RebalanceTimestamp time.Time `json:"rebalanceTimestamp,omitempty"`
	RebalanceInterval time.Time `json:"rebalanceInterval,omitempty"`
	PrevClosePrice float64 `json:"prevClosePrice,omitempty"`
	LimitDownPrice float64 `json:"limitDownPrice,omitempty"`
	LimitUpPrice float64 `json:"limitUpPrice,omitempty"`
	TotalVolume int64 `json:"totalVolume,omitempty"`
	Volume int64 `json:"volume,omitempty"`
	Volume24h int64 `json:"volume24h,omitempty"`
	PrevTotalTurnover int64 `json:"prevTotalTurnover,omitempty"`
	TotalTurnover int64 `json:"totalTurnover,omitempty"`
	Turnover int64 `json:"turnover,omitempty"`
	Turnover24h int64 `json:"turnover24h,omitempty"`
	HomeNotional24h float64 `json:"homeNotional24h,omitempty"`
	ForeignNotional24h float64 `json:"foreignNotional24h,omitempty"`
	PrevPrice24h float64 `json:"prevPrice24h,omitempty"`
	Vwap float64 `json:"vwap,omitempty"`
	HighPrice float64 `json:"highPrice,omitempty"`
	LowPrice float64 `json:"lowPrice,omitempty"`
	LastPrice float64 `json:"lastPrice,omitempty"`
	LastPriceProtected float64 `json:"lastPriceProtected,omitempty"`
	LastTickDirection string `json:"lastTickDirection,omitempty"`
	LastChangePcnt float64 `json:"lastChangePcnt,omitempty"`
	BidPrice float64 `json:"bidPrice,omitempty"`
	MidPrice float64 `json:"midPrice,omitempty"`
	AskPrice float64 `json:"askPrice,omitempty"`
	ImpactBidPrice float64 `json:"impactBidPrice,omitempty"`
	ImpactMidPrice float64 `json:"impactMidPrice,omitempty"`
	ImpactAskPrice float64 `json:"impactAskPrice,omitempty"`
	HasLiquidity bool `json:"hasLiquidity,omitempty"`
	OpenInterest int64 `json:"openInterest,omitempty"`
	OpenValue int64 `json:"openValue,omitempty"`
	FairMethod string `json:"fairMethod,omitempty"`
	FairBasisRate float64 `json:"fairBasisRate,omitempty"`
	FairBasis float64 `json:"fairBasis,omitempty"`
	FairPrice float64 `json:"fairPrice,omitempty"`
	MarkMethod string `json:"markMethod,omitempty"`
	MarkPrice float64 `json:"markPrice,omitempty"`
	IndicativeSettlePrice float64 `json:"indicativeSettlePrice,omitempty"`
	SettledPriceAdjustmentRate float64 `json:"settledPriceAdjustmentRate,omitempty"`
	SettledPrice float64 `json:"settledPrice,omitempty"`
	InstantPnl bool `json:"instantPnl,omitempty"`
	MinTick float64 `json:"minTick,omitempty"`
	Timestamp time.Time `json:"timestamp,omitempty"`
}
