from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.db.models import PendingTransaction, Round from app.tx.confirmation import register_handler async def _on_payout_confirmed(session: AsyncSession, pending: PendingTransaction) -> None: round_ = await session.scalar(select(Round).where(Round.payout_txid == pending.current_txid)) if round_ is not None and round_.status == "paying_out": round_.status = "closed" # The winner's own address is already watched by the Electrum listener, so # their balance is credited by the normal deposit path once this confirms. register_handler("payout", _on_payout_confirmed)