use super::client::BitmartClient;

crate::exchanges::impl_exchange_method_wrappers! {
    BitmartClient;
    public [];
    private [
        cancel_all_contract_order(product_symbol => "product_symbol"),
        cancel_contract_order(product_symbol => "product_symbol"),
        cancel_spot_all_order(),
        cancel_spot_order(product_symbol => "product_symbol"),
        get_account_balance(),
        get_account_currencies(),
        get_contract_assets(),
        get_contract_open_order(),
        get_contract_order_detail(product_symbol => "product_symbol", order_id => "order_id"),
        get_contract_order_history(product_symbol => "product_symbol"),
        get_contract_position(),
        get_contract_trade(product_symbol => "product_symbol"),
        get_contract_transaction_history(),
        get_contract_transfer_list(page => "page", limit => "limit"),
        get_deposit_address(currency => "currency"),
        get_spot_account_orders(),
        get_spot_account_trade_list(),
        get_spot_open_orders(),
        get_spot_order_by_order_client_id(client_order_id => "clientOrderId"),
        get_spot_order_by_order_id(order_id => "orderId"),
        get_spot_order_trade_list(order_id => "orderId"),
        get_spot_wallet(),
        modify_limit_order(product_symbol => "product_symbol"),
        place_contract_limit_order(product_symbol => "product_symbol", side => "side", price => "price", size => "size"),
        place_contract_market_buy_order(product_symbol => "product_symbol", size => "size"),
        place_contract_market_order(product_symbol => "product_symbol", side => "side", size => "size"),
        place_contract_market_sell_order(product_symbol => "product_symbol", size => "size"),
        place_contract_order(product_symbol => "product_symbol", side => "side", size => "size"),
        place_contract_post_only_buy_order(product_symbol => "product_symbol", price => "price", size => "size"),
        place_contract_post_only_order(product_symbol => "product_symbol", side => "side", price => "price", size => "size"),
        place_contract_post_only_sell_order(product_symbol => "product_symbol", price => "price", size => "size"),
        place_post_only_limit_sell_order(product_symbol => "product_symbol", size => "size", price => "price"),
        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", notional => "notional"),
        place_spot_market_order(product_symbol => "product_symbol", side => "side"),
        place_spot_market_sell_order(product_symbol => "product_symbol", size => "size"),
        place_spot_order(product_symbol => "product_symbol", side => "side", type_ => "type"),
        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"),
        submit_leverage(product_symbol => "product_symbol"),
        transfer_contract(amount => "amount", type_ => "type"),
    ];
}
