package yu_bitget

type AccountArgs struct {
	Symbol      string `json:"symbol"`      // 交易对名称，如："ethusdt"
	ProductType string `json:"productType"` // 产品类型
	MarginCoin  string `json:"marginCoin"`  // 保证金币种（大写）
}

type Account struct {
	MarginCoin            string `json:"marginCoin"`            // 保证金币种
	Locked                string `json:"locked"`                // 锁定数量(保证金币种)，有平仓单时会lock
	Available             string `json:"available"`             // 账户可用数量
	CrossedMaxAvailable   string `json:"crossedMaxAvailable"`   // 全仓最大可用来开仓余额(保证金币种)
	IsolatedMaxAvailable  string `json:"isolatedMaxAvailable"`  // 逐仓最大可用来开仓余额(保证金币种)
	MaxTransferOut        string `json:"maxTransferOut"`        // 最大可转出
	AccountEquity         string `json:"accountEquity"`         // 账户权益(保证金币种)，包含未实现盈亏（根据mark price计算）
	UsdtEquity            string `json:"usdtEquity"`            // 折算USDT账户权益
	BtcEquity             string `json:"btcEquity"`             // 折算BTC账户权益
	CrossedRiskRate       string `json:"crossedRiskRate"`       // 全仓时风险率
	CrossedMarginLeverage string `json:"crossedMarginLeverage"` // 全仓时杠杆倍数
	IsolatedLongLever     string `json:"isolatedLongLever"`     // 逐仓时多头杠杆数
	IsolatedShortLever    string `json:"isolatedShortLever"`    // 逐仓时空头杠杆数
	MarginMode            string `json:"marginMode"`            // 保证金模式。isolated逐仓模式；crossed 全仓模式
	PosMode               string `json:"posMode"`               // 持仓模式：one_way_mode 单向持仓；hedge_mode 双向持仓
	UnrealizedPL          string `json:"unrealizedPL"`          // 未实现盈亏
	Coupon                string `json:"coupon"`                // 体验金
	CrossedUnrealizedPL   string `json:"crossedUnrealizedPL"`   // 全仓未实现盈亏
	IsolatedUnrealizedPL  string `json:"isolatedUnrealizedPL"`  // 逐仓未实现盈亏
}

// Account 获取单个交易对账户信息
func (t *V2Rest) Account(args AccountArgs) *Account {
	j_path, j_resp := "/api/v2/mix/account/account?productType="+string(args.ProductType)+"&symbol="+args.Symbol+"&marginCoin="+args.MarginCoin, make([]*Account, 0)
	if t.request("GET", j_path, nil, &j_resp) {
		return j_resp[0]
	}
	return nil
}
