package Ġfr . ac in q . lightning . blockchain Ċ Ċ import Ġfr . ac in q . bitcoin .* Ċ import Ġfr . ac in q . lightning . Short Channel Id Ċ import Ġfr . ac in q . lightning . utils . Try Ċ import Ġfr . ac in q . lightning . utils . run Trying Ċ import Ġkotlinx . coroutines . Comp letable Deferred Ċ Ċ sealed Ġclass ĠBitcoin Event Ċ object ĠBIT CO IN _ F UND ING _ PUBL ISH _ FAILED Ġ: ĠBitcoin Event () Ċ object ĠBIT CO IN _ F UND ING _ DEPTH OK Ġ: ĠBitcoin Event () Ċ object ĠBIT CO IN _ F UND ING _ DE E PLY B URI ED Ġ: ĠBitcoin Event () Ċ object ĠBIT CO IN _ F UND ING _ LO ST Ġ: ĠBitcoin Event () Ċ object ĠBIT CO IN _ F UND ING _ TIMEOUT Ġ: ĠBitcoin Event () Ċ object ĠBIT CO IN _ F UND ING _ SP ENT Ġ: ĠBitcoin Event () Ċ object ĠBIT CO IN _ OUTPUT _ SP ENT Ġ: ĠBitcoin Event () Ċ data Ġclass ĠBIT CO IN _ TX _ CON FI R MED ( val Ġtx : ĠTransaction ) Ġ: ĠBitcoin Event () Ċ data Ġclass ĠBIT CO IN _ F UND ING _ EXTERNAL _ CHANNEL _ SP ENT ( val Ġshort Channel Id : ĠShort Channel Id ) Ġ: ĠBitcoin Event () Ċ data Ġclass ĠBIT CO IN _ PARENT _ TX _ CON FI R MED ( val Ġchild Tx : ĠTransaction ) Ġ: ĠBitcoin Event () Ċ Ċ /** Ċ Ġ* Ġgeneric Ġ" Watch " Ġrequest Ċ Ġ*/ Ċ sealed Ġclass ĠWatch Ġ{ ĊĠĠĠ Ġabstract Ġval Ġchannel Id : ĠByte Vector 3 2 ĊĠĠĠ Ġabstract Ġval Ġevent : ĠBitcoin Event Ċ } Ċ Ċ // Ġwe Ġneed Ġa Ġpublic Ġkey Ġscript Ġto Ġuse Ġelect rum Ġap is Ċ data Ġclass ĠWatch Confirmed ( ĊĠĠĠ Ġoverride Ġval Ġchannel Id : ĠByte Vector 3 2 , ĊĠĠĠ Ġval Ġtx Id : ĠByte Vector 3 2 , ĊĠĠĠ Ġval ĠpublicKey Script : ĠByte Vector , ĊĠĠĠ Ġval Ġmin Depth : ĠLong , ĊĠĠĠ Ġoverride Ġval Ġevent : ĠBitcoin Event , ĊĠĠĠ Ġval Ġchannel Notification : ĠBoolean Ġ= Ġtrue Ċ ) Ġ: ĠWatch () Ġ{ ĊĠĠĠ Ġ// Ġif Ġwe Ġhave Ġthe Ġentire Ġtransaction , Ġwe Ġcan Ġget Ġthe Ġrede em Script Ġfrom Ġthe Ġw itness , Ġand Ġre - compute Ġthe ĠpublicKey Script ĊĠĠĠ Ġ// Ġwe Ġsupport Ġboth Ġp 2 pk h Ġand Ġp 2 w pk h Ġscripts ĊĠĠĠ Ġconstructor ( channelId : ĠByte Vector 3 2 , Ġtx : ĠTransaction , Ġmin Depth : ĠLong , Ġevent : ĠBitcoin Event ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġchannel Id , ĊĠĠĠĠĠĠĠ Ġtx . tx id , ĊĠĠĠĠĠĠĠ Ġif Ġ( tx . tx Out . isEmpty ()) ĠByte Vector . empty Ġelse Ġtx . tx Out [ 0 ]. publicKey Script , ĊĠĠĠĠĠĠĠ Ġmin Depth , ĊĠĠĠĠĠĠĠ Ġevent ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġextract PublicKey Script ( w itness : ĠScript W itness ): ĠByte Vector Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrun Trying Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpub Ġ= ĠPublicKey ( w itness . last ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScript . write ( Script . pay 2 w pk h ( pub )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTry . Success Ġ-> ĠByte Vector ( result . result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTry . Failure Ġ-> ĠByte Vector ( Script . write ( Script . pay 2 w sh ( w itness . last ()))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠWatch Sp ent ( ĊĠĠĠ Ġoverride Ġval Ġchannel Id : ĠByte Vector 3 2 , ĊĠĠĠ Ġval Ġtx Id : ĠByte Vector 3 2 , ĊĠĠĠ Ġval Ġoutput Index : ĠInt , ĊĠĠĠ Ġval ĠpublicKey Script : ĠByte Vector , ĊĠĠĠ Ġoverride Ġval Ġevent : ĠBitcoin Event Ċ ) Ġ: ĠWatch () Ġ{ ĊĠĠĠ Ġconstructor ( channelId : ĠByte Vector 3 2 , Ġtx : ĠTransaction , Ġoutput Index : ĠInt , Ġevent : ĠBitcoin Event ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġchannel Id , ĊĠĠĠĠĠĠĠ Ġtx . tx id , ĊĠĠĠĠĠĠĠ Ġoutput Index , ĊĠĠĠĠĠĠĠ Ġtx . tx Out [ output Index ]. publicKey Script , ĊĠĠĠĠĠĠĠ Ġevent ĊĠĠĠ Ġ) Ċ } Ċ Ċ data Ġclass ĠWatch Lost ( override Ġval Ġchannel Id : ĠByte Vector 3 2 , Ġval Ġtx Id : ĠByte Vector 3 2 , Ġval Ġmin Depth : ĠLong , Ġoverride Ġval Ġevent : ĠBitcoin Event ) Ġ: ĠWatch () Ċ Ċ /** Ċ Ġ* Ġgeneric Ġ" watch " Ġevent Ċ Ġ*/ Ċ sealed Ġclass ĠWatch Event Ġ{ ĊĠĠĠ Ġabstract Ġval Ġchannel Id : ĠByte Vector 3 2 ĊĠĠĠ Ġabstract Ġval Ġevent : ĠBitcoin Event Ċ } Ċ Ċ data Ġclass ĠWatch Event Confirmed ( override Ġval Ġchannel Id : ĠByte Vector 3 2 , Ġoverride Ġval Ġevent : ĠBitcoin Event , Ġval Ġblock Height : ĠInt , Ġval Ġtx Index : ĠInt , Ġval Ġtx : ĠTransaction ) Ġ: ĠWatch Event () Ċ data Ġclass ĠWatch Event Sp ent ( override Ġval Ġchannel Id : ĠByte Vector 3 2 , Ġoverride Ġval Ġevent : ĠBitcoin Event , Ġval Ġtx : ĠTransaction ) Ġ: ĠWatch Event () Ċ data Ġclass ĠWatch Event Sp ent Basic ( override Ġval Ġchannel Id : ĠByte Vector 3 2 , Ġoverride Ġval Ġevent : ĠBitcoin Event ) Ġ: ĠWatch Event () Ċ data Ġclass ĠWatch Event Lost ( override Ġval Ġchannel Id : ĠByte Vector 3 2 , Ġoverride Ġval Ġevent : ĠBitcoin Event ) Ġ: ĠWatch Event () Ċ Ċ data Ġclass ĠPublish As ap ( val Ġtx : ĠTransaction ) Ċ data Ġclass ĠGet Tx With Meta ( val Ġchannel Id : ĠByte Vector 3 2 , Ġval Ġtx id : ĠByte Vector 3 2 ) Ċ data Ġclass ĠGet Tx With Meta Response ( val Ġtx id : ĠByte Vector 3 2 , Ġval Ġtx _ opt : ĠTransaction ?, Ġval Ġlast Block Timestamp : ĠLong ) Ċ