import typing

BidBO = typing.NamedTuple(
    'BidBO',
    (
        ('id', str),
        ('status', int),
        ('satoshi', int),
        ('fiat_amount', float),
        ('currency', str),
        ('created_at', int),
        ('updated_at', int),
        ('payment_id', str),
        ('btc_transaction_id', str),
        ('fee', float),
        ('address_id', str),
    )
)
AskBO = typing.NamedTuple(
    'AskBO',
    (
        ('id',  str),
        ('status',  int),
        ('satoshi',  int),
        ('fiat_amount',  float),
        ('currency',  str),
        ('created_at',  int),
        ('updated_at',  int),
        ('sell_id',  str),
        ('sell_method_id',  str),
        ('btc_transaction_id',  str),
        ('fee',  float),
    )
)

_TX_SPEED_1 = 1
_TX_SPEED_2 = 2
_TX_SPEED_3 = 3
_TX_SPEED_4 = 4
_TX_SPEED_5 = 5
_DEFAULT_TX_SPEED = _TX_SPEED_3


def get_fee_time_window(speed: typing.Optional[int] = None):
    return {
        _TX_SPEED_1: [0, 1200],
        _TX_SPEED_2: [1200, 3600],
        _TX_SPEED_3: [3600, 21600],
        _TX_SPEED_4: [21600, 43200],
        _TX_SPEED_5: [43200, 86400]
    }[speed or _DEFAULT_TX_SPEED]
