45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
# app/src/integrations/exchange/mock_data.py
|
|
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime, timezone
|
|
from decimal import Decimal
|
|
|
|
from src.integrations.exchange.models import BalanceSummary, ExchangeHealth
|
|
from src.market_data.acquisition.models.quote import Quote
|
|
|
|
|
|
def mock_exchange_health() -> ExchangeHealth:
|
|
return ExchangeHealth(
|
|
ok=True,
|
|
mode="mock",
|
|
message="Биржа работает в mock mode. Реальный API пока не подключен.",
|
|
)
|
|
|
|
|
|
def mock_quote(symbol: str) -> Quote:
|
|
normalized_symbol = symbol.upper().strip()
|
|
fake_prices = {
|
|
"BTCUSDT": Decimal("68425.10"),
|
|
"ETHUSDT": Decimal("3521.44"),
|
|
"BNBUSDT": Decimal("612.33"),
|
|
}
|
|
price = fake_prices.get(normalized_symbol, Decimal("100.00"))
|
|
|
|
return Quote(
|
|
symbol=normalized_symbol,
|
|
last_price=price,
|
|
bid_price=price,
|
|
ask_price=price,
|
|
exchange_timestamp=None,
|
|
received_at=datetime.now(timezone.utc),
|
|
source="mock",
|
|
)
|
|
|
|
|
|
def mock_balance_summary() -> list[BalanceSummary]:
|
|
return [
|
|
BalanceSummary(currency="USDT", available=1500.00, locked=0.0, source="mock"),
|
|
BalanceSummary(currency="BTC", available=0.025, locked=0.0, source="mock"),
|
|
]
|