Skip to content

feat(backend): Implement deadline enforcement and auto-refund scheduler#432

Open
brite-side0 wants to merge 2 commits into
StayLitCodes:mainfrom
brite-side0:feat/escrow-time-lock-refund
Open

feat(backend): Implement deadline enforcement and auto-refund scheduler#432
brite-side0 wants to merge 2 commits into
StayLitCodes:mainfrom
brite-side0:feat/escrow-time-lock-refund

Conversation

@brite-side0

Copy link
Copy Markdown

Closes #414 feat(backend): Implement deadline enforcement and auto-refund scheduler

  • Add EscrowExpirationService with 5-min cron job
  • Query ACTIVE escrows where expiresAt < NOW()
  • Validate eligibility: ACTIVE status, balance > 0, no dispute
  • Call Soroban refund_expired via EscrowStellarIntegrationService
  • Update status to REFUNDED with tx hash atomically in DB
  • Emit escrow:refunded WebSocket event via EscrowGateway
  • Notify buyer and seller via NotificationService
  • Advisory lock prevents duplicate concurrent processing
  • Retry once on Stellar failure, then queue MANUAL_REFUND
  • Add REFUNDED status to EscrowStatus enum and state machine
  • Add REFUNDED/REFUND_FAILED/QUEUED_MANUAL_REFUND event types
  • Add ESCROW_REFUNDED/ESCROW_REFUND_FAILED notification types
  • Add createRefundExpiredOps to EscrowOperationsService
  • Add refundExpiredOnChain to EscrowStellarIntegrationService
  • Add broadcastEscrowRefunded to EscrowGateway
  • Add migration for composite index on status/expiresAt/isActive
  • Add PLATFORM_FEE_BPS and PLATFORM_WALLET_PUBLIC_KEY env vars
  • Add unit tests covering all acceptance criteria

- Add EscrowExpirationService with 5-min cron job
- Query ACTIVE escrows where expiresAt < NOW()
- Validate eligibility: ACTIVE status, balance > 0, no dispute
- Call Soroban refund_expired via EscrowStellarIntegrationService
- Update status to REFUNDED with tx hash atomically in DB
- Emit escrow:refunded WebSocket event via EscrowGateway
- Notify buyer and seller via NotificationService
- Advisory lock prevents duplicate concurrent processing
- Retry once on Stellar failure, then queue MANUAL_REFUND
- Add REFUNDED status to EscrowStatus enum and state machine
- Add REFUNDED/REFUND_FAILED/QUEUED_MANUAL_REFUND event types
- Add ESCROW_REFUNDED/ESCROW_REFUND_FAILED notification types
- Add createRefundExpiredOps to EscrowOperationsService
- Add refundExpiredOnChain to EscrowStellarIntegrationService
- Add broadcastEscrowRefunded to EscrowGateway
- Add migration for composite index on status/expiresAt/isActive
- Add PLATFORM_FEE_BPS and PLATFORM_WALLET_PUBLIC_KEY env vars
- Add unit tests covering all acceptance criteria
@drips-wave

drips-wave Bot commented Jun 25, 2026

Copy link
Copy Markdown

@brite-side0 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@KuchiMercy

Copy link
Copy Markdown
Contributor

Kindly resolve conflicts

@brite-side0

Copy link
Copy Markdown
Author

okay i will

@brite-side0

Copy link
Copy Markdown
Author

conflict has been resolved

@brite-side0

Copy link
Copy Markdown
Author

hello dear maintainer i have fixed it ... !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(backend): Implement deadline enforcement and auto-refund scheduler

2 participants