prepare-pay-onchain: add option for drain (#464)

* 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
This commit is contained in:
ok300
2024-09-11 15:52:56 +00:00
committed by GitHub
parent d42e37ce1e
commit e8cd66f81f
17 changed files with 749 additions and 72 deletions

View File

@@ -1575,9 +1575,24 @@ final class wire_cst_prepare_buy_bitcoin_request extends ffi.Struct {
external int amount_sat;
}
final class wire_cst_prepare_pay_onchain_request extends ffi.Struct {
final class wire_cst_PayOnchainAmount_Receiver extends ffi.Struct {
@ffi.Uint64()
external int receiver_amount_sat;
external int amount_sat;
}
final class PayOnchainAmountKind extends ffi.Union {
external wire_cst_PayOnchainAmount_Receiver Receiver;
}
final class wire_cst_pay_onchain_amount extends ffi.Struct {
@ffi.Int32()
external int tag;
external PayOnchainAmountKind kind;
}
final class wire_cst_prepare_pay_onchain_request extends ffi.Struct {
external wire_cst_pay_onchain_amount amount;
external ffi.Pointer<ffi.Uint32> sat_per_vbyte;
}