#pragma once
#include <cstddef>
#include "xlt_trade_list.h"
#include "xlt_privilege_struct.h"

namespace x1 {
    /**
     * @brief 只读资金划转执行结果信息列表
     */
    class XLTFundTransferExecResultList {
    public:
        virtual size_t data_count() const = 0;
        virtual const xlt_fund_transfer_exec_result_t* get(int i) const = 0;
    protected:
        virtual ~XLTFundTransferExecResultList() = default;
    };

    /**
     * @brief 只读资金划转请求信息列表
     */
    class XLTFundTransferRequestList {
    public:
        virtual size_t data_count() const = 0;
        virtual const xlt_counter_fund_transfer_request_t* get(int i) const = 0;
    protected:
        virtual ~XLTFundTransferRequestList() = default;
    };

    /**
     * @brief 只读资金划转结果信息列表
     */
    class XLTFundTransferResultList {
    public:
        virtual size_t data_count() const = 0;
        virtual const xlt_counter_fund_transfer_result_t* get(int i) const = 0;
    protected:
        virtual ~XLTFundTransferResultList() = default;
    };

    /**
     * @brief 只读双中心资金划转请求信息列表
     */
    class XLTClusterFundTransferRequestList {
    public:
        virtual size_t data_count() const = 0;
        virtual const xlt_cluster_fund_transfer_request_t* get(int i) const = 0;
    protected:
        virtual ~XLTClusterFundTransferRequestList() = default;
    };

    /**
     * @brief 只读双中心资金划转结果信息列表
     */
    class XLTClusterFundTransferResultList {
    public:
        virtual size_t data_count() const = 0;
        virtual const xlt_cluster_fund_transfer_result_t* get(int i) const = 0;
    protected:
        virtual ~XLTClusterFundTransferResultList() = default;
    };

    /**
     * @brief 只读账号索引列表
     */
    class XLTAccountIndexList {
    public:
        virtual size_t data_count() const = 0;
        virtual const uint64_t* get(int i) const = 0;
    protected:
        virtual ~XLTAccountIndexList() = default;
    };

    /**
     * @brief 只读简要资金信息列表
     */
    class XLTBriefAssetList {
    public:
        virtual size_t data_count() const = 0;
        virtual const xlt_brief_asset_t* get(int i) const = 0;
    protected:
        virtual ~XLTBriefAssetList() = default;
    };

    /**
     * @brief 只读简要持仓信息列表
     */
    class XLTBriefPositionList {
    public:
        virtual size_t data_count() const = 0;
        virtual const xlt_brief_position_t* get(int i) const = 0;
    protected:
        virtual ~XLTBriefPositionList() = default;
    };

}
