import { Client } from "../exchanges/rest";
import type { Kline, KlineInterval } from "../types";

const client = new Client("binance");

/**
 * 获取 Binance K 线数据（基于 MainClient REST API）。
 *
 * 内部复用 Client（多交易所 REST 客户端）的 binance 实现，
 * 包含限流、Binance SDK 原生转换、连续性过滤等逻辑。
 * 返回本系统标准化 {@link Kline} 数组。
 *
 * @param symbol    - 交易对符号（如 "BTCUSDT"）
 * @param interval  - K 线周期（如 "1h"、"4h"、"1d"）
 * @param startTime - 起始时间（Unix ms）
 * @param endTime   - 结束时间（Unix ms），可选；不传则拉取到最新
 * @param limit     - 单次拉取条数，默认 500（最大 1000）
 */
export async function fetchKlines(
    symbol: string,
    interval: KlineInterval,
    startTime: number,
    endTime?: number,
    limit = 500,
): Promise<Kline[]> {
    // Client.fetchKlines 参数顺序：symbol, interval, startTime, limit, endTime
    return client.fetchKlines(symbol, interval, startTime, limit, endTime);
}
