Skip to content

_abstract

Abstract Client

This module contains the abstract client class that is used by the main client class.

AbstractClient

Bases: ABC

Abstract client class that contains the abstract methods that the main client class should implement.

Methods:

Name Description
_init_session

Initialize the session.

_request

Make a request.

_request_api

Make a request to the API.

_get

Make a GET request to the API.

_post

Make a POST request to the API.

_handle_response

Handle the response.

get_withdraw_networks

Get the withdrawal networks.

submit_withdraw

Submit a withdrawal.

get_deposit_networks

Get the deposit networks.

get_assets_information

Get the assets' information.

get_assets_history

Get the assets' history.

create_order

Create an order.

cancel_order

Cancel an order.

get_orders_history

Get the orders' history.

get_markets_information

Get the markets' information.

get_order_book

Get the order book.

Source code in src/bit24/clients/_abstract.py
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
class AbstractClient(ABC):
    """
    Abstract client class that contains the abstract methods that the main client class should implement.

    Methods:
        _init_session: Initialize the session.
        _request: Make a request.
        _request_api: Make a request to the API.
        _get: Make a GET request to the API.
        _post: Make a POST request to the API.
        _handle_response: Handle the response.
        get_withdraw_networks: Get the withdrawal networks.
        submit_withdraw: Submit a withdrawal.
        get_deposit_networks: Get the deposit networks.
        get_assets_information: Get the assets' information.
        get_assets_history: Get the assets' history.
        create_order: Create an order.
        cancel_order: Cancel an order.
        get_orders_history: Get the orders' history.
        get_markets_information: Get the markets' information.
        get_order_book: Get the order book.
    """

    @abstractmethod
    def _init_session(self) -> t.HttpSession:
        """
        (Abstract, Private)

        Initialize the session.

        Returns:
            requests.Session: The session.
        """
        raise NotImplementedError

    @abstractmethod
    def _request(
        self, method: enums.HTTPMethod, uri: str, signed: bool = False, **kwargs: Any
    ) -> rt.BaseResponse:
        """
        (Abstract, Private)

        Make a request.

        Args:
            method (HTTPMethod): The HTTP method.
            uri (str): The URI.
            signed (bool): If the request is signed.
            **kwargs (Any): The keyword arguments.

        Returns:
            rt.BaseResponse: The response.
        """
        raise NotImplementedError

    @abstractmethod
    def _request_api(
        self,
        method: enums.HTTPMethod,
        path: str,
        signed: bool = False,
        version: str = CoreClient.API_VERSION,
        **kwargs: Any,
    ) -> rt.BaseResponse:
        """
        (Abstract, Private)

        Make a request to the API.

        Args:
            method (HTTPMethod): The HTTP method.
            path (str): The path.
            signed (bool): If the request is signed.
            version (str): The API version.
            **kwargs (Any): The keyword arguments.

        Returns:
            rt.BaseResponse: The response.
        """
        raise NotImplementedError

    @abstractmethod
    def _get(
        self,
        path: str,
        signed: bool = False,
        version: str = CoreClient.API_VERSION,
        **kwargs: Any,
    ) -> rt.BaseResponse:
        """
        (Abstract, Private)

        Make a GET request to the API.

        Args:
            path (str): The path.
            signed (bool): If the request is signed.
            version (str): The API version.
            **kwargs (Any): The keyword arguments.

        Returns:
            rt.BaseResponse: The response.
        """
        raise NotImplementedError

    @abstractmethod
    def _post(
        self,
        path: str,
        signed: bool = False,
        version: str = CoreClient.API_VERSION,
        **kwargs: Any,
    ) -> rt.BaseResponse:
        """
        (Abstract, Private)

        Make a POST request to the API.

        Args:
            path (str): The path.
            signed (bool): If the request is signed.
            version (str): The API version.
            **kwargs (Any): The keyword arguments.

        Returns:
            rt.BaseResponse: The response.
        """
        raise NotImplementedError

    @staticmethod
    @abstractmethod
    def _handle_response(response: t.HttpResponse) -> rt.BaseResponse:
        """
        (Abstract, Private)

        Handle the response.

        Args:
            response (HttpResponse): The response.

        Returns:
            rt.BaseResponse: The response.
        """
        raise NotImplementedError

    @abstractmethod
    def get_withdraw_networks(
        self, symbol: str, **kwargs: Any
    ) -> rt.BaseResponse[rt.WithdrawalNetworksResponse]:
        """
        (Abstract)

        Get the withdrawal networks.

        Args:
            symbol (str): The symbol.
            kwargs (Any): The keyword arguments.

        Returns:
            rt.BaseResponse: The response.
        """
        raise NotImplementedError

    @abstractmethod
    def submit_withdraw(  # noqa: PLR0913
        self,
        symbol: str,
        network_id: int,
        address: str,
        value: str,
        memo: str | None = None,
        **kwargs: Any,
    ) -> rt.BaseResponse[rt.SubmitWithdrawResponse]:
        """
        (Abstract)

        Submit a withdrawal.

        Args:
            symbol (str): The symbol
            network_id (int): The network ID.
            address (str): The address.
            value (str): The value.
            memo (str | None): The memo.
            kwargs (Any): The keyword arguments.

        Returns:
            rt.BaseResponse: The response.
        """
        raise NotImplementedError

    @abstractmethod
    def get_deposit_networks(
        self, symbol: str, **kwargs: Any
    ) -> rt.BaseResponse[rt.DepositNetworksResponse]:
        """
        (Abstract)

        Get the deposit networks.

        Args:
            symbol (str): The symbol.
            kwargs (Any): The keyword arguments.

        Returns:
            rt.BaseResponse: The response.
        """
        raise NotImplementedError

    @abstractmethod
    def get_assets_information(
        self,
        name: str | None = None,
        alphabet: str | None = None,
        without_irt: str | None = None,
        without_zero: str | None = None,
        **kwargs: Any,
    ) -> rt.BaseResponse[rt.AssetInformationResponse]:
        """
        (Abstract)

        Get the assets' information.

        Args:
            name (str | None): The name.
            alphabet (str | None): The starting alphabet.
            without_irt (str | enums.WithoutIrt | None): If the IRT should be excluded.
            without_zero (str | enums.WithoutZero | None): If the zero balances should be excluded.
            kwargs: The keyword arguments.

        Returns:
            rt.BaseResponse: The response.

        Notes:
            Use `without_irt` and `without_zero` respective enums for better readability.
        """
        raise NotImplementedError

    @abstractmethod
    def get_assets_history(
        self,
        type: str | enums.TransactionType | None = None,  # noqa: A002
        symbol: str | None = None,
        coin_type: str | enums.CoinType | None = None,
        reason_type: str | enums.ReasonType | None = None,
        **kwargs: Any,
    ) -> rt.BaseResponse[rt.AssetsHistoryResponse]:
        """
        (Abstract)

        Get the assets' history.

        Args:
            type (str | enums.TransactionType | None): The transaction type.
            symbol (str | None): The symbol.
            coin_type (str | enums.CoinType | None): The coin type.
            reason_type (str | enums.ReasonType | None): The reason type.
            kwargs (Any): The keyword arguments.

        Returns:
            rt.BaseResponse: The response.

        Notes:
            Use `type`, `coin_type`, and `reason_type` respective enums for better readability.
        """
        raise NotImplementedError

    @abstractmethod
    def create_order(  # noqa: PLR0913, PLR0917
        self,
        base_coin_symbol: str,
        quote_coin_symbol: str,
        category_type: str | enums.OrderCategoryType,
        type: str | enums.OrderType,  # noqa: A002
        amount: float | None = None,
        price: float | None = None,
        quote_coin_amount: float | None = None,
        stop_price: float | None = None,
        trigger_price: float | None = None,
        **kwargs: Any,
    ) -> rt.BaseResponse[rt.CreateOrderResponse]:
        """
        (Abstract)

        Create an order.

        Args:
            base_coin_symbol (str): The base coin symbol.
            quote_coin_symbol (str): The quote coin symbol.
            category_type (str | enums.OrderCategoryType): The order category type.
            type (str | enums.OrderType): The order type.
            amount (float | None): The amount.
            price (float | None): The price.
            quote_coin_amount (float | None): The quote coin amount.
            stop_price (float | None): The stop price.
            trigger_price (float | None): The trigger price.
            kwargs (Any): The keyword arguments.

        Returns:
            rt.BaseResponse: The response.

        Notes:
            Use `category_type` and `type` respective enums for better readability.
        """
        raise NotImplementedError

    @abstractmethod
    def cancel_order(
        self, order_id: int, **kwargs: Any
    ) -> rt.BaseResponse[rt.CancelOrderResponse]:
        """
        (Abstract)

        Cancel an order.

        Args:
            order_id (int): The order ID.
            kwargs (Any): The keyword arguments.

        Returns:
            rt.BaseResponse: The response.
        """
        raise NotImplementedError

    @abstractmethod
    def get_orders_history(  # noqa: PLR0913, PLR0917
        self,
        is_trade: str | enums.IsTrade,
        market_id: int | None = None,
        type: str | enums.OrderType | None = None,  # noqa: A002
        category_type: str | enums.OrderCategoryType | None = None,
        from_date: str | None = None,
        to_date: str | None = None,
        **kwargs: Any,
    ) -> rt.BaseResponse[rt.OrdersHistoryResponse]:
        """
        (Abstract)

        Get the orders' history.

        Args:
            is_trade (str | enums.IsTrade): If the order is a trade.
            market_id (int | None): The market ID.
            type (str | enums.OrderType | None): The order type.
            category_type (str | enums.OrderCategoryType | None): The order category type.
            from_date (str | None): The start date.
            to_date (str | None): The end date.
            kwargs (Any): The keyword arguments.

        Returns:
            rt.BaseResponse: The response.

        Notes:
            Use `is_trade`, `type`, and `category_type` respective enums for better readability.
        """
        raise NotImplementedError

    @abstractmethod
    def get_markets_information(
        self, page: int | None = None, **kwargs: Any
    ) -> rt.BaseResponse[rt.MarketListResponse]:
        """
        (Abstract)

        Get the markets' information.

        Args:
            page (int | None): The page.
            kwargs (Any): The keyword arguments.

        Returns:
            rt.BaseResponse: The response.
        """
        raise NotImplementedError

    @abstractmethod
    def get_order_book(
        self, base_coin: str, quote_coin: str, **kwargs: Any
    ) -> rt.BaseResponse[dict[str, rt.OrderBookResponse]]:
        """
        (Abstract)

        Get the order book.

        Args:
            base_coin (str): The base coin.
            quote_coin (str): The quote coin.
            kwargs (Any): The keyword arguments.

        Returns:
            rt.BaseResponse: The response.
        """
        raise NotImplementedError

    @abstractmethod
    def close_connection(self) -> None:
        """
        (Abstract)

        Close the connection.
        """
        raise NotImplementedError

