using System.Collections.Generic;
using System.Threading.Tasks;

namespace QuantEngine.Core.Interfaces
{
    /// <summary>
    /// KIS Open API 클라이언트 (read-only 전용).
    /// 매수/매도 주문은 절대 금지 (governance/rules/06_no_direct_api_trading.yaml).
    /// </summary>
    public interface IKisApiClient
    {
        /// <summary>
        /// 주식현재가 시세 조회.
        /// TR_ID: FHKST01010100
        /// </summary>
        Task<Dictionary<string, object>> GetCurrentPriceAsync(string code, string account = "mock");

        /// <summary>
        /// 주식현재가 호가/예상체결 (10단계).
        /// TR_ID: FHKST01010200
        /// </summary>
        Task<Dictionary<string, object>> GetAskingPrice10LevelAsync(string code, string account = "mock");

        /// <summary>
        /// 국내주식 공매도 일별추이.
        /// TR_ID: FHPST04830000
        /// </summary>
        Task<Dictionary<string, object>> GetDailyShortSaleAsync(string code, string startDate, string endDate, string account = "mock");

        /// <summary>
        /// 주식현재가 일자별 차트.
        /// TR_ID: FHKST03010100
        /// </summary>
        Task<Dictionary<string, object>> GetDailyItemChartPriceAsync(string code, string startDate, string endDate, string period = "D", string account = "mock");

        /// <summary>
        /// 주식현재가 투자자 매매동향 (개인/외국인/기관).
        /// TR_ID: FHKST01010900
        /// </summary>
        Task<Dictionary<string, object>> GetInvestorTrendAsync(string code, string account = "mock");
    }
}
