use super::client::OkxClient;

crate::exchanges::impl_exchange_method_wrappers! {
    OkxClient;
    public [
        get_candles_ticks(product_symbol => "product_symbol"),
        get_contract_long_short_ratio(product_symbol => "product_symbol"),
        get_contract_open_interest_history(product_symbol => "product_symbol"),
        get_contract_taker_volume(product_symbol => "product_symbol"),
        get_contracts_open_interest_and_volume(ccy => "ccy"),
        get_funding_rate(product_symbol => "product_symbol"),
        get_funding_rate_history(product_symbol => "product_symbol"),
        get_long_short_ratio(ccy => "ccy"),
        get_open_interest(),
        get_orderbook(product_symbol => "product_symbol"),
        get_position_tiers(),
        get_public_instruments(inst_type => "instType"),
        get_public_trades(product_symbol => "product_symbol"),
        get_taker_volume(ccy => "ccy"),
        get_tickers(inst_type => "instType"),
        get_top_trader_long_short_account_ratio(product_symbol => "product_symbol"),
        get_top_trader_long_short_position_ratio(product_symbol => "product_symbol"),
        get_trading_data_support_coin(),
    ];
    private [
        amend_multiple_orders(orders => "orders"),
        amend_order(product_symbol => "product_symbol"),
        cancel_all_orders(),
        cancel_batch_orders(orders => "orders"),
        cancel_order(product_symbol => "product_symbol"),
        close_positions(product_symbol => "product_symbol", mgn_mode => "mgnMode"),
        funds_transfer(ccy => "ccy", amt => "amt", from_account => "from_account", to_account => "to_account"),
        get_account_balance(),
        get_account_bills(),
        get_account_bills_archive(),
        get_account_bills_history_archive(year => "year", quarter => "quarter"),
        get_account_config(),
        get_account_instruments(inst_type => "instType"),
        get_account_rate_limit(),
        get_adjust_leverage(inst_type => "instType", mgn_mode => "mgnMode", lever => "lever"),
        get_asset_valuation(),
        get_balances(),
        get_bills(),
        get_convert_currencies(),
        get_convert_history(),
        get_currencies(),
        get_deposit_address(ccy => "ccy"),
        get_deposit_history(),
        get_deposit_withdraw_status(),
        get_exchange_list(),
        get_fee_rates(inst_type => "instType"),
        get_fills(),
        get_fills_history(inst_type => "instType"),
        get_interest_accrued(),
        get_interest_limits(),
        get_interest_rate(),
        get_leverage(mgn_mode => "mgnMode"),
        get_max_avail_size(product_symbol => "product_symbol", td_mode => "tdMode"),
        get_max_loan(mgn_mode => "mgnMode"),
        get_max_order_size(product_symbol => "product_symbol", td_mode => "tdMode"),
        get_max_withdrawal(),
        get_monthly_statement(month => "month"),
        get_order(product_symbol => "product_symbol"),
        get_order_list(),
        get_orders_history(inst_type => "instType"),
        get_orders_history_archive(inst_type => "instType"),
        get_position_risk(),
        get_positions(),
        get_positions_history(),
        get_transfer_state(),
        place_batch_orders(orders => "orders"),
        place_limit_buy_order(product_symbol => "product_symbol", td_mode => "tdMode", sz => "sz", px => "px"),
        place_limit_order(product_symbol => "product_symbol", td_mode => "tdMode", side => "side", sz => "sz", px => "px"),
        place_limit_sell_order(product_symbol => "product_symbol", td_mode => "tdMode", sz => "sz", px => "px"),
        place_market_buy_order(product_symbol => "product_symbol", td_mode => "tdMode", sz => "sz"),
        place_market_order(product_symbol => "product_symbol", td_mode => "tdMode", side => "side", sz => "sz"),
        place_market_sell_order(product_symbol => "product_symbol", td_mode => "tdMode", sz => "sz"),
        place_order(product_symbol => "product_symbol", td_mode => "tdMode", side => "side", ord_type => "ordType", sz => "sz"),
        place_post_only_limit_buy_order(product_symbol => "product_symbol", td_mode => "tdMode", sz => "sz", px => "px"),
        place_post_only_limit_order(product_symbol => "product_symbol", td_mode => "tdMode", side => "side", sz => "sz", px => "px"),
        place_post_only_limit_sell_order(product_symbol => "product_symbol", td_mode => "tdMode", sz => "sz", px => "px"),
        post_account_bills_history_archive(year => "year", quarter => "quarter"),
        post_monthly_statement(),
        set_greeks(greeks_type => "greeksType"),
        set_leverage(lever => "lever", mgn_mode => "mgnMode"),
        set_position_mode(pos_mode => "posMode"),
    ];
}