cancel_order(order_id, **kwargs) abstractmethod

(Abstract)

Cancel an order.

Parameters:

Name Type Description Default
order_id int

The order ID.

required
kwargs Any

The keyword arguments.

{}

Returns:

Type Description
BaseResponse[CancelOrderResponse]

rt.BaseResponse: The response.

Source code in src/bit24/clients/_abstract.py
@abstractmethod
def cancel_order(
    self, order_id: int, **kwargs: Any
) -> rt.BaseResponse[rt.CancelOrderResponse]:
    """
    (Abstract)

    Cancel an order.

    Args:
        order_id (int): The order ID.
        kwargs (Any): The keyword arguments.

    Returns:
        rt.BaseResponse: The response.
    """
    raise NotImplementedError

close_connection() abstractmethod

(Abstract)

Close the connection.

Source code in src/bit24/clients/_abstract.py
@abstractmethod
def close_connection(self) -> None:
    """
    (Abstract)

    Close the connection.
    """
    raise NotImplementedError

create_order(base_coin_symbol, quote_coin_symbol, category_type, type, amount=None, price=None, quote_coin_amount=None, stop_price=None, trigger_price=None, **kwargs) abstractmethod

(Abstract)

Create an order.

Parameters:

Name Type Description Default
base_coin_symbol str

