package yu_okx

type AccountInstruments struct {
	// 账户信息的更新时间，Unix时间戳的毫秒数格式
	UTime string `json:"uTime"`

	// 美金层面权益
	TotalEq string `json:"totalEq"`

	// 美金层面逐仓仓位权益，适用于单币种保证金模式/跨币种保证金模式/组合保证金模式
	IsoEq string `json:"isoEq"`

	// 美金层面有效保证金，适用于跨币种保证金模式/组合保证金模式
	AdjEq string `json:"adjEq"`

	// 美金层面全仓挂单占用保证金，仅适用于跨币种保证金模式
	OrdFroz string `json:"ordFroz"`

	// 美金层面占用保证金，适用于跨币种保证金模式/组合保证金模式
	Imr string `json:"imr"`

	// 美金层面维持保证金，适用于跨币种保证金模式/组合保证金模式
	Mmr string `json:"mmr"`

	// 账户美金层面潜在借币占用保证金，仅适用于跨币种保证金模式/组合保证金模式。在其他账户模式下为""
	BorrowFroz string `json:"borrowFroz"`

	// 美金层面保证金率，适用于跨币种保证金模式/组合保证金模式
	MgnRatio string `json:"mgnRatio"`

	// 以美金价值为单位的持仓数量，即仓位美金价值，适用于跨币种保证金模式/组合保证金模式
	NotionalUsd string `json:"notionalUsd"`

	// 账户层面全仓未实现盈亏（美元单位），适用于跨币种保证金模式/组合保证金模式
	Upl string `json:"upl"`

	// 各币种资产详细信息
	Details []struct {
		// 币种
		Ccy string `json:"ccy"`

		// 币种总权益
		Eq string `json:"eq"`

		// 币种余额
		CashBal string `json:"cashBal"`

		// 币种余额信息的更新时间，Unix时间戳的毫秒数格式
		UTime string `json:"uTime"`

		// 币种逐仓仓位权益，适用于单币种保证金模式/跨币种保证金模式/组合保证金模式
		IsoEq string `json:"isoEq"`

		// 可用保证金，适用于单币种保证金模式/跨币种保证金模式/组合保证金模式
		AvailEq string `json:"availEq"`

		// 美金层面币种折算权益
		DisEq string `json:"disEq"`

		// 抄底宝、逃顶宝功能的币种冻结金额
		FixedBal string `json:"fixedBal"`

		// 可用余额
		AvailBal string `json:"availBal"`

		// 币种占用金额
		FrozenBal string `json:"frozenBal"`

		// 挂单冻结数量，适用于简单交易模式/单币种保证金模式/跨币种保证金模式
		OrdFrozen string `json:"ordFrozen"`

		// 币种负债额，值为正数，如 21625.64，适用于跨币种保证金模式/组合保证金模式
		Liab string `json:"liab"`

		// 未实现盈亏，适用于单币种保证金模式/跨币种保证金模式/组合保证金模式
		Upl string `json:"upl"`

		// 由于仓位未实现亏损导致的负债，适用于跨币种保证金模式/组合保证金模式
		UplLiab string `json:"uplLiab"`

		// 币种全仓负债额，适用于跨币种保证金模式/组合保证金模式
		CrossLiab string `json:"crossLiab"`

		// 币种逐仓负债额，适用于跨币种保证金模式/组合保证金模式
		IsoLiab string `json:"isoLiab"`

		// 体验金余额
		RewardBal string `json:"rewardBal"`

		// 保证金率，衡量账户内某项资产风险的指标，适用于单币种保证金模式
		MgnRatio string `json:"mgnRatio"`

		// 计息，应扣未扣利息，值为正数，如 9.01，适用于跨币种保证金模式/组合保证金模式
		Interest string `json:"interest"`

		// 当前负债币种触发系统自动换币的风险，0、1、2、3、4、5 其中之一，数字越大代表您的负债币种触发自动换币概率越高，适用于跨币种保证金模式/组合保证金模式
		Twap string `json:"twap"`

		// 币种最大可借，适用于跨币种保证金模式/组合保证金模式的全仓
		MaxLoan string `json:"maxLoan"`

		// 币种权益美金价值
		EqUsd string `json:"eqUsd"`

		// 币种美金层面潜在借币占用保证金，仅适用于跨币种保证金模式/组合保证金模式。在其他账户模式下为""
		BorrowFroz string `json:"borrowFroz"`

		// 币种杠杆倍数，适用于单币种保证金模式
		NotionalLever string `json:"notionalLever"`

		// 策略权益
		StgyEq string `json:"stgyEq"`

		// 逐仓未实现盈亏，适用于单币种保证金模式/跨币种保证金模式/组合保证金模式
		IsoUpl string `json:"isoUpl"`

		// 现货对冲占用数量，适用于组合保证金模式
		SpotInUseAmt string `json:"spotInUseAmt"`

		// 用户自定义现货占用数量，适用于组合保证金模式
		ClSpotInUseAmt string `json:"clSpotInUseAmt"`

		// 系统计算得到的最大可能现货占用数量，适用于组合保证金模式
		MaxSpotInUseAmt string `json:"maxSpotInUseAmt"`

		// 现货逐仓余额，仅适用于现货带单/跟单，适用于简单交易模式/单币种保证金模式
		SpotIsoBal string `json:"spotIsoBal"`

		// 币种维度占用保证金，适用于单币种保证金模式
		Imr string `json:"imr"`

		// 币种维度维持保证金，适用于单币种保证金模式
		Mmr string `json:"mmr"`
	} `json:"details"`
}

func (t *V5Rest) AccountInstruments(ccy string) []*AccountInstruments {
	j_path, j_resp := "/api/v5/account/balance?ccy="+ccy, make([]*AccountInstruments, 0)
	t.request("GET", j_path, nil, j_resp)
	return j_resp
}
