* prepare-pay-onchain: add option for drain in req
* Fix clippy
* ChainSwapStateHandler: gracefully handle building both drain and non-drain lockups
* Send Chain swap: use standard feerate when estimating lockup tx fee
* UDL: move new drain field above the last PreparePayOnchainRequest optional field
* UDL: move new drain field optional
* prepare-pay-onchain: treat normal payment as drain if receiver amount is high enough
If the receiver amount is as high as it would be in case of drain, treat the current prepare-pay-onchain as drain, even if the drain flag is not set.
* build_drain_tx: add optional amount validation
* Add PayOnchainAmount enum to cover amount types (drain, receiver)
* Add ability to find max_receiver_amount_sat for non-drain sends
* Revert "Add ability to find max_receiver_amount_sat for non-drain sends"
This reverts commit 60ee1c768021810f72bc64a8ada69d35b638185e.
* prepare_pay_onchain: treat drain and non-drain cases separately
If the non-drain case is chosen with a receiver_amount equivalent to what drain would have calculated, it results in an error. For drain, the caller has to explicitly choose PayOnchainAmount::Drain.
* CLI: send-onchain-payment accepts optional amount
* CLI: add docs for send-onchain-payment drain arg
* SDK: expand docs for prepare_pay_onchain
* Re-generate RN bindings
* Re-generate flutter bindings
* 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