The base coin symbol.

required
quote_coin_symbol str

The quote coin symbol.

required
category_type str | OrderCategoryType

The order category type.

required
type str | OrderType

The order type.

required
amount float | None

The amount.

None
price float | None

The price.

None
quote_coin_amount float | None

The quote coin amount.

None
stop_price float | None

The stop price.

None
trigger_price float | None

The trigger price.

None
kwargs Any

The keyword arguments.

{}

Returns:

Type Description
BaseResponse[CreateOrderResponse]

rt.BaseResponse: The response.

Notes

Use category_type and type respective enums for better readability.

Source code in src/bit24/clients/_abstract.py
@abstractmethod
def create_order(  # noqa: PLR0913, PLR0917
    self,
    base_coin_symbol: str,
    quote_coin_symbol: str,
    category_type: str | enums.OrderCategoryType,
    type: str | enums.OrderType,  # noqa: A002
    amount: float | None = None,
    price: float | None = None,
    quote_coin_amount: float | None = None,
    stop_price: float | None = None,
    trigger_price: float | None = None,
    **kwargs: Any,
) -> rt.BaseResponse[rt.CreateOrderResponse]:
    """
    (Abstract)

    Create an order.

    Args:
        base_coin_symbol (str): The base coin symbol.
        quote_coin_symbol (str): The quote coin symbol.
        category_type (str | enums.OrderCategoryType): The order category type.
        type (str | enums.OrderType): The order type.
        amount (float | None): The amount.
        price (float | None): The price.
        quote_coin_amount (float | None): The quote coin amount.
        stop_price (float | None): The stop price.
        trigger_price (float | None): The trigger price.
        kwargs (Any): The keyword arguments.

    Returns:
        rt.BaseResponse: The response.

    Notes:
        Use `category_type` and `type` respective enums for better readability.
    """
    raise NotImplementedError

