use super::client::BitgetClient;

crate::exchanges::impl_exchange_method_wrappers! {
    BitgetClient;
    public [
        get_futures_contracts(),
        get_futures_current_funding_rate(),
        get_futures_history_funding_rate(product_symbol => "product_symbol"),
        get_futures_history_kline(product_symbol => "product_symbol", granularity => "granularity"),
        get_futures_kline(product_symbol => "product_symbol", granularity => "granularity"),
        get_futures_open_interest(product_symbol => "product_symbol"),
        get_futures_orderbook(product_symbol => "product_symbol"),
        get_futures_recent_trades(product_symbol => "product_symbol"),
        get_futures_ticker(product_symbol => "product_symbol"),
        get_futures_tickers(),
        get_spot_coins(),
        get_spot_history_kline(product_symbol => "product_symbol", granularity => "granularity"),
        get_spot_kline(product_symbol => "product_symbol", granularity => "granularity"),
        get_spot_market_trades(product_symbol => "product_symbol"),
        get_spot_orderbook(product_symbol => "product_symbol"),
        get_spot_recent_trades(product_symbol => "product_symbol"),
        get_spot_symbols(),
        get_spot_tickers(),
    ];
    private [
        cancel_futures_batch_orders(product_symbol => "product_symbol"),
        cancel_futures_order(product_symbol => "product_symbol"),
        cancel_spot_batch_orders(order_list => "orderList"),
        cancel_spot_order(product_symbol => "product_symbol"),
        cancel_uta_batch_orders(order_list => "orderList"),
        cancel_uta_order(),
        get_all_account_balance(),
        get_deposit_records(),
        get_funding_assets(),
        get_futures_account(product_symbol => "product_symbol"),
        get_futures_account_bills(),
        get_futures_accounts(),
        get_futures_fills(),
        get_futures_history_orders(),
        get_futures_open_orders(),
        get_futures_order(product_symbol => "product_symbol"),
        get_futures_position(product_symbol => "product_symbol"),
        get_futures_positions(),
        get_spot_account_assets(),
        get_spot_account_bills(),
        get_spot_account_info(),
        get_spot_fills(),
        get_spot_history_orders(),
        get_spot_open_orders(),
        get_spot_order(),
        get_transfer_records(coin => "coin"),
        get_transferable_coins(from_type => "fromType", to_type => "toType"),
        get_uta_account_assets(),
        get_uta_account_info(),
        get_uta_fills(),
        get_uta_history_orders(category => "category"),
        get_uta_open_orders(),
        get_uta_order(),
        get_uta_positions(category => "category"),
        place_futures_batch_orders(order_list => "orderList"),
        place_futures_limit_buy_order(product_symbol => "product_symbol", size => "size", price => "price"),
        place_futures_limit_order(product_symbol => "product_symbol", side => "side", size => "size", price => "price"),
        place_futures_limit_sell_order(product_symbol => "product_symbol", size => "size", price => "price"),
        place_futures_market_buy_order(product_symbol => "product_symbol", size => "size"),
        place_futures_market_order(product_symbol => "product_symbol", side => "side", size => "size"),
        place_futures_market_sell_order(product_symbol => "product_symbol", size => "size"),
        place_futures_order(product_symbol => "product_symbol", side => "side", order_type => "orderType", size => "size"),
        place_futures_post_only_limit_buy_order(product_symbol => "product_symbol", size => "size", price => "price"),
        place_futures_post_only_limit_order(product_symbol => "product_symbol", side => "side", size => "size", price => "price"),
        place_futures_post_only_limit_sell_order(product_symbol => "product_symbol", size => "size", price => "price"),
        place_spot_batch_orders(order_list => "orderList"),
        place_spot_limit_buy_order(product_symbol => "product_symbol", size => "size", price => "price"),
        place_spot_limit_order(product_symbol => "product_symbol", side => "side", size => "size", price => "price"),
        place_spot_limit_sell_order(product_symbol => "product_symbol", size => "size", price => "price"),
        place_spot_market_buy_order(product_symbol => "product_symbol", size => "size"),
        place_spot_market_order(product_symbol => "product_symbol", side => "side", size => "size"),
        place_spot_market_sell_order(product_symbol => "product_symbol", size => "size"),
        place_spot_order(product_symbol => "product_symbol", side => "side", order_type => "orderType", size => "size"),
        place_spot_post_only_limit_buy_order(product_symbol => "product_symbol", size => "size", price => "price"),
        place_spot_post_only_limit_order(product_symbol => "product_symbol", side => "side", size => "size", price => "price"),
        place_spot_post_only_limit_sell_order(product_symbol => "product_symbol", size => "size", price => "price"),
        place_uta_batch_orders(order_list => "orderList"),
        place_uta_order(category => "category", product_symbol => "product_symbol", side => "side", order_type => "orderType", qty => "qty"),
        set_futures_leverage(product_symbol => "product_symbol", leverage => "leverage"),
        set_futures_margin_mode(product_symbol => "product_symbol", margin_mode => "marginMode"),
        set_futures_position_mode(pos_mode => "posMode"),
        set_uta_hold_mode(hold_mode => "holdMode"),
        set_uta_leverage(category => "category", leverage => "leverage"),
        transfer(coin => "coin", amount => "amount", from_type => "fromType", to_type => "toType"),
    ];
}
