use super::AsterClient;

crate::exchanges::impl_exchange_method_wrappers! {
    AsterClient;
    public [];
    private [
        get_spot_account(),
        get_spot_transaction_history(),
        transfer_spot_futures(amount => "amount", asset => "asset", client_tran_id => "clientTranId", kind_type => "kindType"),
        get_futures_position_mode(),
        set_futures_position_mode(dual_side_position => "dualSidePosition"),
        get_futures_stp_mode(),
        set_futures_stp_mode(stp_mode => "stpMode"),
        get_futures_multi_assets_mode(),
        set_futures_multi_assets_mode(multi_assets_margin => "multiAssetsMargin"),
        get_futures_balance(),
        get_futures_account(),
        modify_futures_position_margin(product_symbol => "product_symbol", amount => "amount", type_ => "type"),
        get_futures_position_margin_history(product_symbol => "product_symbol"),
        get_futures_position_risk(),
        get_futures_user_trades(product_symbol => "product_symbol"),
        get_futures_income(),
        get_futures_leverage_bracket(),
        get_futures_adl_quantile(),
        get_futures_force_orders(),
        get_spot_commission_rate(product_symbol => "product_symbol"),
        get_futures_commission_rate(product_symbol => "product_symbol"),
        update_futures_mmp(product_symbol => "product_symbol", window_time_in_milliseconds => "windowTimeInMilliseconds", frozen_time_in_milliseconds => "frozenTimeInMilliseconds"),
        get_futures_mmp(product_symbol => "product_symbol"),
        delete_futures_mmp(product_symbol => "product_symbol"),
        reset_futures_mmp(product_symbol => "product_symbol"),
        create_spot_listen_key(),
        keep_alive_spot_listen_key(listen_key => "listenKey"),
        close_spot_listen_key(listen_key => "listenKey"),
        create_futures_listen_key(),
        keep_alive_futures_listen_key(),
        close_futures_listen_key(),
        place_spot_order(product_symbol => "product_symbol", side => "side", type_ => "type"),
        cancel_spot_order(product_symbol => "product_symbol"),
        get_spot_order(product_symbol => "product_symbol"),
        get_spot_open_order(product_symbol => "product_symbol"),
        get_spot_open_orders(),
        cancel_all_spot_open_orders(product_symbol => "product_symbol"),
        get_spot_all_orders(product_symbol => "product_symbol"),
        get_spot_user_trades(),
        place_futures_order(product_symbol => "product_symbol", side => "side", type_ => "type"),
        modify_futures_order(product_symbol => "product_symbol", quantity => "quantity", price => "price"),
        place_futures_chase_order(product_symbol => "product_symbol", side => "side", quantity_unit => "quantityUnit", quantity => "quantity", chase_offset => "chaseOffset", chase_offset_type => "chaseOffsetType"),
        place_futures_batch_orders(batch_orders => "batchOrders"),
        get_futures_order(product_symbol => "product_symbol"),
        cancel_futures_order(product_symbol => "product_symbol"),
        cancel_all_futures_open_orders(product_symbol => "product_symbol"),
        cancel_futures_batch_orders(product_symbol => "product_symbol"),
        set_futures_countdown_cancel_all(product_symbol => "product_symbol", countdown_time => "countdownTime"),
        get_futures_open_order(product_symbol => "product_symbol"),
        get_futures_open_orders(),
        get_futures_all_orders(product_symbol => "product_symbol"),
        set_futures_leverage(product_symbol => "product_symbol", leverage => "leverage"),
        set_futures_margin_type(product_symbol => "product_symbol", margin_type => "marginType"),
        place_futures_strategy_order(client_strategy_id => "clientStrategyId", strategy_type => "strategyType", sub_order_list => "subOrderList"),
        update_futures_strategy_order(strategy_id => "strategyId", strategy_type => "strategyType", sub_order_list => "subOrderList"),
        get_futures_strategy_open_order(strategy_type => "strategyType"),
        get_futures_strategy_history_order(strategy_type => "strategyType")
    ];
}
