from ccxt.base.types import Entry


class ImplicitAPI:
    public_get_info = publicGetInfo = Entry('info', 'public', 'GET', {'cost': 1})
    public_get_info_prices = publicGetInfoPrices = Entry('info/prices', 'public', 'GET', {'cost': 1})
    public_get_kline = publicGetKline = Entry('kline', 'public', 'GET', {'cost': 12})
    public_get_kline_mark = publicGetKlineMark = Entry('kline/mark', 'public', 'GET', {'cost': 12})
    public_get_book = publicGetBook = Entry('book', 'public', 'GET', {'cost': 1})
    public_get_trades = publicGetTrades = Entry('trades', 'public', 'GET', {'cost': 1})
    public_get_funding_rate_history = publicGetFundingRateHistory = Entry('funding_rate/history', 'public', 'GET', {'cost': 1})
    public_get_account = publicGetAccount = Entry('account', 'public', 'GET', {'cost': 1})
    public_get_account_settings = publicGetAccountSettings = Entry('account/settings', 'public', 'GET', {'cost': 1})
    public_get_positions = publicGetPositions = Entry('positions', 'public', 'GET', {'cost': 1})
    public_get_trades_history = publicGetTradesHistory = Entry('trades/history', 'public', 'GET', {'cost': 12})
    public_get_funding_history = publicGetFundingHistory = Entry('funding/history', 'public', 'GET', {'cost': 1})
    public_get_portfolio = publicGetPortfolio = Entry('portfolio', 'public', 'GET', {'cost': 1})
    public_get_account_balance_history = publicGetAccountBalanceHistory = Entry('account/balance/history', 'public', 'GET', {'cost': 12})
    public_get_orders = publicGetOrders = Entry('orders', 'public', 'GET', {'cost': 1})
    public_get_orders_history = publicGetOrdersHistory = Entry('orders/history', 'public', 'GET', {'cost': 12})
    public_get_orders_history_by_id = publicGetOrdersHistoryById = Entry('orders/history_by_id', 'public', 'GET', {'cost': 1})
    public_get_account_builder_codes_approvals = publicGetAccountBuilderCodesApprovals = Entry('account/builder_codes/approvals', 'public', 'GET', {'cost': 1})
    private_post_account_leverage = privatePostAccountLeverage = Entry('account/leverage', 'private', 'POST', {'cost': 1})
    private_post_account_margin = privatePostAccountMargin = Entry('account/margin', 'private', 'POST', {'cost': 1})
    private_post_account_withdraw = privatePostAccountWithdraw = Entry('account/withdraw', 'private', 'POST', {'cost': 1})
    private_post_account_subaccount_create = privatePostAccountSubaccountCreate = Entry('account/subaccount/create', 'private', 'POST', {'cost': 1})
    private_post_account_subaccount_list = privatePostAccountSubaccountList = Entry('account/subaccount/list', 'private', 'POST', {'cost': 1})
    private_post_account_subaccount_transfer = privatePostAccountSubaccountTransfer = Entry('account/subaccount/transfer', 'private', 'POST', {'cost': 1})
    private_post_orders_create = privatePostOrdersCreate = Entry('orders/create', 'private', 'POST', {'cost': 1})
    private_post_orders_create_market = privatePostOrdersCreateMarket = Entry('orders/create_market', 'private', 'POST', {'cost': 1})
    private_post_orders_stop_create = privatePostOrdersStopCreate = Entry('orders/stop/create', 'private', 'POST', {'cost': 1})
    private_post_positions_tpsl = privatePostPositionsTpsl = Entry('positions/tpsl', 'private', 'POST', {'cost': 1})
    private_post_orders_cancel = privatePostOrdersCancel = Entry('orders/cancel', 'private', 'POST', {'cost': 0.5})
    private_post_orders_cancel_all = privatePostOrdersCancelAll = Entry('orders/cancel_all', 'private', 'POST', {'cost': 0.5})
    private_post_orders_stop_cancel = privatePostOrdersStopCancel = Entry('orders/stop/cancel', 'private', 'POST', {'cost': 0.5})
    private_post_orders_edit = privatePostOrdersEdit = Entry('orders/edit', 'private', 'POST', {'cost': 1})
    private_post_orders_batch = privatePostOrdersBatch = Entry('orders/batch', 'private', 'POST', {'cost': 1})
    private_post_account_builder_codes_approve = privatePostAccountBuilderCodesApprove = Entry('account/builder_codes/approve', 'private', 'POST', {'cost': 1})
    private_post_account_builder_codes_revoke = privatePostAccountBuilderCodesRevoke = Entry('account/builder_codes/revoke', 'private', 'POST', {'cost': 1})
    private_post_agent_bind = privatePostAgentBind = Entry('agent/bind', 'private', 'POST', {'cost': 1})
    private_post_account_api_keys_create = privatePostAccountApiKeysCreate = Entry('account/api_keys/create', 'private', 'POST', {'cost': 1})
    private_post_account_api_keys_revoke = privatePostAccountApiKeysRevoke = Entry('account/api_keys/revoke', 'private', 'POST', {'cost': 1})
    private_post_account_api_keys = privatePostAccountApiKeys = Entry('account/api_keys', 'private', 'POST', {'cost': 1})