get_assets_history(type=None, symbol=None, coin_type=None, reason_type=None, **kwargs) abstractmethod

(Abstract)

Get the assets' history.

Parameters:

Name Type Description Default
type str | TransactionType | None

The transaction type.

None
symbol str | None

The symbol.

None
coin_type str | CoinType | None

The coin type.

None
reason_type str | ReasonType | None

The reason type.

None
kwargs Any

The keyword arguments.

{}

Returns:

Type Description
BaseResponse[AssetsHistoryResponse]

rt.BaseResponse: The response.

Notes

Use type, coin_type, and reason_type respective enums for better readability.

Source code in src/bit24/clients/_abstract.py
@abstractmethod
def get_assets_history(
    self,
    type: str | enums.TransactionType | None = None,  # noqa: A002
    symbol: str | None = None,
    coin_type: str | enums.CoinType | None = None,
    reason_type: str | enums.ReasonType | None = None,
    **kwargs: Any,
) -> rt.BaseResponse[rt.AssetsHistoryResponse]:
    """
    (Abstract)

    Get the assets' history.

    Args:
        type (str | enums.TransactionType | None): The transaction type.
        symbol (str | None): The symbol.
        coin_type (str | enums.CoinType | None): The coin type.
        reason_type (str | enums.ReasonType | None): The reason type.
        kwargs (Any): The keyword arguments.

    Returns:
        rt.BaseResponse: The response.

    Notes:
        Use `type`, `coin_type`, and `reason_type` respective enums for better readability.
    """
    raise NotImplementedError

