package yu_bitget

type Contracts struct {
	Symbol              string   `json:"symbol"`              // 产品名称
	BaseCoin            string   `json:"baseCoin"`            // 基础币，如 ETHUSDT 中，特指ETH
	QuoteCoin           string   `json:"quoteCoin"`           // 计价币，如 ETHUSDT 中，特指USDT
	BuyLimitPriceRatio  string   `json:"buyLimitPriceRatio"`  // 买价限价比例
	SellLimitPriceRatio string   `json:"sellLimitPriceRatio"` // 卖价限价比例
	FeeRateUpRatio      string   `json:"feeRateUpRatio"`      // 手续费上浮比例
	MakerFeeRate        string   `json:"makerFeeRate"`        // Maker手续费率
	TakerFeeRate        string   `json:"takerFeeRate"`        // Taker手续费率
	OpenCostUpRatio     string   `json:"openCostUpRatio"`     // 开仓成本上浮比例
	SupportMarginCoins  []string `json:"supportMarginCoins"`  // 支持保证金币种
	MinTradeNum         string   `json:"minTradeNum"`         // 最小开单数量(基础币)
	PriceEndStep        string   `json:"priceEndStep"`        // 价格步长
	VolumePlace         string   `json:"volumePlace"`         // 数量小数位
	PricePlace          string   `json:"pricePlace"`          // 价格小数位
	SizeMultiplier      string   `json:"sizeMultiplier"`      // 下单数量要大于 minTradeNum 并且满足 sizeMultiplier 的倍数
	SymbolType          string   `json:"symbolType"`          // 合约类型，perpetual 永续，delivery 交割
	MinTradeUSDT        string   `json:"minTradeUSDT"`        // 最小USDT交易额
	MaxSymbolOrderNum   string   `json:"maxSymbolOrderNum"`   // 最大持有订单数（symbol维度）
	MaxProductOrderNum  string   `json:"maxProductOrderNum"`  // 最大持有订单数（产品类型维度）
	MaxPositionNum      string   `json:"maxPositionNum"`      // 最大持有仓位数量
	SymbolStatus        string   `json:"symbolStatus"`        // 交易对状态，listed 上架，normal 正常/开盘，maintain 禁止交易
	OffTime             string   `json:"offTime"`             // 下架时间，'-1' 表示正常
	LimitOpenTime       string   `json:"limitOpenTime"`       // 可开仓时间，'-1' 表示正常
	DeliveryTime        string   `json:"deliveryTime"`        // 交割时间
	DeliveryStartTime   string   `json:"deliveryStartTime"`   // 交割开始时间
	LaunchTime          string   `json:"launchTime"`          // 上架时间
	FundInterval        string   `json:"fundInterval"`        // 资金费结算周期
	MinLever            string   `json:"minLever"`            // 最小杠杆
	MaxLever            string   `json:"maxLever"`            // 最大杠杆
	PosLimit            string   `json:"posLimit"`            // 持仓限制
	MaintainTime        string   `json:"maintainTime"`        // 维护时间（状态处于维护/即将维护时会有值）
}

// Contracts 获取合约信息
//
//	@Description:
//	@param productType 产品类型
//	@param symbol 交易币对
func (t *V2Rest) Contracts(productType ProductType, symbol string) *Contracts {
	j_path, j_resp := "/api/v2/mix/market/contracts?productType="+string(productType)+"&symbol="+symbol, make([]*Contracts, 0)
	if t.request("GET", j_path, nil, &j_resp) {
		return j_resp[0]
	}
	return nil
}

type SymbolPrice struct {
	Symbol     string `json:"symbol"`     // 币对名称，如："BTCUSDT"
	Price      string `json:"price"`      // 最新成交价格
	IndexPrice string `json:"indexPrice"` // 指数价格
	MarkPrice  string `json:"markPrice"`  // 标记价格
	Timestamp  string `json:"ts"`         // 当前数据时间戳，Unix时间戳的毫秒数格式，如1672410780000
}

// SymbolPrice 获取交易对市价/指数/标记价格
//
//	@Description:
//	@param productType 产品类型
//	@param symbol 交易币对
func (t *V2Rest) SymbolPrice(productType ProductType, symbol string) *SymbolPrice {
	j_path, j_resp := "/api/v2/mix/market/symbol-price?productType="+string(productType)+"&symbol="+symbol, make([]*SymbolPrice, 0)
	if t.request("GET", j_path, nil, &j_resp) {
		return j_resp[0]
	}
	return nil
}
