package com.spot.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.spot.entity.ConfigSymbolSlippage;

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

/**
 * 交易对滑点配置服务接口
 *
 * @author jean
 * @date 2026-05-08
 */
public interface ConfigSymbolSlippageService extends IService<ConfigSymbolSlippage> {

    /**
     * 根据交易对和成交额查询匹配的滑点比例
     * 匹配规则：amount_min <= tradeAmount < amount_max（amount_max 为 null 表示无上限）
     * 无匹配区间时返回 BigDecimal.ZERO
     *
     * @param symbol      交易对符号（如：BTCUSDT）
     * @param tradeAmount 成交额（计价币）
     * @return 滑点比例，无配置时返回 ZERO
     */
    BigDecimal getSlippage(String symbol, BigDecimal tradeAmount);

    /**
     * 查询指定交易对的所有滑点区间配置（包含禁用项），供后台管理展示使用
     * 按 sort 升序返回
     *
     * @param symbol 交易对符号（如：BTCUSDT）
     * @return 滑点配置列表，无数据时返回空列表
     */
    List<ConfigSymbolSlippage> listBySymbol(String symbol);
}