get_assets_information(name=None, alphabet=None, without_irt=None, without_zero=None, **kwargs) abstractmethod

(Abstract)

Get the assets' information.

Parameters:

Name Type Description Default
name str | None

The name.

None
alphabet str | None

The starting alphabet.

None
without_irt str | WithoutIrt | None

If the IRT should be excluded.

None
without_zero str | WithoutZero | None

If the zero balances should be excluded.

None
kwargs Any

The keyword arguments.

{}

Returns:

Type Description
BaseResponse[AssetInformationResponse]

rt.BaseResponse: The response.

Notes

Use without_irt and without_zero respective enums for better readability.

Source code in src/bit24/clients/_abstract.py
@abstractmethod
def get_assets_information(
    self,
    name: str | None = None,
    alphabet: str | None = None,
    without_irt: str | None = None,
    without_zero: str | None = None,
    **kwargs: Any,
) -> rt.BaseResponse[rt.AssetInformationResponse]:
    """
    (Abstract)

    Get the assets' information.

    Args:
        name (str | None): The name.
        alphabet (str | None): The starting alphabet.
        without_irt (str | enums.WithoutIrt | None): If the IRT should be excluded.
        without_zero (str | enums.WithoutZero | None): If the zero balances should be excluded.
        kwargs: The keyword arguments.

    Returns:
        rt.BaseResponse: The response.

    Notes:
        Use `without_irt` and `without_zero` respective enums for better readability.
    """
    raise NotImplementedError

get_deposit_networks(symbol, **kwargs) abstractmethod

(Abstract)

Get the deposit networks.

Parameters:

Name Type Description Default
symbol str

The symbol.

required
kwargs Any

The keyword arguments.

{}

Returns:

Type Description
BaseResponse[DepositNetworksResponse]

rt.BaseResponse: The response.

Source code in src/bit24/clients/_abstract.py
@abstractmethod
def get_deposit_networks(
    self, symbol: str, **kwargs: Any
) -> rt.BaseResponse[rt.DepositNetworksResponse]:
    """
    (Abstract)

    Get the deposit networks.

    Args:
        symbol (str): The symbol.
        kwargs (Any): The keyword arguments.

    Returns:
        rt.BaseResponse: The response.
    """
    raise NotImplementedError

get_markets_information(page=None, **kwargs) abstractmethod

(Abstract)

Get the markets' information.

Parameters:

Name Type Description Default
page int | None

The page.

None
kwargs Any

The keyword arguments.

{}

Returns:

Type Description
BaseResponse[MarketListResponse]

rt.BaseResponse: The response.

Source code in src/bit24/clients/_abstract.py
@abstractmethod
def get_markets_information(
    self, page: int | None = None, **kwargs: Any
) -> rt.BaseResponse[rt.MarketListResponse]:
    """
    (Abstract)

    Get the markets' information.

    Args:
        page (int | None): The page.
        kwargs (Any): The keyword arguments.

    Returns:
        rt.BaseResponse: The response.
    """
    raise NotImplementedError

get_order_book(base_coin, quote_coin, **kwargs) abstractmethod

(Abstract)

Get the order book.

Parameters:

Name Type Description Default
base_coin str

The base coin.

required
quote_coin str

The quote coin.

required
kwargs Any

The keyword arguments.

{}

Returns:

Type Description
BaseResponse[dict[str, OrderBookResponse]]

rt.BaseResponse: The response.

Source code in src/bit24/clients/_abstract.py
@abstractmethod
def get_order_book(
    self, base_coin: str, quote_coin: str, **kwargs: Any
) -> rt.BaseResponse[dict[str, rt.OrderBookResponse]]:
    """
    (Abstract)

    Get the order book.

    Args:
        base_coin (str): The base coin.
        quote_coin (str): The quote coin.
        kwargs (Any): The keyword arguments.

    Returns:
        rt.BaseResponse: The response.
    """
    raise NotImplementedError

