use super::client::BybitClient;

crate::exchanges::impl_exchange_method_wrappers! {
    BybitClient;
    public [
        get_adl_alert(),
        get_delivery_price(),
        get_funding_rate_history(product_symbol => "product_symbol"),
        get_historical_volatility(),
        get_instruments_info(),
        get_insurance_pool(),
        get_kline(product_symbol => "product_symbol", interval => "interval"),
        get_long_short_ratio(product_symbol => "product_symbol"),
        get_open_interest(product_symbol => "product_symbol"),
        get_order_price_limit(product_symbol => "product_symbol"),
        get_orderbook(product_symbol => "product_symbol"),
        get_public_trade_history(product_symbol => "product_symbol"),
        get_risk_limit(),
        get_tickers(),
    ];
    private [
        amend_batch_order(request => "request"),
        amend_order(product_symbol => "product_symbol"),
        cancel_all_orders(),
        cancel_batch_orders(request => "request"),
        cancel_order(product_symbol => "product_symbol"),
        create_internal_transfer(coin => "coin", amount => "amount", from_account_type => "fromAccountType", to_account_type => "toAccountType"),
        get_account_info(),
        get_borrow_history(),
        get_borrow_quota(product_symbol => "product_symbol", side => "side"),
        get_closed_pnl(),
        get_coin_balance(account_type => "accountType", coin => "coin"),
        get_coin_info(),
        get_coins_balance(account_type => "accountType"),
        get_collateral(),
        get_collateral_info(),
        get_deposit_records(),
        get_execution_list(),
        get_fee_rates(),
        get_historical_interest_rate(currency => "currency"),
        get_internal_deposit_records(),
        get_internal_transfer_records(),
        get_master_deposit_address(coin => "coin"),
        get_open_orders(),
        get_order_history(),
        get_positions(),
        get_spot_asset_info(),
        get_status_and_leverage(),
        get_sub_deposit_records(sub_member_id => "subMemberId"),
        get_sub_uid(),
        get_transaction_log(),
        get_transferable_amount(coins => "coins"),
        get_transferable_coin(from_account_type => "fromAccountType", to_account_type => "toAccountType"),
        get_universal_transfer_records(),
        get_vip_margin_data(),
        get_wallet_balance(),
        get_withdrawable_amount(coin => "coin"),
        place_batch_order(request => "request"),
        place_limit_buy_order(product_symbol => "product_symbol", qty => "qty", price => "price"),
        place_limit_order(product_symbol => "product_symbol", side => "side", qty => "qty", price => "price"),
        place_limit_sell_order(product_symbol => "product_symbol", qty => "qty", price => "price"),
        place_market_buy_order(product_symbol => "product_symbol", qty => "qty"),
        place_market_order(product_symbol => "product_symbol", side => "side", qty => "qty"),
        place_market_sell_order(product_symbol => "product_symbol", qty => "qty"),
        place_order(product_symbol => "product_symbol", side => "side", order_type => "orderType", qty => "qty"),
        place_post_only_limit_buy_order(product_symbol => "product_symbol", qty => "qty", price => "price"),
        place_post_only_limit_order(product_symbol => "product_symbol", side => "side", qty => "qty", price => "price"),
        place_post_only_limit_sell_order(product_symbol => "product_symbol", qty => "qty", price => "price"),
        set_deposit_account(account_type => "accountType"),
        set_leverage(product_symbol => "product_symbol", leverage => "leverage"),
        set_margin_mode(margin_mode => "margin_mode"),
        switch_position_mode(mode => "mode"),
        upgrade_to_unified_trading_account(),
    ];
}
