* Add extend_incomplete_failed_send_swaps() on first sync
* Find lockup txs
* Send Swaps: find refund txs
* Simplify recover_send_swap_tx_ids, add recover_receive_swap_tx_ids
* recover_receive_swap_tx_ids: batch tx lookups
* Move onchain-restore methods to own module
* Store restored data in own struct
* Fix CI: bump pubspec.lock dependencies
* LiquidChainService: add get_scripts_history_electrum()
* restore_onchain: rely on batch call to fetch histories of all known swaps
* Rename get_scripts_history_electrum
* Rename restore_onchain.rs, flatten onchain inner module
* Rename ImmutableDb to SwapsList
* Simplify logic in restore.rs
* restore.rs: Add chain swap support, simplify logic
* restore.rs: add logging when script retrieval fails
* restore.rs: remove unused field create_resp
* restore.rs: rename SwapCompositeData to SwapHistory
* restore.rs: allow unused fields in simulated immutable data
* restore.rs: cargo fmt
* Cargo fmt
* Fix failing test
* When fetching script history, also fetch if tx is confirmed or not
* Recover send swaps: fetch claim tx IDs
* Recover onchain data: persist reconstructed swaps
* Simplify recover_from_onchain: store swap txs per swap ID
* Receive swaps: do not treat lockup/claim txs as pair
* Clarify meaning of partial swap state
* Cargo clippy
* Receive Chain Swap: distinguish BTC lockup from claim/refund tx
* Send Chain Swap: distinguish BTC lockup/claim by vout, not by history order
* get_partial_state: default to Created when state is unclear
* Receive Chain Swaps: differentiate BTC refund from BTC claim txs
* Send Swaps: clarify reason for defaulting to TimedOut on no lockup
* Chain swaps: add docs for meaning of server, user txs
* Recover Receive swaps: cover the case when only the lockup is available
* HistoryTxId: store confirmation block height
* Receive swaps: differentiate claim tx from swapper refund tx
* recover_from_onchain: extract immutable DB (swaps list) as arg
* Rename get_partial_state to derive_partial_state
* Restore: remove validation steps
* Restore chain swaps: treat as Complete only when claim is confirmed
* Fix clippy warnings
* Remove restore call from sync call
* Integrate webhooks
* Make hash_swap_id optional
* Hash and store the swap id
* Add webhook status include lists
* Remove superfluous webhook statuses
* Verify and fetch user_lockup_tx_id if missing
* Fix tests
* Use bitcoin sha256
* Fix flutter CI
* Add cache flag for is_first_sync_complete
* Event Manager: add ability to pause and resume event notifications
* Pause event notifications on first sync
* Fix CI: bump pubspec.lock dependencies
* CI: Bump win32 transitive dependency in pubspec.lock
* CI: Set dependency hash in quotes
* List payments in reverse chonological order
* Add payment filtering and paging
* Fix examples
* Apply suggestions from code review
Co-authored-by: Erdem Yerebasmaz <erdem@yerebasmaz.com>
* Set timestamp for pseudo payments
* Filter by the first non-null timestamp from the join query
---------
Co-authored-by: Erdem Yerebasmaz <erdem@yerebasmaz.com>
This is done for swaps that can be refunded, like Chain Swaps and Send Swaps.
Without this, refunded payments never transition away from RefundPending to Failed (refunded), because they're not considered a pending swap when handling the final transition
* Check chain swap addresses for unspent outputs
* Monitoring expired swaps up to 4320 blocks after expiration
* Refactor chain swap monitoring
* Handle the error to prevent the loop exiting
* Add RefundPending state
* Check if RefundPendingbefore setting to Refundable
* Use script_get_balance to determine spent state
* Use unconfirmed balance to check if RefundPending should be reset to Refundable