get_orders_history(is_trade, market_id=None, type=None, category_type=None, from_date=None, to_date=None, **kwargs) abstractmethod

(Abstract)

Get the orders' history.

Parameters:

Name Type Description Default
is_trade str | IsTrade

If the order is a trade.

required
market_id int | None

The market ID.

None
type str | OrderType | None

The order type.

None
category_type str | OrderCategoryType | None

The order category type.

None
from_date str | None

The start date.

None
to_date str | None

The end date.

None
kwargs Any

The keyword arguments.

{}

Returns:

Type Description
BaseResponse[OrdersHistoryResponse]

rt.BaseResponse: The response.

Notes

Use is_trade, type, and category_type respective enums for better readability.

Source code in src/bit24/clients/_abstract.py
@abstractmethod
def get_orders_history(  # noqa: PLR0913, PLR0917
    self,
    is_trade: str | enums.IsTrade,
    market_id: int | None = None,
    type: str | enums.OrderType | None = None,  # noqa: A002
    category_type: str | enums.OrderCategoryType | None = None,
    from_date: str | None = None,
    to_date: str | None = None,
    **kwargs: Any,
) -> rt.BaseResponse[rt.OrdersHistoryResponse]:
    """
    (Abstract)

    Get the orders' history.

    Args:
        is_trade (str | enums.IsTrade): If the order is a trade.
        market_id (int | None): The market ID.
        type (str | enums.OrderType | None): The order type.
        category_type (str | enums.OrderCategoryType | None): The order category type.
        from_date (str | None): The start date.
        to_date (str | None): The end date.
        kwargs (Any): The keyword arguments.

    Returns:
        rt.BaseResponse: The response.

    Notes:
        Use `is_trade`, `type`, and `category_type` respective enums for better readability.
    """
    raise NotImplementedError

get_withdraw_networks(symbol, **kwargs) abstractmethod

(Abstract)

Get the withdrawal networks.

Parameters:

Name Type Description Default
symbol str

The symbol.

required
kwargs Any

The keyword arguments.

{}

Returns:

Type Description
BaseResponse[WithdrawalNetworksResponse]

rt.BaseResponse: The response.

Source code in src/bit24/clients/_abstract.py
@abstractmethod
def get_withdraw_networks(
    self, symbol: str, **kwargs: Any
) -> rt.BaseResponse[rt.WithdrawalNetworksResponse]:
    """
    (Abstract)

    Get the withdrawal networks.

    Args:
        symbol (str): The symbol.
        kwargs (Any): The keyword arguments.

    Returns:
        rt.BaseResponse: The response.
    """
    raise NotImplementedError

submit_withdraw(symbol, network_id, address, value, memo=None, **kwargs) abstractmethod

(Abstract)

Submit a withdrawal.

Parameters:

Name Type Description Default
symbol str

The symbol

required
network_id int

The network ID.

required
address str

The address.

required
value str

The value.

required
memo str | None

The memo.

None
kwargs Any

The keyword arguments.

{}

Returns:

Type Description
BaseResponse[SubmitWithdrawResponse]

rt.BaseResponse: The response.

Source code in src/bit24/clients/_abstract.py
@abstractmethod
def submit_withdraw(  # noqa: PLR0913
    self,
    symbol: str,
    network_id: int,
    address: str,
    value: str,
    memo: str | None = None,
    **kwargs: Any,
) -> rt.BaseResponse[rt.SubmitWithdrawResponse]:
    """
    (Abstract)

    Submit a withdrawal.

    Args:
        symbol (str): The symbol
        network_id (int): The network ID.
        address (str): The address.
        value (str): The value.
        memo (str | None): The memo.
        kwargs (Any): The keyword arguments.

    Returns:
        rt.BaseResponse: The response.
    """
    raise NotImplementedError