package com.spot.resp;

import com.spot.entity.ConfigSymbolSlippage;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * 已发布交易对响应 VO
 *
 * @author jean
 * @date 2026-05-08
 */
@Data
public class OpenSymbolResp {

    /** 交易对符号（如：BTCUSDT） */
    private String symbol;

    /** 基准货币图标地址（取 base 对应的 config_coin_symbol.icon） */
    private String icon;

    /** 基准货币（如：BTC） */
    private String base;

    /** 计价货币（如：USDT） */
    private String quote;

    /** 价格精度（小数位数） */
    private Integer pricePre;

    /** 数量精度（小数位数） */
    private Integer volumePre;

    /** Taker 手续费率 */
    private BigDecimal takerFee;

    /** Maker 手续费率 */
    private BigDecimal makerFee;

    /** 限价单最小价格 */
    private BigDecimal limitPriceMin;

    /** 限价单最小数量 */
    private BigDecimal limitVolumeMin;

    /** 市价买最小金额 */
    private BigDecimal marketBuyMin;

    /** 市价卖最小数量 */
    private BigDecimal marketSellMin;

    /** 深度精度第 0 档（最少小数位） */
    private Long depth0Pre;

    /** 深度精度第 1 档（中间值） */
    private Long depth1Pre;

    /** 深度精度第 2 档（最多小数位） */
    private Long depth2Pre;

    /**
     * 交易对分类码，NULL 表示未分类
     * @see com.spot.enums.SymbolCategoryEnum
     * 取值：1-主流币，2-创新区，3-新币，4-观察区
     */
    private Integer category;

    /**
     * 交易对分类描述（根据请求 lang 头返回对应语言翻译，未分类时为 null）
     */
    private String categoryDesc;

    /**
     * 交易对标签码，NULL 表示无标签
     * @see com.spot.enums.SymbolTagEnum
     * 取值：1-减半，2-上新，3-热门，4-ETF
     */
    private Integer label;

    /**
     * 交易对标签描述（根据请求 lang 头返回对应语言翻译，无标签时为 null）
     */
    private String labelDesc;

    /** 排序权重 */
    private Integer sort;

    /** 描述 */
    private String description;

    /** 该交易对的滑点区间配置列表（按 sort 升序） */
    private List<ConfigSymbolSlippage> slippageList;
}
