@@ -435,32 +435,59 @@ pub trait PsbtExt {
435435 /// See [finalizer::finalize_mall] if you want to allow malleable satisfactions
436436 ///
437437 /// For finalizing individual inputs, see also [`PsbtExt::finalize_inp`]
438- fn finalize < C : secp256k1:: Verification > (
438+ fn finalize_mut < C : secp256k1:: Verification > (
439439 & mut self ,
440440 secp : & secp256k1:: Secp256k1 < C > ,
441441 ) -> Result < ( ) , Vec < Error > > ;
442442
443- /// Same as [finalize], but allows for malleable satisfactions
444- fn finalize_mall < C : secp256k1:: Verification > (
443+ /// Same as [`PsbtExt::finalize_mut`], but does not mutate the input psbt and
444+ /// returns a new psbt
445+ fn finalize < C : secp256k1:: Verification > (
446+ & self ,
447+ secp : & secp256k1:: Secp256k1 < C > ,
448+ ) -> Result < Psbt , Vec < Error > > ;
449+
450+ /// Same as [PsbtExt::finalize_mut], but allows for malleable satisfactions
451+ fn finalize_mall_mut < C : secp256k1:: Verification > (
445452 & mut self ,
446453 secp : & Secp256k1 < C > ,
447454 ) -> Result < ( ) , Vec < Error > > ;
448455
449- /// Same as [finalize], but only tries to finalize a single input leaving other
456+ /// Same as [PsbtExt::finalize], but allows for malleable satisfactions
457+ fn finalize_mall < C : secp256k1:: Verification > (
458+ & self ,
459+ secp : & Secp256k1 < C > ,
460+ ) -> Result < Psbt , Vec < Error > > ;
461+
462+ /// Same as [`PsbtExt::finalize_mut`], but only tries to finalize a single input leaving other
450463 /// inputs as is. Use this when not all of inputs that you are trying to
451464 /// satisfy are miniscripts
465+ fn finalize_inp_mut < C : secp256k1:: Verification > (
466+ & mut self ,
467+ secp : & secp256k1:: Secp256k1 < C > ,
468+ index : usize ,
469+ ) -> Result < ( ) , Error > ;
470+
471+ /// Same as [`PsbtExt::finalize_inp_mut`], but does not mutate the psbt and returns a new one
452472 fn finalize_inp < C : secp256k1:: Verification > (
473+ & self ,
474+ secp : & secp256k1:: Secp256k1 < C > ,
475+ index : usize ,
476+ ) -> Result < Psbt , Error > ;
477+
478+ /// Same as [`PsbtExt::finalize_inp_mut`], but allows for malleable satisfactions
479+ fn finalize_inp_mall_mut < C : secp256k1:: Verification > (
453480 & mut self ,
454481 secp : & secp256k1:: Secp256k1 < C > ,
455482 index : usize ,
456483 ) -> Result < ( ) , Error > ;
457484
458- /// Same as [finalize_inp], but allows for malleable satisfactions
485+ /// Same as [`PsbtExt:: finalize_inp` ], but allows for malleable satisfactions
459486 fn finalize_inp_mall < C : secp256k1:: Verification > (
460487 & mut self ,
461488 secp : & secp256k1:: Secp256k1 < C > ,
462489 index : usize ,
463- ) -> Result < ( ) , Error > ;
490+ ) -> Result < Psbt , Error > ;
464491
465492 /// Psbt extractor as defined in BIP174 that takes in a psbt reference
466493 /// and outputs a extracted bitcoin::Transaction
@@ -517,7 +544,7 @@ pub trait PsbtExt {
517544}
518545
519546impl PsbtExt for Psbt {
520- fn finalize < C : secp256k1:: Verification > (
547+ fn finalize_mut < C : secp256k1:: Verification > (
521548 & mut self ,
522549 secp : & secp256k1:: Secp256k1 < C > ,
523550 ) -> Result < ( ) , Vec < Error > > {
@@ -538,7 +565,16 @@ impl PsbtExt for Psbt {
538565 }
539566 }
540567
541- fn finalize_mall < C : secp256k1:: Verification > (
568+ fn finalize < C : secp256k1:: Verification > (
569+ & self ,
570+ secp : & secp256k1:: Secp256k1 < C > ,
571+ ) -> Result < Psbt , Vec < Error > > {
572+ let mut psbt = self . clone ( ) ;
573+ psbt. finalize_mut ( secp) ?;
574+ Ok ( psbt)
575+ }
576+
577+ fn finalize_mall_mut < C : secp256k1:: Verification > (
542578 & mut self ,
543579 secp : & secp256k1:: Secp256k1 < C > ,
544580 ) -> Result < ( ) , Vec < Error > > {
@@ -558,7 +594,16 @@ impl PsbtExt for Psbt {
558594 }
559595 }
560596
561- fn finalize_inp < C : secp256k1:: Verification > (
597+ fn finalize_mall < C : secp256k1:: Verification > (
598+ & self ,
599+ secp : & Secp256k1 < C > ,
600+ ) -> Result < Psbt , Vec < Error > > {
601+ let mut psbt = self . clone ( ) ;
602+ psbt. finalize_mall_mut ( secp) ?;
603+ Ok ( psbt)
604+ }
605+
606+ fn finalize_inp_mut < C : secp256k1:: Verification > (
562607 & mut self ,
563608 secp : & secp256k1:: Secp256k1 < C > ,
564609 index : usize ,
@@ -572,7 +617,17 @@ impl PsbtExt for Psbt {
572617 finalizer:: finalize_input ( self , index, secp, /*allow_mall*/ false )
573618 }
574619
575- fn finalize_inp_mall < C : secp256k1:: Verification > (
620+ fn finalize_inp < C : secp256k1:: Verification > (
621+ & self ,
622+ secp : & secp256k1:: Secp256k1 < C > ,
623+ index : usize ,
624+ ) -> Result < Psbt , Error > {
625+ let mut psbt = self . clone ( ) ;
626+ psbt. finalize_inp_mut ( secp, index) ?;
627+ Ok ( psbt)
628+ }
629+
630+ fn finalize_inp_mall_mut < C : secp256k1:: Verification > (
576631 & mut self ,
577632 secp : & secp256k1:: Secp256k1 < C > ,
578633 index : usize ,
@@ -586,6 +641,16 @@ impl PsbtExt for Psbt {
586641 finalizer:: finalize_input ( self , index, secp, /*allow_mall*/ false )
587642 }
588643
644+ fn finalize_inp_mall < C : secp256k1:: Verification > (
645+ & mut self ,
646+ secp : & secp256k1:: Secp256k1 < C > ,
647+ index : usize ,
648+ ) -> Result < Psbt , Error > {
649+ let mut psbt = self . clone ( ) ;
650+ psbt. finalize_inp_mall_mut ( secp, index) ?;
651+ Ok ( psbt)
652+ }
653+
589654 fn extract < C : secp256k1:: Verification > (
590655 & self ,
591656 secp : & Secp256k1 < C > ,
0 commit comments