From 9e8763c71cd61d55be7c869d973524f75209a3f3 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Thu, 11 Feb 2021 21:05:34 -0500 Subject: [PATCH] Update auto-generated bindings with new upstream. --- liblightningjni.so | Bin 7040384 -> 7179856 bytes src/main/java/org/ldk/impl/bindings.java | 1494 ++- .../java/org/ldk/structs/AcceptChannel.java | 19 +- .../ldk/structs/AnnouncementSignatures.java | 19 +- .../structs/BuiltCommitmentTransaction.java | 19 +- .../org/ldk/structs/ChannelAnnouncement.java | 19 +- .../java/org/ldk/structs/ChannelConfig.java | 19 +- .../java/org/ldk/structs/ChannelDetails.java | 22 +- .../java/org/ldk/structs/ChannelFeatures.java | 32 + .../ldk/structs/ChannelHandshakeConfig.java | 14 +- .../ldk/structs/ChannelHandshakeLimits.java | 14 +- .../java/org/ldk/structs/ChannelInfo.java | 13 +- .../ldk/structs/ChannelMessageHandler.java | 16 - .../org/ldk/structs/ChannelMonitorUpdate.java | 14 +- .../org/ldk/structs/ChannelPublicKeys.java | 19 +- .../org/ldk/structs/ChannelReestablish.java | 14 +- .../structs/ChannelTransactionParameters.java | 19 +- .../java/org/ldk/structs/ChannelUpdate.java | 19 +- .../java/org/ldk/structs/ClosingSigned.java | 19 +- .../org/ldk/structs/CommitmentSigned.java | 19 +- .../ldk/structs/CommitmentTransaction.java | 5 +- .../org/ldk/structs/CommitmentUpdate.java | 14 +- ...nterpartyChannelTransactionParameters.java | 19 +- .../java/org/ldk/structs/DataLossProtect.java | 14 +- .../ldk/structs/DirectionalChannelInfo.java | 19 +- .../java/org/ldk/structs/ErrorMessage.java | 14 +- .../java/org/ldk/structs/FundingCreated.java | 19 +- .../java/org/ldk/structs/FundingLocked.java | 19 +- .../java/org/ldk/structs/FundingSigned.java | 19 +- .../ldk/structs/GossipTimestampFilter.java | 14 +- .../ldk/structs/HTLCOutputInCommitment.java | 19 +- src/main/java/org/ldk/structs/HTLCUpdate.java | 5 +- .../structs/HolderCommitmentTransaction.java | 19 +- .../org/ldk/structs/InMemoryChannelKeys.java | 14 +- .../java/org/ldk/structs/InitFeatures.java | 32 + .../java/org/ldk/structs/KeysInterface.java | 8 +- .../java/org/ldk/structs/LightningError.java | 14 +- .../org/ldk/structs/NodeAnnouncement.java | 19 +- .../org/ldk/structs/NodeAnnouncementInfo.java | 30 +- .../java/org/ldk/structs/NodeFeatures.java | 32 + src/main/java/org/ldk/structs/NodeInfo.java | 14 +- .../java/org/ldk/structs/OpenChannel.java | 19 +- src/main/java/org/ldk/structs/OutPoint.java | 19 +- .../java/org/ldk/structs/PeerHandleError.java | 14 +- src/main/java/org/ldk/structs/Ping.java | 14 +- src/main/java/org/ldk/structs/Pong.java | 14 +- .../org/ldk/structs/QueryChannelRange.java | 14 +- .../org/ldk/structs/QueryShortChannelIds.java | 14 +- .../org/ldk/structs/ReplyChannelRange.java | 26 +- .../ldk/structs/ReplyShortChannelIdsEnd.java | 14 +- .../Result_ChanKeySignerDecodeErrorZ.java | 51 - .../structs/Result_PublicKeySecpErrorZ.java | 43 - .../structs/Result_SecretKeySecpErrorZ.java | 43 - .../Result_TxCreationKeysSecpErrorZ.java | 47 - .../java/org/ldk/structs/RevokeAndACK.java | 19 +- src/main/java/org/ldk/structs/Route.java | 18 +- src/main/java/org/ldk/structs/RouteHint.java | 14 +- src/main/java/org/ldk/structs/RouteHop.java | 46 +- .../java/org/ldk/structs/RoutingFees.java | 14 +- src/main/java/org/ldk/structs/Shutdown.java | 19 +- .../java/org/ldk/structs/TxCreationKeys.java | 27 +- .../structs/UnsignedChannelAnnouncement.java | 22 +- .../ldk/structs/UnsignedChannelUpdate.java | 14 +- .../ldk/structs/UnsignedNodeAnnouncement.java | 22 +- .../java/org/ldk/structs/UpdateAddHTLC.java | 19 +- .../java/org/ldk/structs/UpdateFailHTLC.java | 19 +- .../ldk/structs/UpdateFailMalformedHTLC.java | 19 +- src/main/java/org/ldk/structs/UpdateFee.java | 19 +- .../org/ldk/structs/UpdateFulfillHTLC.java | 19 +- src/main/java/org/ldk/structs/UserConfig.java | 14 +- src/main/jni/bindings.c | 10257 +++++++++------- src/main/jni/org_ldk_impl_bindings.h | 5588 ++++++--- ts/bindings.c | 9336 ++++++++------ ts/bindings.ts | 3880 ++++-- ts/structs/AcceptChannel.ts | 19 +- ts/structs/AnnouncementSignatures.ts | 19 +- ts/structs/BuiltCommitmentTransaction.ts | 19 +- ts/structs/ChainMonitor.ts | 2 +- ts/structs/ChannelAnnouncement.ts | 19 +- ts/structs/ChannelConfig.ts | 19 +- ts/structs/ChannelDetails.ts | 22 +- ts/structs/ChannelFeatures.ts | 32 + ts/structs/ChannelHandshakeConfig.ts | 14 +- ts/structs/ChannelHandshakeLimits.ts | 14 +- ts/structs/ChannelInfo.ts | 13 +- ts/structs/ChannelManager.ts | 4 +- ts/structs/ChannelManagerReadArgs.ts | 2 +- ts/structs/ChannelMessageHandler.ts | 16 - ts/structs/ChannelMonitor.ts | 2 +- ts/structs/ChannelMonitorUpdate.ts | 14 +- ts/structs/ChannelPublicKeys.ts | 19 +- ts/structs/ChannelReestablish.ts | 14 +- ts/structs/ChannelTransactionParameters.ts | 19 +- ts/structs/ChannelUpdate.ts | 19 +- ts/structs/ClosingSigned.ts | 19 +- ts/structs/CommitmentSigned.ts | 19 +- ts/structs/CommitmentTransaction.ts | 5 +- ts/structs/CommitmentUpdate.ts | 24 +- ...ounterpartyChannelTransactionParameters.ts | 19 +- ts/structs/DataLossProtect.ts | 14 +- ts/structs/DirectionalChannelInfo.ts | 19 +- ts/structs/ErrorMessage.ts | 14 +- ts/structs/EventsProvider.ts | 2 +- ts/structs/FundingCreated.ts | 19 +- ts/structs/FundingLocked.ts | 19 +- ts/structs/FundingSigned.ts | 19 +- ts/structs/GossipTimestampFilter.ts | 14 +- ts/structs/HTLCOutputInCommitment.ts | 19 +- ts/structs/HTLCUpdate.ts | 5 +- ts/structs/HolderCommitmentTransaction.ts | 19 +- ts/structs/InMemoryChannelKeys.ts | 14 +- ts/structs/InitFeatures.ts | 32 + ts/structs/KeysInterface.ts | 8 +- ts/structs/LightningError.ts | 14 +- ts/structs/MessageSendEventsProvider.ts | 2 +- ts/structs/NodeAnnouncement.ts | 19 +- ts/structs/NodeAnnouncementInfo.ts | 34 +- ts/structs/NodeFeatures.ts | 32 + ts/structs/NodeInfo.ts | 14 +- ts/structs/OpenChannel.ts | 19 +- ts/structs/OutPoint.ts | 19 +- ts/structs/PeerHandleError.ts | 14 +- ts/structs/Ping.ts | 14 +- ts/structs/Pong.ts | 14 +- ts/structs/QueryChannelRange.ts | 14 +- ts/structs/QueryShortChannelIds.ts | 14 +- ts/structs/ReplyChannelRange.ts | 26 +- ts/structs/ReplyShortChannelIdsEnd.ts | 14 +- .../Result_ChanKeySignerDecodeErrorZ.ts | 47 - ts/structs/Result_PublicKeySecpErrorZ.ts | 39 - ts/structs/Result_SecretKeySecpErrorZ.ts | 39 - ts/structs/Result_TxCreationKeysSecpErrorZ.ts | 43 - ts/structs/RevokeAndACK.ts | 19 +- ts/structs/Route.ts | 18 +- ts/structs/RouteHint.ts | 14 +- ts/structs/RouteHop.ts | 46 +- ts/structs/RoutingFees.ts | 14 +- ts/structs/RoutingMessageHandler.ts | 4 +- ts/structs/Shutdown.ts | 19 +- ts/structs/TxCreationKeys.ts | 27 +- ts/structs/UnsignedChannelAnnouncement.ts | 22 +- ts/structs/UnsignedChannelUpdate.ts | 14 +- ts/structs/UnsignedNodeAnnouncement.ts | 24 +- ts/structs/UpdateAddHTLC.ts | 19 +- ts/structs/UpdateFailHTLC.ts | 19 +- ts/structs/UpdateFailMalformedHTLC.ts | 19 +- ts/structs/UpdateFee.ts | 19 +- ts/structs/UpdateFulfillHTLC.ts | 19 +- ts/structs/UserConfig.ts | 14 +- ts/structs/UtilMethods.ts | 2 +- ts/structs/Watch.ts | 2 +- 151 files changed, 20477 insertions(+), 12794 deletions(-) delete mode 100644 src/main/java/org/ldk/structs/Result_ChanKeySignerDecodeErrorZ.java delete mode 100644 src/main/java/org/ldk/structs/Result_PublicKeySecpErrorZ.java delete mode 100644 src/main/java/org/ldk/structs/Result_SecretKeySecpErrorZ.java delete mode 100644 src/main/java/org/ldk/structs/Result_TxCreationKeysSecpErrorZ.java delete mode 100644 ts/structs/Result_ChanKeySignerDecodeErrorZ.ts delete mode 100644 ts/structs/Result_PublicKeySecpErrorZ.ts delete mode 100644 ts/structs/Result_SecretKeySecpErrorZ.ts delete mode 100644 ts/structs/Result_TxCreationKeysSecpErrorZ.ts diff --git a/liblightningjni.so b/liblightningjni.so index 48816fd15ea05c3d2f77c01de0e3b7611a2941b8..b151f89d4523fa4bbb18f6ff055301230a248c23 100755 GIT binary patch delta 2205625 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⪻qDqXs_V!kgh^E^#_*F^sq*=!Xxv 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
  • 8Q?3QzA~*1VIPB_E~{#0D&-IR5QAK)=C= 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
    q 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 N_?ZCl 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

    3xepU2y>Ufp@}Fw~eaa^DXV7FTE# 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 z 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%0D!el75}`Pz7d^h{Ve0sMnQ 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℞joyt%e^%@@=QH#K6oLN#c*R#3*YdwlKim`Y= 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 UoDzE*F8)~bJYAZpe^{gb1E+I&djJ3c delta 2135680 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
    rUw^ta0lPakJWdx0g{gF^iI%sr=9^!*dW7} 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 z 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

    #Gg)+{mGR*&WwML?j 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

    }o*M7sS780#;4raAR6*;Rl zQjUuI$w^YJrV=cWY zDu}?GrdW6;kmq8~H|6%?HD>FXQXpEt?;V;l7h?)YExsB5Tj>i>vN;Ac0@GT;0)e$I zaH1uQ6EnLx?i9vKQ=*|}pEJZ1676hr9-C-Xkufz=j_=OOm{N+k7Ca=(DAvPBqFR4t zMQUAIAdHJ}Cc?M`U~&t7E81JrOGJ0pJm!+2DM6waf`BLl0Z|A7k6NM-F*3C%MBmGX zLO_Dg>7rp6Rb(NIlw&{g6sv(A>?E+FVHjDxL}2t1ZEuAVIdDcLs#Zg~LTgu!`*5Wp z)`avwXJ0A%lnPn$iVqw32IFTI1`kNI=+-cqDc(eD|)bWVPO{ z`GlGaq-}ca$IZVQ0_c*^zH)kybL@ss!3Q}|(QIwdT?w>ogKG|fPuuV^@y66i4NB<-F`FF0wkJuTQnu3imU}A<@f@Qi&~%*Ic?FD zjAA|TB*HW3$ml$opO`spLVg*v{6-Ip4?;z>ucH75kg@Ux;BH&&Ht?N;7opmr3zh7f-sa&KN-8`2)bE}e~SkI|OEvi2Bu2#7VZ z-(W`>i8E6N31T|%$TTqUR$mjO{C|Au!ww>Ar%~WYc;&;+fK9uBLwXM-kddXq9dO|x zFuwz`B(S3cvLtY`1K%6*da`ai0rvBU&O%ef&^bl10leD@qb7kZols>2uDO7BXV@Yp zu`@=^rT}9*qoN5c?~MEi9Ca~|pq$fxik@Frm$AbJE&bm0*Z-^v^*-^?LMlz!m5 z00vewb%kE!R6N<~%FoxlGFA6XTu5vGVCcLq3AG~XyoDev@Dvs*n!Ou}PC#5@`*uTJ z)7fX;;2!~Ti6uanSS5BE#?5ZLc=UalujsK$)*E^(BwCs77&nb7vd0=J#}POrdaMUK z1FRS~jjY~%!RQy%AG%}QT#qx+Q#S)#>CQVV&){6`9`Kt$&mMeam9Xi0bS5GOX)jP+ z>ANxKO_i*e3~%$840o80?cVR<0!X0xdziZ%1nBb~jGh9R@gCaceSmH6p%MuE@*XaU zA(-F1Bpm{=Jux9FCp&CykLm+U)mMzx|3;ZAp;m{|lKOPv5KEORB>(h8A0|M3IORAjj7R56$-n_D zG~FM4ur&l{e{Z7?Yfc*U;VnwntrrSJKy>njy-?smIQ!8BF7@J(CBV2%Q73<=LA3xN|7ZCGD43<7ieA~yoN`@+`;(xjMx^qgVv6%y@DUlf@@Y(E}T)}>2VjHJn? zP`f(QhizRRz-$L_NbidS>2~XfPDx;#3#{nJ%S8LgsL(Bl#p%MfY zad+Us?wlp>4m{ZYV8z{mk=5@(!Qi_IJWBiTeeSJ|?9T^B?~`SwCdW+^4P}Nz3mt&^ zAyC}~Iu1a@h#5NoB_puh1&%=!eNNh=G19SrilJnXXoUwN5drH!9#YFgchY287!S4v zSWy@ws~3jMj2_6BDDwa+y${0#8oR)t_c4VbMsqRNVd&w+sU2VA5bLU;v=J_y_=%x?L+Qo=`)i z1q@QzJs4&P+!>6Oh1XIy8oK<*a6`mh5_%?sf!bA1%UgECF7qM8ov8T4h=?$ zV^s@7EmGpxkB}3A`X6De*dncnu_FCrLoGt0jrs`g5m@d5Cn+^C&t0J8$C7#HW6Vi^ zhG@XY7?uc3_!t8Kfbdg{5nDf(1AqtH6|4xR2OA1j1k=ds!30AC06z5wQ05ajK%gN& zTq&6yJ%pfFQtYGO!!*P7juxca)KAdTjcSf3P;u`YCzX9eS^r1*aV9QW+GXj@}B7Pje^eK`Pi24*=2S9{GJkm<+5i_h6s)mg|`w z>|(HD;nm3M>zN*mdp*<0y4N$c8vm(9lt%F8_@`({0K%ITiWpu1v^VeT!@fquoJNV` zYq0K};gmS`GZdFV{m;;l+DR*=V1-BaH!NO5qK$%zLSU&29R3VZBjzEQAt2rgBp}`j z%mrxoIif~j$mcw^7l81S?hNEwwUKhX7$8ID!R`PnLS|(3ka;lfkb%`qxqPK^3Tvoq zb1`EeaKZ&1=3?|ErZ7fd0mOJr494TQ=sR-3Ra`itx*5h6NVF+P)WSn$NLSe-JlG7d zqDOeJK43+UFtU1&0Haxk^Xbt~W&Ywq_y+mA*OejBHV%i=1TMJ1>*1&eVq!)}kth!_ zbbXc8=4I;7iQ^o@o4DOXq}xwY%jB)trf_W z2d@-%Z8UcOjpW5j0FX&G8vigsv)zO+WxdoGHWJfFQvJ#WwvNPn@}W%Qz9)PEmAfNR zH3Y1qaZeaK3ikq-&UT+CMfbc%}QKoIa3bTyS%jBN##!5mg;=G3L3+Sc=dI#Yq?I{kBliTqMfmWm8 zF@d3@;V}W>@y5|SGS(ptQJBf&L#aOO5JhY@4iIXOprsH99D_i))ZKxq4N2M<1d0F! zD&R-Bbnlz-9uXpHOW(dE6gPrBn7v?rKA_~B7rt^ z9M86Ol}Ur7#;4Dr!Eq=k=s<$MkQ4&#%{U$&>e6r*t~VqV#-k<(G#HP%Coo_3Xq`s!FrlzzJh#>#Bo)d?Kfa{woM=)71#Lu=od3+shRP&#zannIrXe@$ z1mrIOb(!}jAdGbO(FBB%z}yK4BZ1u$cqK&xctR=G0R(@+i`jNcql=^;W~%6uXo&>{ z?oJJX*5(Ve6PJeE_+nRleb@?W$fMwLL7@}EZ$wc#dnxR=%+(#r3z87MYZY|YLO1P4 z97H>TSZ^nC3Q!slp$xw0_b{131U4;S(6bZI%_u>Q6i8#8Qu^O-fWr7BWskG#%M1H zb@P})KI}uP{kk|56t;xWJqAFi1y4cb>KXhIEwU*j8B-8B0_~@uM-Uh@1zr&NehR!G zaAFEBJPXF*_hhDmA;72d_*ejUID*%j!%{6nh6R+4UHB9axt*jnWh&27eg(KT756v< z{+-IhBLGCYHaI%`@C%V^Mj`=;D^24QqMu4JeT9S%O7md{=(+6C^8O4G?aVZ~NCG@} zfyn7}{RERf9o`Y>HXS7(Fm^g-e?H?;kJB-aA#iXyZY=c$wQhN zU^{?~K-ul8EAC|EMoagOrwb@Rky$(>0ssPhD+K=>PM8#%obEzwJ(U%r5TJccEdhic znbG$(J(WylF#5hG55~Q($;DELT4n|bD|n@8Z&6%QFrC^x3*DN))meyeC4e`xc(LvP zLX$>n$GnCfJDa-58WWSb3K>2u?g%!jJpav$xg@lh8a&A_uvU50wUNyEoo={Tt=`~2 zKy7|9o6l0R7A0v#HU2ouf03RkJxFP^887btMR!QKICx0hp93+n4&^_?od6_Sqd7db zhD${}?4++RRHFBl`$L!B&S%b0nI#QSj&DG_ccVa}t%QkQMin{3H&Tu)=Bw{U@nFY* z6+Oeq>OI4QanJC<(hR?(mTbxP&g!>V4+X{8^BV>p689U&M%MA3mv8=^BP7~)Ut)kD z@Y9#r&i0YCO>N2H>+PFgW}`%W0-_eA@8H`4_KyK_0Gvh@#}8n|P~pMe0xP!Xc(5@R z8IS}ctw+RzaYqEKHgztKuUbl05;@$q7@pbfLU4a80&k2GdNH4nIk9CA@_xZ?@z!&q8C4n_A=FEHy z&cwW)kNP1{@++)X1OljE!F2*XzT$~p${T8|+3SeJUM64mlD2+L+U~_Xgddyz5*IZC5>m11JP z(X*lfq3!R5aG{(URXTWK9_r2snU=c<0~3Myi!kC7*t`hAX$A1xB0f7>lj*5Z1mf%G z))GJ9Lr>uk%?uK)(6>C&wot01Kqa#W#Obe+{F#d_O9|=WVsJ8z4hbJZq4KwQbha25 z{olWXjjvHF1d_i7^Cv({7Z~<6O6j!}Jqt|nh^2Z_T&@T&KngFK#z`qYVQ%ok$QrzW z4*Hl((F-TsyP_{E-^B|*28}~{t8xD9Q&`UV1}=>T_}B#&e*>4W*IheE%u0Yq-=LNV zP%t7kNTYPU$PWfst>(AK`SP(%LQ&O;f<6# zV5)wHR0P_%K<;0m#rB?pBo-wW=5&sXj5$B*)U)BBLq%J zv`63JM&mhv&r)PdAaNMT@Q-%$caZ1wr3Oc* zIA8q*0wXJ5Aou_l=mmn*$ub447(13Dg?NF$gS`UwE4)^aVk_a#Akj81jE0In^= zs|Cf-G6I&PweAB`emNTXPXLXU^YB;znAJB3;;ZlWV`Y5vef&`|m zz!Z?ciWR(KU4C$R;j+H$)e}_T{-T9;)6Y>2 zlLSpS+&@Q^aC^O(t&rwvcP(|;#Lr>Tv;h{AU=dPn+Dc482Ez2Zm8f52GFQ4m zIq_BHeAzNsOW$PmXD$gXx>F~ze*)=I2*h7Xq00VjlANrBU_{G$&68vls&|P>iN$!A5nKxG?(MGT0*(Hui!$C6bdP+MS2MDxBt9UVmz_pD$ zJk_P@z6&}d(^8}zb!+;t-xlG!oR4ux@3+#QL98`djb2RPlhvp!0`pg+Wf9oBnp>62 z0LM2W7Xra+aC85=H0r*&eg#R|8r;edu;yWzC9;+en~Drl>frzu+2`K`HUWn(;`*?5 zq(RR&Dc!egkShUk+jVsfnmNOy^fm0}7Lrp?T3DkX`D1iV>4`&>6u6etJ|{uu{}6N{ zL6Sk>x)UE=8*8;BEc!o$J0L8VMs_VX$#llUaq3d)g9(4aP;_E1b_eqAUL^> zAppdNtwVGPR9%O15)kDaxDMs4j5T;-|3MQtG}7 zZz~D0Bw&BXhi!vy+94c7HA5`C(klOen_W6f{{h|*==cM?At1b&`vY!v2TNnF8*Qb& zAwmU(hwF(5=>dXJd-4MUBsGdaQ>l1jet2D+Giqd)Ff{ zqi}ZJ1^#t`$PLJ1s`S#G#a!sB8;}J7k;SkL$b!zMZoo1VfCwqYh?bdpsroV#DTo~Z z*nm60-1E4KZNw!VK&XGG*Fb)cbqT(d0(Xa{q-{5%!ycDOgQSML!$P2USOU~xLtU!w zQk;dve-lbUpu#3}O#(Ta5F-MEHX%j?=59jQ{0l&IO#;+4Q~!}!ySrx53;CsXEUe*_g*8OBI)PXiTLQkO?+F_5foL=5^2TUp$nb zOtSm2?kL45(^jmJ)t0%s z!=&>DM5E#E5UJzKjomZ*(R8Bc*2T|6)et6gEj(On)TtpL=V6N?wiunM3 z9|(6P5bt!&;vv?`{K&OZgTB{8NH+?tvhdZjCnx<_t|aLerj_W}rtWYgv z2cMzDFT;M99lV}$^ZO+2&mFjjXaW$u6O&^CX**GI1X}Lo6;hW=yR-~ueQhqDX1(Ia zn!a4&$2=qzOmQr|*g8M99SJw=IhLL@Om%qi!K4g?E|8kF(J{W@8f+_ zS4ow(+m(mJ-LCc`Vak4PSMCAy-p{8g(JS$Rq5Zh;$O5QvfJemwpkR#A8=y4!tMz=@ z;A>cV$UW`HNUQ4sUQw9@Fzo=^iw3ay0Q_DFa1{mw_~!t&QEr!(=rd$#eICHX1ZvyR zt9+2F${zrq9OO}P0F)sUT^2vCV^2-PO#$ieXsa+t^EMsisV3#mRT#PtAx{D!KS@yi zCtjh>>s7i5n)+H5uQ2rbwQ&neU`C%X3vJFQroFksNYKovrPl(1gq^jiXalWc$BISz;ujrnATw1=rP_- zu>(XM=M9uP0Ns!C&m)$u(JfYl-Lw`Dk#loY99Zq&QC;68yiCvc70 z3o!Bouc8!Ni(fE1fd>Zw!aLV>Iia~PyT2ZH6hA)kV+DoJn)$NJ;G6z|R_+qIui3HE z6!m_`k5Ih})wI8HNRNB&$Bg2D7p7viN+7k|Q{1ApK8dS1X_ar?3E58)t=1WBso=K#kKFJqWZp&5tS*&!C6>3}Xb; zpSeBu;2Ax-W#Kb<^`w*^+iSz*;`!J93_@+;&+zJm)S~Hum|Xl0$#F77;K9%Eia^*I zctxP<8F)pY{Tb|4eE=}!4E!Ll>I^P_1P+4sW)hS@VPOhDX(B%ej->8$2i zSSQf=EUXg{WuAW)+JQLRMzjj>>sekpZPHo2U>)IdXQllN-;uOQIlESdnT4LyMK%yh zTT|kOvVN>N`0O&eP^)=MI@;?dqL2=iW#^DRfkWpI1p<%H;bsW{ zTF}Ekx>?f7YXi?>sf-k=o#zS82hu-!V}s|C2W3bepHA~M%fgY{F=D^L17;5~eGWfX|DDN}uv!Pk zQZC@_fe!#CT|g%#u=WB5F#?w_;A%v`{0o9iK>U=S^A{BU6P&gA1v6*>DgrBwe`rgI z8@l?kXX5)4iO6V#l)7i|GbKUeGq2hW4?^Pb{fQtP#P=s4rteP_*RKA820&*Ie?bEv z5PT6%5U6^QCp(r(JJhQYE$dQ>)B^n8lu-bGtSi9bFQH`#Gh2()3oqgpu=jd=ZR8^M z#oIRE#hgpLT&1XudNF8sr&7%vobcs3Gpiy=8qt*M<{}9P9Qe7vjkxE#gq1J?A76rZ z?*h!b#M@QXRofH_5sLMckLJNWvu;QrPN*fe@Q~r{(0zn);`2~?SFO^wNGc0t|Gn!)?9@X z1kPRMO?sExq-RSnAn`rDF{Yxn66)ZPEF~foUS5T)tw44&b;FS*Ji>1cI-~+sbYOs2 zgw=1Y8TZ5V!+{H!?ThKqZ9fY;YBzV!!)xXvr(Hj+Q; zMouY7=4k5&uxuTUgVQMLY-&6CEeQ-T8X#Fh z-V`(ID|3z4_FqS%)av31$#vei_a@1=LK40@#gZSQol^4uhUlPF_#Ywi5Qz{SM}{Iq z1Vo6=0$jR*5Iq18A$ko^_E&yFnTS}u_?3U8>;)L~8?T<&eurL@G!3ax+b7&`$Y7*%xoI<-mRkHoe>U00t}CpgZV;D!{@!$ezINJD7U`%)W=u z!@atLuhX@bE>M#|xoz*BMj4mG3Itl^yS$j%S!&Q|}eUVVw)Oyc%`@Ij5P@6^TAlRBFkk8X$e$eed1*$5<$ zTj0xPf=+nU3O`J`OIN4KdDcynUzVwH(bnk4>E9RkXVzVq9zWm%Lq9iY36DoWvg83g zzIhPORv+*aWfvUEHzYcZkV^2*2@kb}JUePtWrw6?fu7O?(qDt-ecZNX}S~lOOJU@^heUnwd;q82fL(>at0x!_ zjstx7CmJ__Ie((B6WIAD#)IDg9{gRV}=3r`3t@i znEV$nRR{q2G4ZlXh}Nl2R&@82bc_$>4ZO#gQ9xiXyxf=VqH!Tvrl1+EqvQ%XhIp{| zpex1@uv*P$=)weAKZ9pBfHBYD8G-MgAut5Q1pe1&ymZMlX`R+9vdWtMtd~T0pmC$Y zo}|3efAdI_vI0qJKF8~;08}V3*9guqmrVR>r7ydVjT8wxe)M7+rIbE{5uAn}XWd&% zag*eJa0zn>+s`1e>l_V!7tC&iS>*u0<>z=@c3fJZDP?8_m~5JgU2aA;xF%lj#ipda zx+65E;Ma~vLN)y&HW0dax|RiZ#IH_>U4=$A?LVlc1q`O~(HSAl&~U(atWWY~)5y}t zkQzn7ov~H!2KpqiM#@nGieht< z2kQ-1?DhgnlTrPNzrMK%6m5iz)ONk*MI-hboXg)0c^EqPU-Np=(Q@QXh6(PxjfG6t zZb(S9?0>MlL7@LXn2J>fnDP(q&F=!N_=iU|0uY%~kPB>w^!iB`(V%JA4jC-zE|g!u zeP8C@5($YG_AifZ6e6%o{&nyksL?pa(f$k?;QbY z3P=sTDP33)r6^bs1Qd)S(t9r|Uj-=wO2-C@QvT07J9pWG-#?!Z$8*p7&dfXS%sVqX zJGToJI`~)uE%&)c5260tqf0=hRGfQ^K&DflII2aaiE^o)6_0TPt3AfeC8pHcamRd- zfVLF0g2Hx@49^ot63j+}93BHe1>&Rt-T?TzvEUkR%(OoFiII`U z&jz_%diOZaEqKXMwE(y(4Qc$m&wG#jnFBXJY_ zv+dyXE0mU>r`!#VKtmg8&f(bd7R9*GK(BmLQq3JHz0)=Q8)A-iUjN(>UU ztGApf-3FNBEg!VpKB0MH5Onzsk8i!P<$4VNAi?`ymd)3$zLdp{$) zjNMc?&+C*XtA;NXHy^;NKlsT_>lO$xCCz;-B^R#76StPo?(b#Xc+g7&>5hbCFjm}= zfV8}azl=K)`KNKMWrS@6b{ORZ4z3zyycrfuPyjkOfy@B8pVS0kNdRg@;Hv;RIl1L& z%|>cq?cPDxv)FsiH*~v%|Ln8y0TtE9BsY;p05mhn>C#+)aV8W+V6{n(Pgy3inLt(T zcOAa>U`7Z=yde=$dypf;y!>o znV!#`Cq?EPy1WPHlo&SP6MwepB0IWig@nhc4wqnxi{~Du+XdXd>1QG<%q}u?b(aHm zwX+!&oDDF^EO(K<0k~q8Uy=?2WLAq0n z>ds&}D%7P#!!O_Qy$8wNVDvx&*o}|KTM}tx4QNO@gb%RLtT?FkEx5vuko6_fpo3bJ zu5D%XZUTJyJHN6VE&YXWpSr-Y%5qe5Fgz>Q592Rds!S8H9%&k>RtH?nTed}5UBQSx9RbUJOZp^kS^0|b@A~RYV7XOGNX4Y@w zjqFzdd+etH3}W^35cFXJmqO%Ziz`7TDm}HDk)6iyY%jnQmPsWc6uNByN<-yHsonRu zi9$?gfF+?ArwD8hg%t#@hRV6c6TjE$-W>TUd!+bGzjPy;a1c9S_3)vW25$BW%54YI zp3+=m(~v>4s%_ihEC##uuS;vyAKkYKobg z&iCzy(oRZ$5a4zgtR+x69M%%BhRa!@AByyJ>0%m)gOwoEG2yaB3cyVAcDNk<3IK$R zxf-+61AkVP?y~g5U6$vC3m}{hzI78!O<^LXy9dS#g15ByLo5TKTD%G$++c{c+a^U3 zXleT9h(Jpd7!(1k3GkNwAVS6+E0I|$Y*Y40K82T%;UF@s2p@VW#Yok^{aG^-ZbWGi zs?U%|XqL#sy|eogBw3MgJ^_9*XA%;+4>J-wA`&(cP$OXz0dCW2O7+co%vOBqqVESnu2Ilj6l0+Oa}zUM9b+N(nX1lMGXpRhb{nD z)z1s!=}KEq7T0*5v3AKtXbV<-5{<5m1ZsE;20tf2-58iapht`xZv^1JOH?PqG5JRCJq=u{FX(YAx+$mA3em% z^&7ppU(=%=Xj*89DcDk%9)h+DpZ2c!(94VW8e$8EaQRq#BC1xlFyMLp*v5*L^QCtH z&c|Ye2UrrP{jVm)$<3tqAsH2i6(xb?F0eCBE@-()luwuU{J475Nq^RGCPoK3uCABz z)0~Q2w-2Kmu^jhPY7H{!Z=O9D_JmU1h#`|?gFEdz*qQ}obhRRetxgy~peiD>~ z?TUPS*z{s+M~F%Ut6oT!>q$?LUwn!j+O>wLRCQ!S+qC!(9lggp0c^Oa-Af>p6^3}5 zp0JKab!S4$lRXA@30V7q9G-!?Fa^dVq54&d+*{hc4W*`H$w0sk5COnTq}$TH?s|pT z4-E}q=OG=Iiq<9YmJ5`-z>leNf*m5BFb|)_lk;JS2Q&Y9rfvKRP$xeSsPD0y74TeJFm|;VLwksprx#W!y#`AEwCzrRcA5 zlqy}0&rbPTs~W9Q1NWPv3;ZyY+4O92C>Z-E$PKLedAi&{8U^quU5<&^C{ojfjC(V` z9MT#Ya(JEpgp~U53w!ro+qHsen~{WtpUm@TKVefJe>U58tbjA*K9Pz}tGHV*4B3x; zNU-WNlrTUqmaqEcHp7OzeINGS^#ae$cn^ukX1q(nU4iSa+=x#wRGz>_JS6JGOgTQ` zfG~&ZtK9Yu&zH*lSDGuq=!`<_Vw`~9o=n74e}EgAa*S=LNWhPa9`TOLoVCE8nW35+ zg%8^ZA*Q9bV>d)8VC{Qx4+avoqy{d%o&e0QAxG5#Am8xE5YZx|!CN?uiKfXLgOBHh zCJ5(|FdG3vSzM_hw+nS?xz|YH-(aZBLdPI5FiTEK0^p_40)aN{`7bD{E%vYY1qG>Y z%|fIRxR531TQ-O^9g)USfLc7p@4_;cgnKba)XZ$;{{?`YjVnL{df<#~gd2f%*_cfT zoXD1^6l9AiBmdLr;PhYU#hjt|m}*!y-ivw2hx%1#wtOU=o+B3}FBf-2c~ZI~swbR( zAu%!PFFA6mR2zvZ=VCG-kdX^h2$T|N05B|9ZW+^Dm@*iqIEN(T6BX)U_hKI)mrJ=A zR0urD#Z0mTASw^-1HkpDsnI@}pR4}tXCx`zgpcQiVh3a_5t9fP}rb-a^EVHSmuJI{%j=xzi=YeM)_zT0)z7994QrdR#xVt#st2~ z$6R^pGM+@7FZYmc1IRUTwLzd?P59se!0ejx^0KN|w31R#Qq1Q!yqQ6oYA^-k9g5R_ zF)+PUnr5h+@x^mwce}SS!-xxHy=M0wUeTq#Z6yz~+lH{rN{w);41C6ML@-ZLhGMDc z+&Kng=8p|=t`CyZng~f(hUDnn)!`XC|L4gC4m5<8PJfOxbupGcMkwnOo8C8;CKpr~ zLm8U3*C?Hs4K7nupGg02jW&HkM`3*<`wUv8m1^*R)s1J+g)ZOwMWLi*ist$YRu=ks_)lA;5NOIU4E&S zT*)AHMmE1&v34d9QXA_b0B#^(o7|I)Y!&TGwnz?SE(!0hSPvyQjjRWFz8<3V!)l}R z5tvgO783ZdHhN({fFrf#n3xG7Yr60%@><}(s1hC)`)5WVgFy8v!d@4F%p%m2fLw%j zAke=^t{w)!?V`lJ%r(}dnj~9YB!_aPFN?6e`veucRwVZ{NJk-SYD2{c47ACK7J!P1 zZBcLpISUn2UJhcUvfd^~)pn`y8am8%tKGv&udd-=eA@Ifs~ySR{eY4`vtdU0UX;LF z`$8)t>xdHEf3}~YSFa8{L!eU~Of3W^)j|6bc&84AA_Cj$$njwSJS81(=v8ej?l1H7 zztxdLjc%E`sW}efk6Y3-Jc9kK=_f(Iz-BPopS+3{%n7Lowo zuPfW?0`RP z$4~8yEIb!28jS>`GQI@ehX6O%rAw8vz6@QrxukNcM2;`X5ytW6`wNyOB0Kk=eOOE& z>m^j^7R`Xl-aZA>LFTpABx+7QIjo6Zg|6G3q)|29Gc5^ff}3hM_Jfx@SGok@8*cq! z(wutmAc0Nw(6I?zs3%vi0>DioBk73c*^b%~OHxRyFV~Rv0d%M@ua_KwiKMbw^}L6PBa@24fHlJ&);P5I!JMS32ah(2sa-$D zZ)OO$flwzYupXd%r6M~FQo%J?P>O;Hn42MJ0HDtp51KBcbkhc@G;4;SAuy zLNTzOud!f8zaTv26(2T;)Vj@4VFF#6%keez%DuAqG~+?BSt!7Mv0V_AqONN$=N1kU zhIq_09%L}C04tBh?-X9cq)~vG15&ke3v8CS)X16EA!CfJ8>IHdn1e}0X#vv+3~T|% z>vbLTN8?veG+#%G?AEt{<4Ko~?k-*K_!#KA9ZxFHTHxN+D7|}|!@AS@$(fb*M@Lxz z<;E>#n?zt*OBf6QQ?=H&Rv)jMj!0#9OBhVxQcD=D*L5@;r<;yQCB795CO`(4xOBO} zr(liSV7;WGr!0YrdsX=ka#_+!zAF6&Fs?OhAnx^l4|Ub0*=B4SVo*<7 zt4_oZ;9g*xf?e_gJ09#Bu=aZxg^-I{+6DnkU`!hXFo9KVP&`2S!8US&L9$%OjlD52 zjX*#<$Oz=Nle6vBuWLS~VGX9`KE<-#rYCzvm~a8)N%=<#N?p+ogDce4FWbQe0@vEX z1_A-?Q4WFJ_VQ-w4S?(I)GW^I>=)TQphhDiaTO^Z8E?e0L#K(G-GJEZF0-c zCpWAFS8~_zn+QnMtWI*6qE{h%FF;tjPSc>i!6+>R{odNkQ|UR5=_6xKz85ILTAi-Hvp=1!MsNR^Ilce*#-AG=v(J5 znEdVoeA-2>mIA;Fq_I8oqU2N8+sBSKZZ}+JWR(HzE9yv$lpl7H3nas@s9#q(x+VZm zMeV^ikAH$bf7Xd!(#z`JJoZM)@m*mdfz@5Hc^vd>cKPG3w0T?y)U@u{JO<#o(gK#h zI#qn9?GfwAHAd~pC$f$eo5vlH13md9a)^-8m7_I$Eq>>0!gdx|wNejs0Rm|~=%N9j zRS)!qTL5J}9~rlb{@tgmvGdJL82b-0pG>|{Lw?swmcGv zDKy<1t{Ks5z1R}uZ|{jdO`vm6T$1-AT5 zPr16E)ZK;?;4jM`M=Y^v{;34TjH-r&41WwjZ`Q#@{Qx;u`U+}44#1r|0@6U#l0c1t za%RJ|BB37=rVjLp%N=>cz-)T9r=jf>aL9M_Z39~`^l927eH#e%-GQhEfv*Q*2k|;U z+8{WAK@-M^LEU@>QzHS>U<`Nw$Wu&>Y5)0DTv3sVb1<%`Tq@*D ze_T<;=&q>rGOLQ@?lF*(uN;gkD!)2f34Bg8J@$ESP7Hy&t_((BAn@N{RDeMI5L{6a zC?0|#mq7a=a$F4nZY^yB^orqAod;Dh)lrf)L*(3uRFTAEsspLs9Rl|eFb#!62-FxV zhgWmy)AZ(_WiS=~`^1NB!t7SM5R(n5^%;swY`vPJ4OHASn@hsog-h&c2;G-nl%6IJ zUfv~?$HAka=zjSS#SBA4DgY(JFdP!-I}AOEz>HyXTrmKzKi{8}48H7ljHnsU@ET>k zgv`!7j6+&c7?n$n*sh=qt_*|OdNoHPRElZWk`=f8oWc`=xgW#1ZZ!<0>E8Bc3R)}*S+AHRANWKf))VvMqme`3qbb~ z$cDg}5$Ib4c;6zhZ3HqVaBc+p768wf_pM62Z+TD^eT$M*ABny-TqN=6TOidzBhj}A z%pQqWbE)waQ;Es9V#TDF@XqE7sk^gL2G>TS)%0qP9s#};oy{e2b+!};-JOln^Ug+~ z>nQkv!0V&nqVWLBN1?N+06RxvxkTXUC^Q0r_}8IKpy+i}gh2b((JTbYAc_ZYHv(>} zWj+k_t>`SI#XE~$%eoyZ?#@CgcV34b?*UXAE#JpHC)OGS;>Msb0{rHBhcR+Y*WkKZ zi8RT&7aV%hQ63IzDl)YEAGp#ye1KPzCd;{zB_b_V+xf8p>-dyLz6`87 zWHLIh1>nuea&#>KUIvAjaUI@g`*~(Cn@C0ICDt2Y-=snY<3$&g_~K-=IKYxAvO{VK zLYaaF?*K4xiX2m`hsd@MvaQk;+1APmX2%9%8QM!odO>0x5B56PjCbl_Tt?y@$i+h? z;;K)fF*}$gyn}7Hw?$gI4{mJ+_9d`*f_E@$4S>r`lJ_+({TO|0QqT$XSoXo=Lr|+B}InzZU<1(@zc;$1m2w{C*@ohdDK8Y zRZek!7USWHlEVuP5ydB)Vwp`11&LaBy4*`D0$4j; z&gI~T>8J^qB{Q`D)sz|NbTU+w8FEx?J6(1~hE6w!)1r>qmo)TcU7#~<1~x>70USm0 z%y~kY?hjS@$}6a}NdaSe(l^>z`Vs5{$FrA~AI>Sa&Xn6FNvmq($q^gmV(BY@Qyb8q z2;6mnfKPEC>02;#4NwJu%-~0VY18V_k7~U_EOkkNhw0-_5vCV~7L7;lFx8U|^93I* zOg-2i&--X$>cOr8>kd;$)R7wzrUc&G2#*msv=Kf8D8Ii^c1luCF_w3qqe%&L{T%mj zti_t$?t3_OAUXUwW(R;J2b)GL*@AUAk-=N!xGDf1)g1n-R!vgi)f}`%9x9b!adT-4 zifIh+Yzxg#05MwysJ#`(i%NBCHoha+8Y=y_qF?|jSY5dlB@?@GE25CV>8+>@0Y2!M zzL1Ok9o=tf7A3y8~L9e|g9a0f~!_S_DXPT|0G@&kNT>I1T(%L#4`i zvc5>_HnK=poFjXyku8L-b0t3bPsJhTZSmtCv<1GXxAwq%0)cyBJ^|hqjrYp?rRMl% z-X|AHodM*1uoQq>N(&3JR4&K)$wsjBQxx#LZ~=tJxuviE=EZu8r0%d7ptm&iOC$S{ zEdAAGDa72;+xuWCzNr80gQWy4`(Y^oZfU#yazkkZzOC4gRW5;T`*HcZ0pPd&2oC~5 z2hg6MiSlT<#oO};B(?)+PXH<^FLRrb{fYUxbS7qMki4qYZtnZ62cY4;&r0dn9)K+b zxGk4Zj&us&o*Y2Q1fmY&ZXf{93R58W+NrN~?fbmYce}oQ|0j~V+xHJaR6<^kSeVGz1w7ee*fA;j)hfFXwwy95>Nr3;9KK2M&Y#YASIRYOO=y(LJyIa`kcGQoM%pzR^h}H-^`vxAMZ>Nr6 z+y&r`LXM>ArRE;(o(L&K9>tFv;_u?^5l2yd0Io^D)TK_pcaM>^pj-F1@R2NpV(U8d zA%xFJc>MnmrtLLWoCrWlb>~skfxv~Ma=ZLok(WC}Y6*h+po8r*;-|3)k#?>SftZKL zgkz`}zNmALp=k+hItG^!;N9}pF*Iulz6Bf?ApJO8)==c`4v5ZB>2Mq_1K=6YKaPxv zU3DBD1K@t(5dn`4IG}lq6nHt0kK?tqL-B3T39OS|1Gs%cj_L@&(*+Cv*$(1SLCxW! z0(?9#oD89Zgc1LT@DPMGNH`cbB`N=ICs7Yq7PPm)1A77_b5Ei_5!ieZ{fWR&C()k> zNT=W&0^I02r%>Uk_}2LpLKT49NTbP- zf*`vb=b-yDbe;F{!G~hK*d3}5PT|fpBx>MkG$nzo)3BC6o6{K9Rsp)pahSCHzs zCs5lA5d2h*%m?5#qorNq*SHo~eanZ{?~e7lUQ%2NChv`Ij8VeQPvIK^@A$BXIH6<%t8RHJXG;Wrc`C;j?-P2|bnzvr18>HNHh6z_+_`#qhFIB4F}na07m zp3Zow2%?q55IEY?iP;|DZck@5sRW>MFK0DNV?WK)Hthd7dav+igMY>zFtSsV+%^P(Zm@UtN-v*bN*_NX(`*xvBVE-&ljeAOU*4DAPfopCk* zu1&ks{y5rPF1}OfS+9How*_FYSHWxo?@pf=Dd+&IHEq4OwmS`0E$fFm5?I#H znIhc+*xL_{*3KX2EBZMxNdN@)cP3gg{52zdkcA_1qc?vRFSe?c0l7l3hqGdXm=(4`hL(38Cv z`)8Lo7~q^*N!sOu2psK{IfxkJtRbBQ^U@e3Copgf`p-px`6ME+%f(zD<4lyUfC(In zF8nJ%&R8_&Z2*K$Rkhn#L=1hS_z8Y{mN&nzl7XEIM(kTi)$|V^t))y9M+I--7w!Kd zjy%}@v+=zA7ucF$JA&oW3Vrn{vP*F#q?_;F758*bLYeOA@Uls{@i=Go{?A0&PsxG( zQFediXaC<}U*?ijB6s0&_llu)*)+&P4tmNc3?bt|s87?&+Z}^mzPQ*N=Zs4RKyKP& zJiWrbV(WT8s*4A18Cv_`7Y6*#W`=Iqc!VbaXWZdA_DxrKrut@=4;fG4*#O$tCm=il zxHb))6rQExJB{7em?a`S^{fcbuE>Fh=c^(G56|96!EYXcRfm+JMF|XB^iqm68Q}9W zgy&s=OJxYT?EsI<5T3h57Cc5;FVn>cBx;?B(A@{naU#MKfE&!i^Ka<7yFIBanTYV5 zBUC)Y^9f9IhbL6j>k|>43-v{>QFTS@B@~|LAasZ4Vx1Kfo}Voh;aLX2!&9$eZ35P9 zr(UAYoP_X<61lm<^AADLEbch;HeN|by=xVoSPzN%{UpTB1Ar%!5T1b|w%y@b8G~@G z$=$F9<#udaH_8JFZrNWHWoR1pvEKqb{{Z#k=%)f6TBQ^~`-d9#2J+@JmE zkS}vdXilU+&8!P)v#BCf^-?}#213e%RWIok;SSbXq9BSppIAdw-3U8^Q=PupX_g>U z)x~f~3BdNn&SC=P|1Ne;H*_5-($P=ZO=%$o=jd#!_W*D9GeBNT%#L~uiqT0T1)oA~ z(BxC7o)s}V52f)KT_aNP7@dj~JVwE)K}!*%1X7k_3jG|Q#Zts*j5lsPFGbwl2J`k( zbcWvmc9SxJ^CbEc;Gd-kNdVX`X3X%xx~@(tHJ2g39RS^zq2Cdhvdo!Sv{xkJF~4u1 zF7Wgc3cSA|bO+u6q`$HZg#uI*+Ha7qP*SnH?M%yZ3Ke%)RrA);kgFXxU}!S+h5GIB z;wselwYO2tEP&+zp|a3*hgEa$?DDg3J3GZmIsci}+-=U1YOnoA#}mf*1RiS0fR zs=3}Z!`WQ=2TXkXMpe~SJDdUh+lC!j5fgoK zhqHlXd~8;$?sS$&RRP-XME(SFk2*utxjUgq-!|=Z7Dk0Xu5g#Lbvmx=y5qwJddV)B zhyT^6UCvAnn(lJeu;>$5`!r`2Kl~-#MZ26eEjE!SKUG)U0?#r$jsPyNg100>+g@igX)c(+eQ*kaEEj0L z&pAO_2j=uX6i$G9&u>2z>08=D)!<5e;Q5WrpKMCyF4}a=) ztxdY?{7EW-2jI_dMJY70IxIbO{)9yBa=@7_1w1pW^A4bTzrb-@4miyQOX?G?W%+W_ zFpyPv84~rhB*X2aDk&p)U;G2sz-?~m*J-oNM!S1L%TrVbs_uGJDQbpw;`QP*(!R({Ky{>uGdzeG2R1(YkIkNTgrEBXymHa`r!)be*Cpo%(hPvW%g(4;0Pp|~jpAPvE(0x+hGPhnU3SJ>{ua4ZLoN=-iXhh32Xn>3gN*$PmF=WU;NoShupbLu zek`lu${;o_54y{aFb0VlcLmcqfk`)=Q5{{nbQH+C3A*l;t6q}g{vFOusJKr|`V7{p z#>eA?RY7bP3Zg$-=-?c6(-kxrfl9ZWQ5Kuf#l*>qqy@XYZZE^*?I!-~%OFt=Kcm|b zNckD_6M<!u4039~Mm! z38^71c-O;EYl7J6H!(2PIOWUqLf*>jAmyzLi8|*RTtVQ&YiK9}hp(Ygmxvtsi1OM8 zI8PiP8g&^|e6K^7K0TlXe>NoxZSVa3|OpI@cu zh1NYt=5A}s{G00t%MSrAqm-guq7>e={XPm}&0t!dvzZ^$ODqS%`mo24h(Fssq|f~Y zl_enmf<`4U>=!4Vasn{lC0h3j3M1yYi}@8y7dAwzTMF`XM6L^B6TU=y@1e5iDSEZRVi3c;&Oao*JoZ59-KEMNA3Nq^Cc+-VB@c7&K!}Wt2x6q1hLw# z=F|&$b6#C9niCRr{teWS0FO}uh|xIp_6=u<)EM6kH_>tgs^7%o_a#vf4U>*Gn{?sm zl2GtbQ_h6Y-INgW5S0k5xQP-8e0kFuU#o@4kuRt7H|yfAzmQ->z#M%c8H!;d?-jgZ z77{HG=L;1Ph)WIbK!ikXd<$(xV9+fDB7q~f&{XRH?%r~SCjcO8_!IyBkGLZ}9(UUS zn%qX*y$!(Q4uGfhh&w&0#U1IF-$vY>0Qmj3^F!%JfaP~Ek^=A?+#_lD7ot)05=Y4v z-AGD_@7zIi5HR0$<|X~6tAPaz^!M=)j>4N?2C+{8^1d1A$DpD1xr>(jL#XnWoAs5h z@P0#p zRrfLK0dU{Z%?cXzLhu|^o1QF=6O4N0zO!2FD?+~#^rLgVee%7_W*Sy*yN6T|sqw#I zNE!#w?R*sz+3(I9mL{)hw(`eGeswsA&HM>(WA^>T#2`_3{{asYxaIC7SzcBfda%R?DBnrnmiA5hVRJR-UN=#2m zGqC-tC#*K4oc`OHU~vk4s)u#?w?WK%Kd$>b!Xil2;D1n6y^5%+p0fUl@_AJ~*ssCz zs_I#-s$jILuJ{L4?I|qqtZF~#9RA0dAx#JP`ya#)f!Igr&GRVvBQyqqPLEI<0%KiZ z`6GlhG20(GmqkY}(L5E5`Z;?1s6_`{xeE$I|3xMQX8-GqZwCM!?S~ZB)#rm4@4g=F zO|ZQCda$)Gi0-RrweAZ>HT>snqJ)mrGN&Mw))}f4eDOLSJy8!I9+E6WR6%c$Ha%;t z`cn`aM*3r3<@)O4|KJ9ws9*l)v$&w3ubTKl)LlsVqg<0N25FCS z)vH*$faR~M_Fxx)D^k5Od;EuLcYB;biNz;a6zK!dckSE9M1-jJxd zPn_{(9xA3JvsOC~wk}v+I}dggSpKY9J*!pKgK@uyThAH{0YL@B2H=6cr=B<~E58dn z=}3q42^`UDG%9uv4eBAWq3tU}V$-wM!!RV4^vMyBs98_p2m){f-t93SQ`b{;V*+nL zR0e=@v<17ha*C+32ipiNud)X_9xSi2p4F=C!MLleXDg~~d8K(Ee?7b850mWAoZ*oG z+@w%^O76F@lXx)1TyN$x)QTA1ygQzudBa628W*fXQgzJ>iFzFgGW9BL{dv#TQ`Yb_ zQBkmqbCr+`y;Q532ji|9=?_ujq^FB>7B5inX5rB}i@#CuVqyG$S&8BQKU2aZ@txNU zyOGTLj=!08{1j6jST)meSU9+BK)%F0 zb1`vVN@`ux7_Ed>$Rhe1LmHp=^dz765`|U~*%4+mYx5phb-I_5BoX-3OPOuS7J7UI z)!JmPm^UC%+ek`viNIJFSS=}uoH^tI_gx^&TS=9gLb;wdW=aB`yp{Mc0N9|7qGGZj z*#d8PUoW#>H=DKjLC7 z&09%{C^$!xSx;v@ZrZ^u!f1%Q{+6ra&`eM2iM4oNv)`GB8> zK7(>{0D3n8B|u3nOP!#l;tf1CTi3vP32$ISP0_%GP~#1(R}odyQ`Q?Cssv&nA~47WDpy8x67xx*k|6a5I7O>t0=ELut^nNMy0x&Lvd;Ng zED$}|Heh+>^{m#eV6+9|>p@DD$TE?=XUtE9&ig^iDa#2VrW<&Uske2tfkd5eMr{ae zbb%9Q)P|UQW+lOLLub47%pKkO7ZSBbB~(wZBHC6@S<{h<2d@YF2Q1;$)3aLjz^JP$ zDX|h8m80&dq-4}h9i@2?JMJv{TSGi=Rz1m^RZm#!+!f6VR?Q5iW)+$6X0864&JmD^ zW(Cli6+mlNfZWP(M1PT*UkD8QUFQf$)S;EBopmb05qipc7-e!tc(4n=YVE8`F4`G6 z^J|``m8qSD{JD09PFfYkQujk4o=86W!H~dxq$jzL^n|t2AHqjq)oE4WqXQz71nMjg z{?hpf5;ZdforQo5V07tLQTfFn@v}n^05PP>EA*9_GQ zuRy2DKbQjE)uigKPz;uOHS4s$gV=FM?bC5-4~hC$D27M^(N!_F_W-b0Ma>Dcud2k< z2jE50HkEHBV_mPi>rAZR5kBmz@Zlk*S5kOwBl!W6zoN<2FI+kQP!)kmIX|k3scAHT zB@AT|s1>Hf4*=k0ksI22@vAdEWj*{zT%CEaqrmdb1wE@>op~@Vu-#x+v6l^2-5sXX zknRHfP8JX_g)2Fdgq52;9F7PC=n;;-Kwx?}%q6hS#heU>*NA!OVxl9IG)pD19HbVD z{>zY9u#;NDfe%R39uZ22hl+Lifgm=9RH!vbWkCeWCa@(!sb-B3*^%#QTC(YhVqRwt zhHt2VQG+6tw7RuK>XBs3KZX<@PI{7ulb*1)l*GakEFL6`aB3?u;d@Wxe0A$dNYvl5 zo5x55D&+`}mDAk9nK4mt-e8DUM!~@ZzKTL10l*yXH(DZ)^prKhPfVj8>@5_`14++n zfdobiq$bfAVWx@fJp*YrbcRPOPc5&E)k^1QAo@n>Y6FQnCkBH9f%O1Jm##@09EiUi zgF4Lw2)3Y31kx?269BIh@3z`bk)E;!MvFRmu-~G1UMD@P)d>tOk0aG`ixLv~t}gqE zouc=kbJe0`M;sPn8XBrSG6dS+-eh9mlWno+qXb&SVj*wC0%Ke(u6PKn0B8ch&8A(2 zo`wzsF5y)jdd@it4E@;}3r&84W(}4!Q>LNM{(?RWiRvAvBu0){QsLR+uf{{%Z>x!c zRqMqm%_1j=$fgU#;>KekUb@-Dz^Wg|DfOgH0C(e*Nz!qEVe#-XfhF;{S~(4{Jzg0u z-9b%qt3gEI_XNDxd_Xm&lJpzCjjM)W{uqkut0_aI$GEtNO;92^C`wSGBndjmBT^lj zpmdN1VLgb9ss_)(#pCxdBd-!Zh()f|rJ(@GFv;8Ik1KPo0BQ!F=WtJ#_rU}i^9 z1N_{v+{C&I*NlTGdV*BB@EqK;1%kZcPkdQ_xMzNK*gP3vYjrHc-vRikx)PoXfF#;g zd?dXx@@XKoplyxdt@z^1`U zJE-97cN9$YXKN=6e-~e@2Vr;zc-PiVu#1TeYGh{pi0voXImEUCJA&9Df}Mt+%`)pU z(33%Dyn7lq|KOfY88Df^Nf)@6f$%N^6P&3;#LgGV>4z!S@Wy5~52;y(dYrMf&}p0r zH*ExXB~wXiwOc6DOcVKycX;9ZP0TEAK8hQDhA|H*y|?5CNEg3F4PiSiQdY;8;)C;$ zVh(u*8DGy-;_4Ml)*MHHA6VI|a=!P1kGxi1T7(f`*l&1oi4fD}eB>g(Oila-BzE=} z7pskGC`%*W6?%M-Q@jH0zn?O)k09riQT9{coyzIvw_??lfT+hL}f^?0! z2;`*zS-F^4mIJ($i+T|lkc)PD7hnO22z-*OL=^#`VC_(}iEeDS;)mX}J8XKPHK2{T z;>I?mf0nDn*ZM%0-Z2g;?zi}C6cQTyts5bE6Ah6U_Q1#>QQPJznbHA(X?coG={Qxh zf^-vpmO?AM=ON+V+X}~iEcEFTB;l%*TA>e#YR*?$mK_i(9ZBUEscK7v2$Anh^VqGzB6(KRs${SHu%z%zh;HI*z&y=j`8c(rdxX%*FmME$I$@=E?Lp+X(p zvmbg$-2L!461FT*3Zy>)W)~<6q|E8O@2A+?P1j1JMQB2jWGsBv!^}QM-_1LC2`^F7 zNdxdq=z^YR_7iws2ME{>S0dbTw5tkPM)dNnTDiNYBA;xI)Dc=^95!J7(4a#w?sb5ig)U8mMTX{UC=cpWmzT<5eU3L9b8mKspT4rf02vhhb#|mOBm-^*fuAn0s9$q5GP*kgh09bqvctvm!Gqp)#Iw`0MTTzf?7*uF>Y(0F0luiC zbdfH@H(_?=CFw3e54$oUvZW{~of@khy}qa|ey0ys{l|`!1T1yY@NEG~>S8!0(6KJo z0D}Q0*Hvmt183txrLGeF3IKA^4t7wSEFEsHc!|;T!k!Rb_#G3+9R!6-=!Mi4dal6; zkrm%~Nr&o9s1`rO2Y-PO#A>|~7(w9W5{&x<-Y7x;C-8e>^AL4^i4t9HtjMPyGET_# zHWa@1s+sk`_>))vzL7zy8tP$gBM@5;AwmEl5-Uvu=vq%%CG8@e`Y3@w_4+7*fTO;W zE1d(FP#?(&EC&b$AP4Z@g7JF%0LkI{$e6&5`mmTla0BE=VBX8{F@aTsusDB~)V!)X zv4P?%{S0bW1Esrd?i*T$v=-}WXc>7IF97tzf=SOuU-7P7ka3J&!`ZSH{>%6SAq@pJ zsUhadH2_T;qDBM;G*n8Z8USB6M4J-02vI?122TqDKHAkBC)N4?M(RVDDWv65(+^`=%G zy8Y=GI>pTX#A(00zMBIWBx>Cz@FjuH03|M6TIX0VK-YcLOfRW8R#smQ2sD6w+SdW>oDk8rCW){J++|p~5)ylf zUaa10u0+^_=V}?zqC0Smm$`8AbTey;d$D=RT?1H@kkYb@!nXYkGb;w4XVipht^@4? zEwvON=6Urmkyqgw+@d9osSfy@z=sZuzy!`ZFs&1K*W zPta>^!y#WFV-*MhiFV7(+vIKH?|?Y|8P@ouQmIslE1RyXm32I_n98$Qrl&sxy@=E6 z_4Kcx-{bU7JstCgnQi9u89m(s^e#?c*U@I{bnquR{|{^$=2Sw0nf;dv-I>O(2<;eM@QSNq4Uiw zmGc{QytOIlTAbdarze1J%<1pu=PYTagxA9V6a)M*rrt%~LA1Ob2o{$H_ zH0yTAS8;iLJ^efAjht?&r;`_&*$z(k)YF|nALsONJv|@v1x`;EG%e6Gtoy;==KLbT z^SzFLLH|oM2Fc}N0qhVAp4S|c??r%5F%U|=n4}I9L*Pbp%!*9_j4hPtIxQAzm3EDS zK5ywp!RLi-AdICU@=lik2BF%c1%^lh6I$Rz836>U6tp!Fx0>8AtNJt>CB}PI5 z`7MyUPEBI&t4Ev&$a#H#QU}kGLi@=Aik(9vM)=IJkfV`~D zp`kFzy$eMuVQrMOxCcUox6D+i=ysuQp}?+ClI{b{ZUb8gY-$5r2%Kx9+)hY(ODlqp zQ+#J^_D8y%F^JV`ZIK0m;C8Udm4MId51{L|iBwv(gKkZLvUb?!YzDBLm=*vB+flm! z+-*ng0ub6>$(M%05=VO_x;p@`Y#n@36AW5mW?tCI$yjodF_(~E>^TGMn26_lt=zl- zV#~MBiE*{3iA$DHC(WpZy1kB4_P1C1OKSmgI-sElwCVuc2$XezZ3NbKfNcbhb-+EB z4FJzNpy3I`bX1~4w+bU^vBn$zBqVZ2v>t&09hIac0A3Gj5fffI^cPP27rwLF%%0KF ze|j4zscz|rf(V@Nh}UrRfHwj=VNpULy^|7E2Y}~78*k)|wx5_;#JK=gdL6ZK32D!d zgpVQo539z~Lz+;Xge-VoD*!@=ioD#*{xK-!SSJ`wU`1agBCqCpGh2`S%hF$uFb0;F zO;-i(8mxhay9Si5pfhSffcNPkol)X!e0vk141nj5DhwR6!OVt`^#i|W?0I2*2;W$W z8FCALv#?O4q}i7{c)iXTYpqYsY$;TW*W!ckwCcqcJS3`M32LEk>Z|yw8C|f)47pm| z1q)LGUAn+z0^DS^ixL&TO=KS|EM2%!=Sm3G)6kL#+ye-8sk>dd50aR!a3ulm$|K0Z z?MkrR5gx8A+N5(OrJL3jb`juq?d+;V6&w)>6E(XE4v_a2VaN1&!N(-{9Bzd`HFs0O zLNAJ>ZX0hvV(kVS36PEIkZy1deJkq**AQ6U4JHuaCYbam7x5V|`m!{BQ8$jspsK-P~ zcSrq2XN=Xl^ZAad7eCigqk5t>AXn3SqBRIOd%|P_+~ny!(NX^r*$0b8ShP#$N(j|m z(2@xJ1Q6;{cf0Z_B&J?)B?0crqsYPCQNh0G%HrKRS5msydciIN+^$c1!GqqamXKa@ zi?OJpqdqTichu(vXDRlRTKTbHk(Jx#C_(V;iLgD`z@yl|>xz96t1J5|;cD03@F2db zgL}h+1m^dKr3AR8M|xuoau2=xc5fxR48Wt&lRq=FtJI(WLl`|T>QT!0TgJn6-*R#!LnRs7U9`@m#~)pz>9WCA<-z+?j4syO|B0~Szq)70_X`z z931EiGl;p-7iJLPW+e2(tn?DTmAF9He&}b!jO~X!2;k0Cl;1>bqP54Dulr#)XFfpJ z{>YHP#Qw;Tz=!>@o3jq!e19dXIRI}3nxn~jpF=o52*0&n^3cd!LU&hKFSKdhXgz)q zXW+=s<6VA+SZ(w&szTtEmr*hSzVAc8weJ(6o_|?sXGsu^wi%g)IwhZi1?1AM*e-!Y zZ8ks&i_xo4w{Axoi9%x%G$c}edw|kUY7XE%5K9UIDFd;jAkb5u03T#Zg8@zsg7pM$3{qA~?*Yty1 zoe->=I~a#ZJjAOYzU49x61B%*n71Eb&R~>CVB=tv2vGk0U?tK^>RvTR{bQ(7BE1Gs zFbvvn0Q4A!TV=}t-W-O?tOnRjA_6}R!!;OzzlSMrO13cE9UhKbs7(O&4yT<}fE&Yc zglln}*4=0YnfR(Pt1#v70Cwv&TwMH_U}So!?*n7z?+*jmvWwm$cHg{Ikg{t{ZnZDFMz#21sC*siS^>Y0k}7%vFZ=6;?znXk&tFYhx17Q zJAhwIm0HpngG8P9ni8MvQlS-gC7f$Ae4dI&k8FePPJoPZGzaM(cn#Z*1a7?s7ZRvE zg4!G)e}q!KY^o@U-z^*VEPy#t*^G(U%F;`G>8BaBA>}{KU;r)XHx+u7wg!H>T~ApL zJ`K>0@q4iI!181KVCh(ncHCAw?Cw@n>n(DG)U?eM<|RYRx(?+Yf}cuTVvVs(NNDe& z3Vwf7c`CN!Y%5T&nj@9Q(iwp9Bhl&v)R7q234A#c=cKy+-mK8)g!!g|1K{#bP4IJPO#L{uX{FqSMP!AOtWeL6QYuGs2w_wFvra~yw~*A< zB^c;=!nszC`q}MS$5Lod#){v_KcD$~Hl>#6a#`tyW6>k%ZgH_s}?W$-t>hO;FXtruc zag2OGs*$-Qq?$O#7}#$#`UglgVKmOwJPgYzZ#i1YHdy`?x#vMIy)s_u{F&Lr&i{a$ zN06v1#wZ+FHgYGOkj?S`D_Bl zXkvbFF;6EbHmM3cQl|`Viw5XkhU5gMl_5ESk6p}(G9)MFflCxQQOSt^MVLl@O!zM{ zvwx6@J^Bc-!wh)EEK2J=QHhUQs?&<9Dy8JMJx0y4D;|+C5hW4WGZ9-c{g7hSF(u5~ zHa9+}yvih{zClWk&QaS`8h$>7)gj~&41v0M3YK<83znKwupA|Deu@&M3=qYXp_rc1 zf=!0Ky>R31G1gY2goH-9sD<81ctB9jiK;Y@EEN(Ob)Bb4|Nbn-z^e79qL5Vp16*L? zR8)LDn6IXy;=2GYO-1s7@$rwqqBJdFiXDyj8qA*E$QMM-+LDxLEBrjRO3 ze>PvS-YLNsN6oq>R@58MTx^05Uf}>NX%Br1>ZO^}@SvCNkn)Gf=_S2ha=-Aa74mI88?i#*_1Q{$sYgss`PtbD zUikGssLpRHaW(*MU@Shp@I1Kn;yXX)wy6M0UJ`-FTugzGp7B;n&%}L#^rz=2aTWl|RC^TbpHQJ& z#uB7hj6~ zR-n`r9F}#lFM;JzdPj>=+uC$oH;?x-~?m+ zYFeSxQ_@@~7)z^Rq*{m=CGhn^oM5~QFnAFb;F|!-7b&ULs*8jumBr9;t`AC0>?j@@ zpEn7|wjf>d78(@)tCqKLpmDUWoESRLxY%`|(L=&d1D!=KbCGcLTgvvLv;@sS>eb;m z(D-)?96P31rUQ+7A&=#KkUDUd(FTb+WHHtq1ZFLUp9ySOj2|2oh#YOm(fY6@rlF5< zA^0yg9;{Hgvl#UzU|xbgTO@Spo|vOrYZFV$LA0#@+sGhMn=L^V2@C@0=+fnfDds@e z9T|Fw!TpS;15j~4qp7hdh=yCoGf3PAANwKy%S%ub0{LeAHm%>t#xF3f!PK!E_hQdSr)Z?3jd36gGVtM%2Odea$zTO*|KKc7 zr0!gb+4&&qa-G0;0H$R)+gL48a}BRIoo#g28xpE_i2Cv}rDOg^p-27SvtN2h-2HMl zQa@a#6iPP%vfriyj!8T;;%M}+e}S&s4#eHJ5p4ua%h5#$APOSXlI2PjX(qn4S&q5( zeSmSxG2d+iSiKx62<%+0L`LpR(#-cfr3kkC_vK1g{E9Rg=Pchv9t1|az^Zq#F%p!5 z`#bMqcaFgAcX5ea6(Dehl9dktBN=-S1G=?UKNI`lCj9Hc{?p&Ywt%(A;A|o#d}Rg3 za02sJ;Ep_My5C40CUJ*X={^m|ICWs*o=h+JYmk_-i%5iEICe#XgesPujhO}7MK#(UV% zDhD|6o-#f%Buy)nd(M485vSxD49?_))o z4RGsyoLC$NP;CwRG=aKn5CsG}1B3$bI?}~*IGsd%6_VL&&}9jHyaw42IK2iVF@ZnV zpoRn@)+(8=j1#FTj~F^`m@(AEmQXEw<3leE!^UzC2uG7J>CYF1DufNePc@XT$Ih6@ zm=<8%tPfD+=Cv@3z^Sz`i@-l?VHSa?575K}>V2T(6z>zMX`+uRl_Cm#hMU-AS_Ujx z$(UYRb+cDcK_`-&`3`4AyZVA+Sb{|bgURibV~r_b-4TA9iZPj z6x9b{(K-}G;Hz~giU3>|qW-x~iMOBoe{_8ZcooI>_TFqlIs}qH+9e4g5J*o*xWFZZ zE|=WBmo5m>MCna>3n(3=C^8_@6l@@%0-*~i(yIz~;4eP~rHb_8_nz6=&203`^Kg0h zJ!fXloSivSwuxyCwW*jks$c#stTXD?#U!^QrcbhzPG`-=!AcAXzgxqFtj#)H<@iZj zgzz(W8|#nB>re>-E7#%75jeOGXO6&?bufbfHzR31TImBiGC=qBXs*OeSnuwhl_=(A znXnKxXwTKd6Kz&5FWv#03UmPr{@6WMbzrJB<71jj0DSl{3M6pqV_fiW0ASkyoz?&o zH$aEL$_>yV@YMzkFC75>*#I*L#BD?+0l4?g<~anC)*Det0{u7Q?gId>Li=n{xci_j zPJRCHXM&Y(0NP84`lPyfBMJg2`EjE=Q&lfGvPwcfb2s!+iwp3y_7<2!V8|9k$Y}s? zY{43BKEUBE=!OKY8z6iu)@X~t^w|n!0<#S8@m4Iv-YwAWq1h8(h<#TTJBxUGCSQoj zQa*WG3n^cS$&%hF=0fZ}6i}xGB@uYG1Pigv1z9DZmC!;gxKS2!ZpT6lfcv02erX{V zA&%+UN=HIQh`tb$S+NjHM-F@;)>NdRdr=&Hk%BM8EbKC{=0Xe-c40dje|LcLJJ9BT zZ-xP22TtBw0G)Qg-75hm?QmB~0O01)JdYMxlbeQ=F0$T%)|MSu{s3?-ija<*P%)>H zq=My7E!6{H--)4Sy0+6@ zIb*jtVYH{jms3h}-H;>@u6@lylt(qO$6aqQqDyn^DerPO&e+~cR|%suw4B-_2+MM+ z;KLw)Wj`FWY8Rd|1c0{wlwl-2W!SbBjlIrHQCw3T6x~077w6T%atbWFyvyBBoet1` zw>v!%fRZb;*I%uiE!3?pJXE^*MQZQtc5hZM0(9O3_Y;`B2SJFydj@md0Dl`G_H%c7 z{w0w)4Z*a3)!7rG?_bFRhd)?z{|XW|>2s`l39!%I+lueB&@H5D(T+}bqeE!+xU8U9 zB&d5{1CXfueUXB$r5F8v5Owd3x*IGlv-tWkr4NPkf_@?XO81tfUWnY`8=5w+ZHN+r za{AcViM?1DPHBafxfjv+wH8_I@m@3*0`dD050?P6+=poqff4&4dIx~*b60!m3tT>~~jd zeMHpr-v(JEl0hdV&y*Sjwxs$O?g}=0y@tBy2ErD8$>4fUh`!+n3G;r5d2Mu4T;cr^ zZHK_VFVS`g{BAJi4+v470lFS=7pQfhv-|*zcLVG_fPhKhe+Lk>2n2p5n2fKGoR|&< zGwv&Qt>Sh~b-P?-S7m&}=J0n|1$~R3f(iJM#r|JGyqLuA;D_(%cMz%ny`yiDm^=D1 z>o`~+ZO7cwhlphyL_G*#OW&^c0vL7>5re=Sh>8K|T=ESH$IH$TeIwt(z7LjPxv;Pm z8;0l``7*0-RW+cC1RUQm*lG>)m*wHKed*kkaCR^=+Xq-CosSg7;?g$WZx``BIh`MsSr|nB_0yC z@q{~}i>xB9x672H4pQ+JW?>)00Dd`4X7%P~GIY5;f;BveS5Ukv?4UDPdSQJgZ0LIu z`+6q8dzbw)hkRhask`Fm&ykRl=;yxb|%k%GbUP0nJTHuYKo>qFRA<#D|9{Khp(o3wsjT z^UL5ZbzPQs+FhZeIKbw0nM>h@fXdM?g|`u9WPs5xgTOXeV1$20Ce>TYDP=M2vAK7jAepx+z-pl-%0f9)QneuJ@Z z{@0+t1K{-WuQ5cotcQm1H9`-8pl{H9X4KP9JMTWV@NzfvJ{CyW>2J_|2>fk;D&J!K zBc{Q(?&`@#YTlvvn}6HwPYc4Ee^1~y^>8}gs}I$w-=g!pAqwK1XYQlm(#``3`|?|K z9$7_n9+`4{3iEj9v9RO7^3Ef(dgn12z4Np^i_X(q*kSEFePP4Iv+fr5--MX&5+^+l zR$joZCt4;h(m=v4oJDUUU^|E2^anuVIrOH2`nddi4!wy0?@e0$|Ljd|1#Rt3VA;BJ z@HBxF=iD*R8+yE3$vwvqSbI(vkuC2z9!2yV3;Pcq^x!>b0LtJukN}`*{l^U?hM=_9 zj1;P+y~e_ry#}m)1Ic>;N4~=4{EM%NdT;A6p zv8l2P6UaJ9`P=vCHR%AsKe(eE0F*C(X(H|?bKAO=-c2UUiZ13-vr5dJxq<3dg)+*6P`v!AY;a|Hu4>2|*2POvu< zy1cLc`7lr!j+3A@Zm%eiu*Fv}(I>FW0RKm+i3$8efGh)a`U9I{9YlWA@EskV1S)fX zK-uGQZy+S>?LXWJoh&K?9^;wlBhnkNb;iaQ}B6NG255#3ghGEYqrX3^+BL-A zUBUv2zlr8s$@f9WeGM`72Ed?e?$}zX4|N|5fu8RK@oq7h^r4rvgJ7RrL&qR+@EUH+ zd`6_BtM#tPN`{E?wb;b%~!rdqWgvb_YDE=8v^OK z(00BSsd?M+i;~(7By8XjPRv>lmpbgLrTj)hGI%RMKvy63=f&-psP2YPY~tHVG3 z(@{6b%D>>KnveAJ^)fkXsx6AYlTIeNqh!L794j0Jmd*MLj%p+_;f^YX*mM*mx}yki zM-kwTA~5eZ9MxW==8ifZCpiidcKkLRC94QW$&@1*sdy)|u-9M-ca+TPjsioSEUkEe zDBRkPh6^z8WE=@||OgG9x~h9+IVVZI!Lk$Fh`N{o8%azWA|z z5@=J;^-49#e~_?m?_jP&;JyK3@6x6-m_~Qq)kBTcG)(xjiVklim(9G3tCpWXL5IKV zjPB53m|GKjHuhd-DOd zPh=J0PnmMWBNg{2rMURO9Udu*br+Io?_)e~6d}s13Hu$cT2drT780vpYYUdQ;EB+e zTJRoBC0Ysj^W^R+wrK8dndI&^37UyHHX$4CZ_w=1hwj;GAAm-W5dR5uegxkUm|%dF zkKjaNzIX&D65viG5JFBIE{xz#{5nH&A|$NnF&d?;BAh5wjtA+&i57MrSl%dQR`)0v z?oo9lz|W5nA*cVR1Lr^-`o#T}{jw1A&N-rv)TSU|H=p3q1w)1RKx2lH9|T=#$`N;V7AMJb^X5wOQB$ zV7a5f(&nlBzH?CAQ}+A9E}FwSQg9cSISTtd&18iS-4XFm^?t`&+jGz;ZEcFv{s7-< z#jE>O0zdwPdpwdvUyneBMIBb--pnrj6$R{@q1xQIg!_7Cv_BD0Ehbl;kg)O$rj||! zSaG0MHCMUmgY|HLpQ6=7y4pgY*5m<6fq9j1Z*Bf{HAtxnkovTfqU0iBIh$5ZC6H>< z5;^b~%m|xSoiob}X0J`FrRGCNxj?gA!zeUBapDG$fBD?r5)bi z!*46Murt8&tpE$V7cAcjkXd~zz+~v-B2n(i!U{TJK9=ukSS056G-TFsAH|s8(}0AX zP_+b=z%5n7mt+7c`fB*L3_z-{mM{na<>*T;N0UHNAqzVSEU%D--3XRfNM`j4Ss2=f zF6fFk)PQ9}VzsL5RDZ9Zx(G+Vz>;VHZU8^e=8igv%lpAl0x5o|0|C?_oIUTS1=-&f zsVE9KR^z5u^Hf2?rXj%~i%M(U&&p4gg)IilYi41$f#o%mS-oZ!#;h4wb|FqnDt=#B zMZMeSW3*X%*rDLe$RNccF)xkCtRpBSh(GMWKZPPod=haDW)YtBz+(YH$|`_@83}=A zmKEsi@z%W9SM#ko3Oago-YTr&5&t95rjHyvaqj#4Dx9s7AeP zZDLb0b0B|6<~0HmRPtzXf}c7Jln73gOnfeL0DVYE4E`ViU{|nP@!(* z8-({N*}4`YMq!)a3}Wrc0BuoRGZ9Ju75pHe;MYQ31#l=3!HmGQKm;=a6@vtmAB1`k z)6HOB2|_S?7Yq+(n*fdkY4z>)fApGBSkg-YNwifd`nt=3eWW()fqSbmyiRzJ-qqlc`QMZq+4 zv4$**#0*(7>v*%36tW;;3qnv=Lxs*wX z7B;-KsJMkK0?R8dvwFoXj2QrAwvzb>(3A37h_CZinDch17G-C`Vrtz!mJdcj!cK>x z4ah2v)3Cz)Mii;o%EK>)iq$U-iwwW47NzhpY#3Hww8TgN zUM!6?zPD`-#rYYT7N!kQcL9V{gw;m?GAnAa>aPIqil{FDPsMwLIY%M!M2NW_qm;z# zsHoZPmqh~FVs@mrk~H9HvZ$Pc3UALAHn^?ufrV`bmis_vbsvCX11f1%-M2;g zG^@0BVT;7xvxOP(AWC@>ZcYu^XCj1%ze{4}! zaeM`q*V@891j~nU3!B?s)H+qB^=exfv+aUqd&9LPx37{_diE?`)gm!xD>CbthH}k* z3kl1LK)*FqC|;Guvs=*B2kRhFB=u`YatFyrkg(T~MX^QYBviO3EUem5c*4Ru!SeGj zv$`WJjOhrOwZyZEY6Pq)j6@3u;6CCF#_Z7~9tttnn;nT(K+MOH=+Q9%$4NxscZdc7 z@GN+n|E`m$kcAC-R#eEsHV4ZqB(r*jER0zpuykgt#ygXxQ|n;JCwC0F9DmMzIQ^eg z*5XtGrz&fcme+Z zzN{al><36)f`t+(my5zof$vTs;NX(EU zvyPhu(zF5+)*>2bh(Nz+^wYZ{Z$5S`Xe6~kS;G72VMuvDwH1nfDyul^gXOK$!VU(@ z`>BO}A1ptau`;cnO_R~*8L1+WRDfHpLCPXAgOtoV-oSLm3{sHLcpA=@#Au-^9eog^ z*$3u{0=Nfqn@Jv!CENo8A>|%e1E4=(EhqjNEcbw%&{46u@Bmnr9jk?>%3{6F7RGGB zlmM%zc(p#j!dR>m-J&=?r?dnqi^L34GV3@AL(Cur2~9A=SzsKTK}XSXXbzo30ep=$ zq=n=RS;C$10i@g+7XY|3WEDqrOW_O)>jul4gN29T)6sy_#AQ z2RCvMzDZO!MN5djm7*6}7ugjp3&al5nC6NCmJLloLwyMFdJ5tjfr|NB1Us67=0!(8 z3VLxZL_H#E))IO}wX|AsPejJ4$k?7An5SU@UC{F7AO!-pu$Gn(Xlk&=XNEOD&r>8DH*EK_T1HR=S^(yKtP%4zTxMC~i17=xuvuGn~66#f%` z&a_(acWwBEz@*w*k{y5x>B_9VPE4-vh?~mF*Mo5<4XNy@jR0E*;9_kpoP&F{;hTnF zqEk_40_2;pTfO|027luN$M2*o3bDNm@r+bBiI@!r^K~kQhC(p^q-vEph)P2-#573L z;&K7FNpvO8>JC}r`0EAX4oWyXO{)>zS|p^sm{NCuWrx$W&h{~KRg0;r7erMdVU5zY zXVh7gRXQq0U}HKO7lE%0=6*WrLQH&y&}o*Tb--gGSR-Y?s|4VVaCRy~3*tvV8}!o* zRFUL~nL@Eirk1P*f$5)#sW*X{nOdAZq_$prYWMNm#TzI1CJZEOUnbUBvWnyE0Kd{m zKq|K~5eWJ(PT0pYRrFY99wIAi=anUnoyda6GO+C1 zI$Djqy21t;yGlE+!IG1$u}pD(2{&iu!I=cw=Ku>>S!oGug_+HV&No8RkqW&?V zk_@$?8b;Iy%Z}tBvYiIFng=HmfD;or$jcW@mwfn-L{kjry?jLcZ$zfJmrb$nk|I6? z?9Y6(S_0+kVscI(y)N3joW?O2otV3W#NFy5mi;I-ol31 zp}p`mfYw?@{MWroS2Vse{3^O_?bqNnCI#a|0u{*E(AMZQ<$L29)z-LBL7+`LE%v!a zy`^M6X8sFP5;H)-m=u zS)s#gW-VTT!c$UMAS=u)RagpzQ(i49e!nn^mYu%mtS1RF-I!e-7;`|*YG-LyCy-T) zS1VK>0(A3g&&F2oCz+i%&$KGNpI)fivk#te_M*B3cy;Yy^s#IiDGZG z(F$Vc2`w5aTr*0w-hdWAbG~ii?6ZB!I{OmJ%51B3jom3{u%k4Cy@q))FXGvewlI$X zwMn%#z$0P^5EDP}MLmD+w*l6c2AQ60F~E>^NJfCyb9Fn^^RjHfwNeAF={3lR%n*&U zw52%FlA5$fvwP-WqK**FfhecfzeGa?Lqqp)oA<2ESFwfp`L}%)$IeqocdNY?qx#{z zmG1yhA0V{@V!}`W7np`?#W|-KINfIR9>4?2VSD@zkYUar{!4gC2vyW&HDy{4U=M-8 z06$Wu%S81pnZ}mWGd=WQLZ=Wu?3Y!N(@}diQdQQV2Mo~qsSyAV1|SF$NEoOk*pt_k zo*CED>*bZ1^twK5TPl#SZctGPOg6x~0})h-IXDp65V$@NftNtoAjI%|kssd~e|)37 zvK^l)OwGk)782$igqjsUHOXwz%X6gg7#41Hv)nt$R>dF7)`!MJsC z3x2irVTuABc6SJ76vx)$S=gakzvy>GD(boM=KX*lKySrRZLWF*U*=?tN1$my_dxf4cCUNk*Hw9m$jI>0K6=E<&!VA zjPl+8lvntt<7J7XqOYCN4;MO=O89QLYIj?8T9&34zx}!WIo+(@2~R0^D!{+;9TiZ~`f#gfcgr z7#LpH-d$M8+sjMgc@OvEB=S2bUx3QzqYzlH0sJ@$t_QHXKD3-LSe7{EJds>aiPJ`F z)e8+3x^vlv#Yx%~B>s?YX2|rfplk+k-V^!rJ84FPHBSm8Y{6(PKG{&A;HXvz%&!no zL9yPhORC?DMqLTqGeFE3!89DBRk!rGhaWn)d2<#dY!c}bSUm<89WA=Y11sn^ z$ynHlV0lB9S-l~f3~O_@DBRZ>f@}+Oy%DU&SgpP~1t#_$ixuHKfH`Be*gOF4VmcjF z@z`csH@^zXm;ThToEwCUuMu9~ipOBRr~p{@<5)~p_q~_3c$^kj1^@FbDD;>Apd4Lp zc1}jIx#P4%I{+6_&C9PSSBD>@zKOUyA1cGfq45%!KMsQlf%O0p%S0l26flV1O7RXP zKcFm?z=Lt90D;8u2~qL9M#8&FXK z;{gf{O&SXvN{^t@@GMKJn(rz4vU^bJdx{3yvP!<)phel#Pl0Z3)P~!NzY|6CtJ{@_ z1}P(J(g0Dg7sapf(aj;F4~(^nraUn7;fTeK9eo48d= zF?G4Or;H6M{RRi=zPJ@TP+b9D->P+t*z8+sQ3O4kzugxPf^XI8bzCHDrAAPFkqz%N z3tPE24kP(I{K&%4jk@q%5=PekZ($wqPNZUUO0WhYu)ajA$-&tYIE|QxC2%Z(_-$Ic zx)Q*%O{=S(2AH*tPKSyRzfEgb^CeX`n!U$0tzP z3TbL!ZG|#m2lil!C9AkjFGh_aP4(@jtN47bwJCaDSVC{)N&nG5F7?2RiXxMBZrTE~ zFM~|oTkAh0r$MH^qf6Mz&$TKI|Xn?BwaE=Hx-iOH?f#>#Ngq;L1Zl5+Wx}Cp% z)=*oe!I^&e-c~*yg$K*R_G?$vV*vnf+uS!6+lVsS6UNW#E1~xM$%4y9X5i%%Nh_K3CusJ zy<50RsPOaizE4Pg&&@%~H_g#k3tF`(r}V5K)$${sYWc}~gOn~16s&^zkh0;2v@z;q zfNO`eSUUh2q);s#yG{ow-{l~1E*lb}kV^7lt+V<7V9H_GKw#xztx6*Ro`}qJ^gI-# z%%w!<2IIX2k|e)-#r(^MgOpp~^Pb?R;C)?#-8rne5)X@tG)E@s{d{WYzfmGt3MuPx z1bdLOT7&f|ZM8#rEVYhes3WlPD8eCuV@FY20)GHB?p9u}Ee$`pYXdRD?p3;?1JR#zju6ho z!9aE4DxayZ;x0+s)rHkD%F_6A2-&narfpLX1R~%b*EBUA&9d!rocC;ivByzVJ^&+T z6u=&0iUEE)j*+)FK)Dl`+eD&gWuAbg1iU9;DS<&J(CIdXpU!y!Hfaq6V$iUJ8+eFov3!0|Ka2?TDRL9qm=*pl?GwTr5H3Px8vr=3>A zBJh5Wb6OKM3ZV9PT7Na=!|W3Fo#w5p1R^%_9tPpI^5fTEv}Z;u<9Y&e0B z0hauPN&PK=y~O0)#3MjIX|>fJ0O3DtjntO_I{XYHmH|xoSxZxu+nFWne%9*S)E>8S zuPQl+K)Lf!BETI~cwUQZHsH3tVQ+DeOu8=N0c7qV3%d#I9&#I4w(2~hBmp=loE<-p zi;8sg+j*EvAmjqdCBVyVaRDb>`5U(*T!3G~05)HMJK_LtU(mX!H&F}kMeQv${1$G+ zyofx;0EGV^QdRvcv&8v-TB=R`0~D_pftkM|e*!%J{l98)&;NbvKk6luu90|6Bd?c* zZ48#z%fkADHCq8BdPO~#P*FPSdkIDon0E<=5a5O!x&)K=!sJ_*v;ZHq2gdxzziI8& zegN%$$7Fc~z@*=C-sb}>1Ly)k9Z#Y48BI>E%$FuLObDsJlQ3>UkTRPlC(q)itk46Y zIirJ+Rk)0T2&4gMWz{c3-JIx@6~->qCpzt`B>0;J`NN6`T7a%Vo{KJHz$8#|8Qp`x zub1Hy0)bcH69VLulBQR*PUX}dIM>T>V8%^g-wmyDCjjJ!df}g~N<}4PA3(r4{PY|u zM09P;*6Dw36vb`p@DTrLn+D^vdO|8Z2GLhwQ@`zn7px=mjGJ_~x6q+Qr>#@9rizkQ z9tCP8q&A*A2_Y#o{4Y9o9%aQ-?n+Q<^di z;RqDkJ^X-$rv7wo*u~1(D!NNrugif-c>uncq;xfI!94_clj(5_O==U4#@^Cmivf5J zrFDCk>b9Y$qLc^`%`5`5)r#3)g3LaJpFXyq@Qc5mr-Y7P?dr`?ynFO$y)slWdZ~KhBATI|JJexH@~AhfnGR9C+GULK&3(} zSotN4DJx9Gn?8R9Kh<{b6|@tP)U>j#ASxg)*Fxytgl^Fj{G@tu#vo?dcVIh#&UauA zf$?`>4nWB}ceIu^H4IJp>RlKg4iIt=oi?^izx-pC)Gx~l?X#tRSyt$U&|GOj$R;Cy zmB4ZX>;Q-`(wTj*8dNUdLmwm%d>?&~K;8T3g9N(WM->S0M#k=AJXnAcYRi2DsKo%k z+($749szU#;AfupW69%9zLBgdD;y1>x&A9FTo0icRVe=<4`98aWm>-)lI0IzJ%POs zU_F7W4`4lkN)KT@0d9TKL#>i!O@m3JF*G6!4b$M>kPLVPg9*%g1cM3ecm#t9TzCY736Q}h zF^{#UmDE$$GfQGCc$iP+4?fK1?rrvF9bY9EFi@TRA>VCFVExy7!bB> zuj#yvuU6(g#Sec)C#0-H15b68z?6}ma5lezC+^v{B2gd`;VqB1QEy5JJ_L_1J@=UvtROv8oiL6-y3>=$K^vzB-_8Ov%IV2e7XW+!ovI6k1$44( zEp1^h`p&`mPi>7z2@$*I^u(%50D>EO5;(|c=!xdQ)zE{N=t9)5p$F5D)_BKhLlpWq zz)dK}10YZRwYC|4KGC_h4%4n;%HA7$d!&?EfQ$&VHo!{-o~oRgX@Cz6aHPPKP*cva zD4-vvQx>MOU|7XQo(P^#N+VCzVp*qmLQ3B<$y^({hbZ}F*`j9uV%q+T>G3aSFqqWg z*yT0~#j8FJG=iU=pq`f+d2&^?2$#bP;Zy>SLYy1|T@5g~5N(8*_Y2`~0!IoxanS(W zm%jKdy8IFfsf$8L{7<1LMU4Zf-PjZJ901p&g-!f0H7cz~4=l9%qYq!jPqvU!??-D( ztJgC`u?>Lm5;NR-ynES+HG=J)PBjfT$*(WDW|O;KVm6$|~vK#8Z-~ z4o$-wiHCb?aNr(}WW@9bh!~%y8%Sdef2r?eNR|wThX`cM^+d6g!#$z===^X`JO{Ry z;S`edj?>^}&mZan9Hor#bgi;nWJuZ4dwiERz*GXlWg}25fo&r^6V*=v93zn(fi5GF z9RXyQp>6~CbfjmT`V~OtDCiJqGYUEc#*Ff0siy$ejq=#lp8$@I@{Gu;n6B4@23snY zULRbB%N`1jzdjfOHe|GCteOJw=V%l`Aao3hAW&xv%t!_3GX^>h04|P!4gqy6bO_WQ z>&Z_j6osaU^Y;g$%Rwq6VXdM-$R>~V#6~m|TC^#^UECRxjbq_r0w>1eoDsM?7G)5K z8iz6fN*ayxWZ2ZnpoWh3)K}*Md^{drByhw4zmNB{&D$r6pqUnGpG|v&+8Owwtl)QW zTEIJ8zy?q7RE{_zl9~`3D_pWL;@)jJ=yA6fUXlg zF@B{goetkfwax4Oaz00ov7N0X~BQ)uLJW;jht#SZ{y7 zOhoZ?bbTU%jP?PjD>cV=tM%9HYAs;YBO#t4#A6_Sj-0du zKYkgy*%O6u1B53@xLg;qy(mG27W>%%4*|SJI@+|RGN-?ePcTt+(_8r~;UZHX2zhnm z1i`EOH&nl*>Yg^L3$b3^3B{-`9nCF9bqQ=JMs*4B>RvAP#57D3nbiL4VwbTb;eP;0bBrHFgz=o$CBeB@D*{>afZ-zTra6$ z*H0+W>NtpX#~qsj$I;PGQ{XrPPp7~b0^AtKD{x$2kr};2mx^xBf|aJ^xQh5GE1V5s z4HBlj%Y|${vWR$DWMLXO0VV8y1&$-Y9d{QAO~--dwG|T)-El+lgn`xxY+cB1z3O>6>!Q#yq9Fz0GFQIzUM`Bem4 zTv3#qxmGWk6b{ew)auqFOIOH6yS8pL1QfKZgo~7B3;ZN2Yw;XZ6#rAmPUfKH z9GnYc`pv<)Ah2MLCp%%QNNfaY?E}2e50%xt?vJd;f>280eiV&JHH%ltmm5Ce2 zLJ(<+qVdDWK#29&7BU~PjgI2x!{G!9=EE2Q+?X-*5!)Jy%qobY?{1JBS5~+eLep^& zvXjUn!q75XRtrd;%!lI$aL2_Up&8r2{@ZbB8zsk4x)&F~Rs!7CRSV#_A{^~Dzz+ak zFg&XyVSPSsOlt{8w7=)|S2_uyX;%-auC5QE+MXQO({LQbG_#6gT^GV}bTn`w97kZ@ zLKs6}%R*1Ox(eWb3q39C>=GHiuNTjQZ5b|Y?Wa<(g^=}l9l`dNNQn+kp@7eL%W$Q^ z76PWefj}CNgSPqxY$CAw4cJ8B&>IN0!2l0PCl+AjBIpoci=abb&msidJb(^wLPTKn zn-CEo|5n|yEm*;K%arU8{Fr}QY*Sq9gU-n}F}H3HP_!7y2@GD0bR({=?bkHBk(bs_t5iDyEM144^tW3IWogOx>?5W5!a z3077E@TLtF_To|xzEutI`ch942iumy6k^UV^~_Vx0}Oo&;TnKfg!fMj6!rJ&;hGe9 zn>zLu#)kjl=#RHNo7JpbxO5q6N8pQP$dbSx%RF<{mH=blhKRtjw;>|1|80*$?E&!Q zZ7eEY1h6khBPCEDpcsIcPs0U8`}qg3s_%|k_eFKe3crMK2Ke^NvE6J4X*tgarC}l~ zs*0=MSHd-e4oa?(RjS;#RnBH#FGux2vs=sIC<0Yhz;pt<`fXNtMyVHCVOg*O_7nJH z1-cXfH=FKnB(uwP2vOqKz_JDX{gq2XXvU%kg5Z`-hiV#Bi|XNrpD>8^STt}Yx)dEv zSP4H8Sg{hu5FlepzFX;Og~tl8e^mW5@UH{3{>&3w7l2!ngkOK$ZJD;~hahFkSS?v>mSY#i7>|Gmw2~wVpfF6C)8xr<6a_wYM z34+Q-NSzk;H0;{_FLo)|qh;Bm?*+pKY{72J7L+n~3%muuy#=Y_k0*N5V$TODy~d#= zS>n>b4gt%(MTvjef@%`*+v-Uu+%J3U^NW(V3<*`VT#wka;Sdgj7yI~(!LJsDAE@A) zGjJ$@nOosU0_(S;00P{PKBgau;(iP&fgewcg8j&kDZfg7goNdlcoK>&DzE;Z@S}xw zf#rU*u=imq_oK|}ezY*Z!*~3X%rZ+~Hpt$OO&0b|iKk+Nv%<~-~wfPt% zr0-T+qT*?b5G3rtPESIbtkOGxdq<{Rn_w>Y4yCBL%M+d| zi*<)s7}Ft?z_SbID=sptWY{jx{s47yZdOVD0guC0qgS5p5;}E(P5i4kWuhn>Q*dI~ zqOUxS5<~0gx}Bg~ao_+vs~oe|C#yH!mhkI9ERX6S`g{eq!~sMd^o-{@&{>=sY=y4d+~dBS$cwYXH#rkS8JyfTtqwRWI}jflb{6MT3@O z#;IWCEfRbPPUt;6sofnA3&10vu!f=UwTegu^S;N}LAxzDna0VB;w$R0j?P!>=<@!_d{pkF;8qR05`BRe*N+KVuiH+=DaEIdbLpKUN>1knq zLx^dr=E(geSUHyrf6!L~AYnsKVvHrQ@FXTm4B(TKxax5U;P^?LGXghGdgAKb6WPGs z3Vm}U@8CrA2B%NHewupo-2X3FDF?csZDn5t64vOHCn3R5X$2Mf?nYl|ncv+Yt>ROj z%F%`vg+zR3BhL@ttWcam5N|l;Ni2>PIh)G)Dh5k!KgCr(?+Cc|Ie)6A zfO6BnrjaZ%pk=83H4O`6eiy)Cd6q>Ky6NxvoG<&rC6cK9Ua9maE}it|;6e&WcSil2w!Hn5mo zKG~Q$LKf$M*T2TuZv=4aYh0^Zh_Chi{4@a;Ey{FN6(&NRj67LJ7l zVUe(q04z-Api?A_BW7$Qj3dB}`z+F1S)GidW09!;41lYV-k2@`$PW8h_($fvd%V0- zh0OUMZqzV@RfKRbgb%@MhyFuY55k{Gm;{3<{~nd$*4N9rbqOT%D#K_3cl#3eGhhJ*fg?2*gLh7y{gw&Qac&hQ~x^7-f0U$4^WC zDJx_Un*M>1Z9*0ihL+jv&Oq`@6#PSg`{x#{H2p(tax_dL&@vh(5#T0GiH3i^!_f)@ z>;&+Ffq8gdUKknrb$R6swW;KG{>lX*G>iXD5TVd^O@``u^3PSnKM=Fz7_>A3?ikoX zU`Pz?Ah0;bo0g=!trtjJlD1AQ(0J0G`=-3|9Dr7fn$p|Yq>1rPR3icU#3By@Gh&ek z0bZAVvEC>(0Y^W@qP3<0JdQ<*J^&Nqya^nvjPv4CsbG%A;n_n1x8jfofhfB-OYINP z+U|{M1AtNyxbTl!$VcDfG<{3=<>cXau#lSF>QzBdBy-jN0gqym3nB~`K+Lw<;Q|7` z*kL}v;;JYa|CiLP>RsfgZh~k}lJ`$FXgR`TbuV7%0dS-`ln9`TnFV2VJqmvmv|v?s zceH+|O!kf%_%AA8oS@kA$=)g|)Y+J1Z_S!=y5NhI-L`grp*5$q__@6D1c2Y*MauL0 z;oA!YRtNRJ<50`|djK^7oYh4B+zF|3B_}|_Zf2rW6R40SKt>kYHZfWj{6b)u z!7R-3CfCgs`4z!l$5Q0CnZ9B12cE+;B)ra+XEPnhHI0RGh#w1{jco)8A8+M5!HioPP5uOi0*z=ytQHBbm|mb;2HUw{KWLoEu;AVbnIA z`=Bx^*P9RtfMfJz{DVq!#rX|H>vFwu(EwaTwebxOa4M;hn=xFqg{yKA83;Vh^?qdU z)>hY}(Cav}Sn@9<>_8p3iom|tG1Yif2g4H`1?QnB5y;HLx#HjroCpGK-auIF53nK+ z=aay;Ja0lf0B#O-DDk>?nQ}B`!fh5d7%X?2%<69I-=@QO-y0rXN94|1rume4 zJrq7HAFX`?z`}ggn!v_<)Ox#IYx~<$ts!Bf>Y~;Jc&*phMXl**S6$Saz=gV~HGxd3 zH344huK+v_)S5s)2Wkyaw$?J`n1_=2OYSXfN3gusGOO46D^csa4%B+Vf7bd<6ke^K z_c`_d04CQ%tqH8C=dEG~;O1b3sW@(|2vN+pw~@-3dZ-nF2ldeJ{ua7Ctn^ro59?y0 zoAa%8;RQlyg~e^F&#av?=7$TwL>&&05=h+ z)xeuj48ZN;J+JyZ;`^i)_D@*AU-@QXmxAT5O_EvtwMiDneC3nO+RV2M+Xs0=^jE5n zXph0afj71;05^%&J}P$Y@^5_}qP&Bb-8p56qx#;E(suw-;tVHhPoRU-n@~7io@gYSDh17TbWK2_jb6TdkJ;b*9@PX?gd9de=p($SRGcvAbSarBsqA{vg4 z=KwxVvNKU8^)$z)U+5o7Eyzs3=MM7Q3Qg-4*NnH;T7S{+3 zivV@KI`bhmKS^OEq!38ay^)PVdwv(_nBkpLPHzOi5a7L&0QF9LCs8i>8lmF8}(@^;QrWgDzBLRL>i*>_1olx+K$;c@U0k_RQl|*rJI!G^C5mnV zI|*DIgD^UKC4wp)eX<%y>sNZi)$2HVtp%od1TGrP{uUUFiLtNpCb8g_sK}nKm;kjz zwvp(!ty+3x?Eq9E#Rzq2TejgYQS@6UsZ60n1eUc#?G0VC_HS($wLcEPYhP22c>{M! zwTFcL(-K}Kkht0#9(HDjRAFM9KLg7M^m_&sCU9{of*S$UHL2Jk1vl4~T_H-_G`Q~2&cTd*nIQ4~Rn8kJQna)U`d zUyYl>iYLM0D_ddR(i65{XoY@F;Atxi!vH)Vx_8~NZI3hzlS+;YH7C&7<*n5q|9R=; zY_lcgx9EmDt?8w!#rUyEX_OiZDIcXEVY^*8bp*~)mIR)<;QeO+5?ez=ph0WF&`1;Z zYWGm(8it;NMff2xMw~>hx3)F1AchY%1o&XnS(wLzYW<#}rLS;=gk=@={c@n}kv*y~1B35<4Q9`vo;obP-kHD^fJW~itH&KcmL8y+L3s)lR` zpv%T{zv z3uCrUu&m8mZ&h5Dcmri#$Ki7x_>I6=06PFTr8fDEE?7P}B;o<7eBy!G1de(T4-8#1 z9-KTZ;(^Z*5f79OdUiY-u0AR`5E7Q@g#!ujc;FAQ832hL>4i55EcL>h1b93kK=EK; zMUgpe8M}gxOYuOK@OW_Mn1}~U0eC!+Ra||*a-Un+G_c&~VA-%X-tbgeth?F5m~N&7 z8{2rRH;57@(y-;55)hZx6lNZw2G;>UvXnQ{QIPUR3JELU7S1M+(iYVx;Ax9CSzC5# z`YFk!kg&N>Q3-4WsA=d@!=hPJAD?A3)U-GmqP$N-jfNjmzDp$#;LVkQ*<9@nM0qsb zaD8-I@-if>xScnlzpT>RhdWZHT&G|qccg`#1eP~mnbo~&VN9=rWyi;QBS>nk2TAJZg zE>$~-?3#D*rbbMYZD;@+KyVw9WJ#}bj5x8Q2u#PaF zn2e4XDFAo^`gQdCRvIZtrB_FhdR9j?icf_u?`PM}Nox&A*jG?d30yHiNGEhHVzN3R z8v>;ZHaaR@uzi7}m7UNM32g6#1sedji_hUd`A#g@EbJJtd<|h?Yk=ipU1s&LZeh#? zo6K4kY~|UD&%#xwVA9lQQ2_$$0CK+k%~Lx_UiA3>Nl1uzbxRv-+CB(@|ekP3Yzg z_f!@JSQk~Xf~7rI$0t99NZj0gZLZLpCL%?TSiJ-tZ6kbhA49& za3UR>*d3ji0PBw83GC^PmN5$8B8dn*GMK78gs5>3RDnc&dLR{7rbWnwURZ?C5g#XB zTkI`wpCPpdSI{5QH~|T}jtq-smEJZ!PRNw2#}zS7SlAS>e4LP3eVni`G)~BW++#lo ztKdPUm2Y(#fnl2IGFi-BHVRViGFjp(_`eWk3Avf3iIA|fJ>d-kPkO>pe*z@*f)5GQ z?{G!mr>ykquVd=fS37sq|d#{N} zjD;NnmXEy_wk}xiQ<>F$3WnhY6fupc!3B5HLkku*if_k&__PzS!}Ojk<=(U15Z;4? zJ?RaP5UBD3YD%Es1-K>-pyvw^5g2bUD-5vj1vEGk{f|-+DD@8=8U6`n-ahyYVmhd2 z`*^Pxjuw{kQR(-)QV=vG#(v4C5SH05fr`Fgvh+ptQ9AnYMVLY0_>11^nQ|88aFo>i{P7#e@lfXOl`<;cG?tzdgXr6W^6^$`VKPLur~qiBI&!StM|$FSbN? zi(L3LW%grfnqo+3$fQlJh7j^C(ExKx6e_GkKeQkMWBTFz5O}*E3LsEAfuSRF0%JcR z%A}kfx1UH`qL8rU{)kH!6%8uG`o$b&%e5N|?d0Nx|0V~LJQvc^Na;k9L% zqpMG--WO$7?}`b}>RoXO5=H+ZYGa+v+(0e99O88*b`jDm{4-Y_&WibWGOSQf!d3C(LzUim2WP=`IKv{v)=++1NGn3>lqHU7V9n26 zLBbXfhZhL!9uD7K0=O_7z9aC^VC*joQQ^z*9f@9e8L0?x->rHXzM~`VJ0FYh?g*>t zJ|Rccz#5Fe zo)Ktx0K64YYj8Y;`R3=bNae2)a07wpk+_egYcF_Uq&HHXhE~yeB=(&Ecxsxb@u|cK zG#)+?Bb9|C;b;QuMq=N|(4|QU--RC-7^?5WuLR)x(2GTOJm?h!OLKQfScOs8g*Q~p zMH=6QUxRm9n43_fOOrR&Zxq4=9gQ7@Y7i)$l+ckeDJehjeNixATDnIqOZcAD za!C0ebrAsHlaf_jQDFHL*}@(~UHEhkENe3wSLbB0K7%6>W^h&2tpIP0#^?>ey-V9r ze50vzXsEu?BuiX#!J50Fl=$jsxZ6-kGTdEIUbuT00C)Ex+1+7blDi>c-Z5~up<=k( zhr4@J1Bz@03s zh|MaQa(xE#xrZ%mPq2K#3^s-Pk_y-TEi0B@2mnjFRY{3Ag|&2v#diQMjs5~t^0#0$ zu@Bc-AY~QDq5sHgu4a`&m0OVV1qZ1#9|w037&s0Q#-}sA78`wnz=sAyyQu8^I5btF zZ;XQ{351VFQUZMUlmI-LWDoCLI)1sDSC*Uz3441y_Vr{Ham_@gTmvG7t1N6ZSnevB z)jefl%zZtubjhS@KEq zuVHha0B@RaufZy~gY4DWF_KpyVRw*Mnyk`0fOm13a$SHOya7^*#*?t^EQ@tVS{T!j zlmL$GnK(yS!RHFwapCC4*igm%mO7-&R*WVmt2r9Sg_hnDLMnO1s3w7~#qhv#${UF| zSZXl43~;^}&LJIjGExyJosZKIjd%PG5c>vU8@b&Pn;;Eykg&OvG0a(1M#YO^&cZeX z%ZE7&`)5@#%*m`i%vl(7n3LK68s;)-4L1eD9D#0A;4=WTRXVD^Bn@+$-JW^jlzojES|MnP1-Cse5MDzJK0eCV=Z3}SX6`TzM zmtVnj8-Uxzr=$9($7IUk(_c8u!XAQAd|n{4y2HTe(`^F$N?ROa)&ZQOw_Zi>1Tg); zFBHwdspJ=qWr=GCSTm4O;;XM>NHJ8*A!T5qF@gi|A?2LNUmwAfq<#wt^G=2D2=FUM zYpO}32(gQ&qBRoOF%|A3z+)c)ihaeGMdsuz*UsuvFO?;H0C^QsK7ix^@Bu_t5m8a5 zTo++1@4psyK3EXyGu~!%UESiC0af%cuAY}_@pwY`}j>k|j z?;RtR12a$nfvYoM)(C(KGhr5iS~CSxWPl+vVHSzrn2A&bN&^KQl?IAw!Zsc#&ZbF$ z0umNC3xUF-k_{EUaJR7cQ$@SCu>!TT1EfGfDv7gEdjikQMxapb5P_l#01p%^MgBZcJjj#+1tjdk zT+BTU6>3Rz!%YC6dv=GeIn^iK8n2;g5^%i+UlQO0JOOinFWw}I43<9kOC+=m5(@N1cNAYX>Sn36p7K!S|hj zxT!YpSBizLyxNBM_-*J@PPvGb8|QfwJN_;bMIuo}{-qS(H32_23&e%7HJJL!Vh9}i z9mbDEB6>qe#=%V84V zQ?;;t!16s+nbr4kT0E!k;|yAeeVj01fOQ`y5``~ah^x{a0Jbkgq#$r^A>8r0?2ge5 zBzHi~fD-6?qh61MOSctBPW9*`-=Wmv&I zU|~0b`jOU z;KuPCf`g64BA>*!7Gth&5f?zrd%n!-a|TMl7x|R{ybRSRFqonG0K5c#uVjO!(wd%B z-eEAAz+r~!R~Ndx`kyzKst*Y(w*=KEP|E;COVIX+8M*}75a8=`0=&}v4yQaEonL}V z6L^56{QvLSFLdH;Zp1^0r0}{ zM6$lOw6~?$TOyTtl|m+%NL#&c020AM<1|w{f##~Ru=1iHyKtu8qdp(hUOp3(3JtWkIfyX)iB^ZeCf%^)cAR z#_kd%Z1M`Yg24ML5EHJ-zOLF{@--yv5>!+I{woEjy%HWJMq7z&2=Ep>n{HI5BkoqZ zQMuX^kuwkY<7^?>GY-JW^C;qV04K!y?aKu2t;9N)0B&DSX^_}WZ(n>9?HH<9rGvDI zCQJEZ)CDPDj6%XDuR;$e@YX8WM_}J7R5Mp($wQy*S*e47cUC?G<#mx(=%jM{9aN7%%)8#@_H=O<4ENHOp^}#% zVc)z9=McDOfS5J#5-|m9kPQJoi6+3?0qv5h1vvV64bBRIgKOX!0B#a>UNJM4DOcez z;Ta2i9rkd~$gJ)e3uAf)EZzUwv%yqxwSrur(yi4K$4VDkEmFGBx(QN#p%oH#Z7nP( z;Qt<~NFd`qZ%y?qmOszF2Y(P4{~p%bVg2#)srN8NNdh?h9&XUj2Dtb>R^N}`^9I{- z#4Al5-8a}b*sYETSh*dym^evq=m*}aNzNuh2OE>haFS<#j&~3ER`Ly}`4)l?sof-dt^8~Wp$x*zmh zH}NkYWJ2->b)uQSe;n*w=XIi`zm*erbfUyRg%hCzF#|70r6dASrBspq?Oe&yiFW=@ zPBhes4*tzK;ns=H{t7302tvKOyewE6rhhVjicb^uPucY89sN@q`m{vATZDLz#h zaHUe*-7Z>BJ~O+}4S){yVru$RJU?m;Ha`L;{Gs6)3n}C>fLd zk5Ua&ZGoc-)@pc?f7s*NB5P`s{w^2LYKq`#fIS2{1N=>(KR}h00Am4a6L=kL@=Kq#I_8%Y2 z^&28L6^>P9Qwk)@T8xyZuvH;&{1hHpCvYDiDsHXjA3ykr|Ndw)l-j3JJ_4;zp5$8XI4Mpt^6N$h? z9W1?$p_-T}_Q9mC9`C^e32kVC*NbaxlgjL@#5*Pf;`V>c3@e)8>nO z()!7tzV~=B-u(D`52$L-8<_u$X3pa<@g8TA$?O~O27!$?;IWke#}J5v+d7kYQ%J=( z;X|_NeG{Pwd{#|P_;DZnb4DebwKGc}_HdG!@h>-g z*f+uQBRC_g9l`l9-ZM+E>f-8hiuQEt&6U`R-ojEHfM$VR0^N;k8gz}oj# zWsCyfzlU9%Zel|O^rPC24`KEfy{_UnfPd(96-`9^ywQxTX&9lPs6Fpv7pI$0_rQ;8 zKj-hj4JBEJYM9wm0CxNc6C>M?@5AK;cHW1}31I9>@gY1yp!^~FX@8^3ncd)W zDC#DdNCYq`MAqwD+u&tAAg>7i?2tq?5f2+P)x_7R2?|;B5t1WNY4RY7Pab1M4rujO zGCs>t3sBTGk1%-{P5St8M;ob(Co?LGdZ1G{vq3vKQ{V#U5>%eP}FFXY?BB$ zbSl z%E)S-@?pH50;?|0#?-OaPYx*h&ESQIR5Z&ed1kh;3mQQST#TweeZjLHYJUhWDC$)| zWS>B&gmMzdli;qiMt2RXXK)u3bqGu(0yA~+r37~o^9MykfH${b?^=bZG=I5z@=b$> zN-h@|ni~|gmp`0nH0cw}ooJ*=A`yx=Hy`#pnPXweF?UZhY^s4Du zEXY8sX9DB_wf1FGt#<mDU0b z4Mqzf@MbV-l>jErNOg0t9L_)O4Mr}A{x=xjA&?M)B@_Wy2r6`=NQz41Y}n8+dqPpi zg~+ycMiVi68Y$;2mzX_$*e+oC>}h1R*%ORP&}oSk@hC7hYc#SQ+z}mSRwdP+p3_+l^=n$(8^e_x0jtgrl|v-Z>L;Oa z4uPLT;l<+s*Fxb}0#&LACR+z`6}Xh7QB@F%8)Id!=33-X{)vw;V`|9}$yY>9`QSXg zsiC((Q6D10a-&Hf6YniXs^rvDqPO_4pMvGR#mH*C#fPEZV)*0k^Z!(9zjTd=io}4k z9Xa#*53>4M7)EEKT}f~wGusL$@Q zk<~ot!~9!8?KM@7Nu*IC$ z+8UPPx*`TS$0mrC9_xXLHr6b&VyvN0>#XP)1ddpd4FY_nP5>+QwBYy9=hk$0Ok&0)bJot?>mB3tza`d&aQa(-m4KVy~moZeWs zwZWe6ic(%Nv&Hnv7#Uy%y)x!=<5v1=xxu+m)I~9}t)_0m7vtuTM*b)9jt)nA*m~dC zLAGaN;9LSBv2ZSd$D3^WM4RmL?+jaNXZS>ehm8tv)xS+Jv*vhtlw$#a4B#@Fi2b;c za`u5Ccf1dq36?t^EVhjJ&thsHPLX>5h&Ui=^ki>QUs|93P4@7e;Y+B*(w zixvRpc=(z?W<1�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 z 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 S{8#r{?-aVf$yrio8~uN7`vFY= diff --git a/src/main/java/org/ldk/impl/bindings.java b/src/main/java/org/ldk/impl/bindings.java index 6f9bd8d5..498b353a 100644 --- a/src/main/java/org/ldk/impl/bindings.java +++ b/src/main/java/org/ldk/impl/bindings.java @@ -37,36 +37,78 @@ public class bindings { static { LDKNetwork.values(); /* Force enum statics to run */ } static { LDKSecp256k1Error.values(); /* Force enum statics to run */ } public static native long LDKCVec_u8Z_new(byte[] elems); - public static native long LDKC2Tuple_u64u64Z_new(long a, long b); - public static native long LDKC2Tuple_u64u64Z_get_a(long ptr); - public static native long LDKC2Tuple_u64u64Z_get_b(long ptr); - public static class LDKSpendableOutputDescriptor { - private LDKSpendableOutputDescriptor() {} - public final static class StaticOutput extends LDKSpendableOutputDescriptor { - public long outpoint; - public long output; - StaticOutput(long outpoint, long output) { this.outpoint = outpoint; this.output = output; } - } - public final static class DynamicOutputP2WSH extends LDKSpendableOutputDescriptor { - public long outpoint; - public byte[] per_commitment_point; - public short to_self_delay; - public long output; - public long key_derivation_params; - public byte[] revocation_pubkey; - DynamicOutputP2WSH(long outpoint, byte[] per_commitment_point, short to_self_delay, long output, long key_derivation_params, byte[] revocation_pubkey) { this.outpoint = outpoint; this.per_commitment_point = per_commitment_point; this.to_self_delay = to_self_delay; this.output = output; this.key_derivation_params = key_derivation_params; this.revocation_pubkey = revocation_pubkey; } - } - public final static class StaticOutputCounterpartyPayment extends LDKSpendableOutputDescriptor { - public long outpoint; - public long output; - public long key_derivation_params; - StaticOutputCounterpartyPayment(long outpoint, long output, long key_derivation_params) { this.outpoint = outpoint; this.output = output; this.key_derivation_params = key_derivation_params; } - } - static native void init(); - } - static { LDKSpendableOutputDescriptor.init(); } - public static native LDKSpendableOutputDescriptor LDKSpendableOutputDescriptor_ref_from_ptr(long ptr); - public static native long LDKCVec_SpendableOutputDescriptorZ_new(long[] elems); + public static native boolean LDKCResult_SecretKeyErrorZ_result_ok(long arg); + public static native byte[] LDKCResult_SecretKeyErrorZ_get_ok(long arg); + public static native LDKSecp256k1Error LDKCResult_SecretKeyErrorZ_get_err(long arg); + public static native boolean LDKCResult_PublicKeyErrorZ_result_ok(long arg); + public static native byte[] LDKCResult_PublicKeyErrorZ_get_ok(long arg); + public static native LDKSecp256k1Error LDKCResult_PublicKeyErrorZ_get_err(long arg); + public static native boolean LDKCResult_TxCreationKeysDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_TxCreationKeysDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_TxCreationKeysDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ChannelPublicKeysDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_ChannelPublicKeysDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_ChannelPublicKeysDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_TxCreationKeysErrorZ_result_ok(long arg); + public static native long LDKCResult_TxCreationKeysErrorZ_get_ok(long arg); + public static native LDKSecp256k1Error LDKCResult_TxCreationKeysErrorZ_get_err(long arg); + public static native boolean LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ChannelTransactionParametersDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_ChannelTransactionParametersDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_ChannelTransactionParametersDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_HolderCommitmentTransactionDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_HolderCommitmentTransactionDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_HolderCommitmentTransactionDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_CommitmentTransactionDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_CommitmentTransactionDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_CommitmentTransactionDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_TrustedCommitmentTransactionNoneZ_result_ok(long arg); + public static native long LDKCResult_TrustedCommitmentTransactionNoneZ_get_ok(long arg); + public static native void LDKCResult_TrustedCommitmentTransactionNoneZ_get_err(long arg); + public static native boolean LDKCResult_CVec_SignatureZNoneZ_result_ok(long arg); + public static native byte[][] LDKCResult_CVec_SignatureZNoneZ_get_ok(long arg); + public static native void LDKCResult_CVec_SignatureZNoneZ_get_err(long arg); + public static native boolean LDKCResult_CVec_u8ZPeerHandleErrorZ_result_ok(long arg); + public static native byte[] LDKCResult_CVec_u8ZPeerHandleErrorZ_get_ok(long arg); + public static native long LDKCResult_CVec_u8ZPeerHandleErrorZ_get_err(long arg); + public static native boolean LDKCResult_NonePeerHandleErrorZ_result_ok(long arg); + public static native void LDKCResult_NonePeerHandleErrorZ_get_ok(long arg); + public static native long LDKCResult_NonePeerHandleErrorZ_get_err(long arg); + public static native boolean LDKCResult_boolPeerHandleErrorZ_result_ok(long arg); + public static native boolean LDKCResult_boolPeerHandleErrorZ_get_ok(long arg); + public static native long LDKCResult_boolPeerHandleErrorZ_get_err(long arg); + public static native boolean LDKCResult_InitFeaturesDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_InitFeaturesDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_InitFeaturesDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_NodeFeaturesDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_NodeFeaturesDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_NodeFeaturesDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ChannelFeaturesDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_ChannelFeaturesDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_ChannelFeaturesDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ChannelConfigDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_ChannelConfigDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_ChannelConfigDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_boolLightningErrorZ_result_ok(long arg); + public static native boolean LDKCResult_boolLightningErrorZ_get_ok(long arg); + public static native long LDKCResult_boolLightningErrorZ_get_err(long arg); + public static native long LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(long a, long b, long c); + public static native long LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(long ptr); + public static native long LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(long ptr); + public static native long LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(long ptr); + public static native long LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_new(long[] elems); + public static native long LDKCVec_NodeAnnouncementZ_new(long[] elems); + public static native boolean LDKCResult_NoneLightningErrorZ_result_ok(long arg); + public static native void LDKCResult_NoneLightningErrorZ_get_ok(long arg); + public static native long LDKCResult_NoneLightningErrorZ_get_err(long arg); public static class LDKErrorAction { private LDKErrorAction() {} public final static class DisconnectPeer extends LDKErrorAction { @@ -198,6 +240,92 @@ public class bindings { static { LDKMessageSendEvent.init(); } public static native LDKMessageSendEvent LDKMessageSendEvent_ref_from_ptr(long ptr); public static native long LDKCVec_MessageSendEventZ_new(long[] elems); + public static native boolean LDKCResult_DirectionalChannelInfoDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_DirectionalChannelInfoDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_DirectionalChannelInfoDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ChannelInfoDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_ChannelInfoDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_ChannelInfoDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_RoutingFeesDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_RoutingFeesDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_RoutingFeesDecodeErrorZ_get_err(long arg); + public static class LDKNetAddress { + private LDKNetAddress() {} + public final static class IPv4 extends LDKNetAddress { + public byte[] addr; + public short port; + IPv4(byte[] addr, short port) { this.addr = addr; this.port = port; } + } + public final static class IPv6 extends LDKNetAddress { + public byte[] addr; + public short port; + IPv6(byte[] addr, short port) { this.addr = addr; this.port = port; } + } + public final static class OnionV2 extends LDKNetAddress { + public byte[] addr; + public short port; + OnionV2(byte[] addr, short port) { this.addr = addr; this.port = port; } + } + public final static class OnionV3 extends LDKNetAddress { + public byte[] ed25519_pubkey; + public short checksum; + public byte version; + public short port; + OnionV3(byte[] ed25519_pubkey, short checksum, byte version, short port) { this.ed25519_pubkey = ed25519_pubkey; this.checksum = checksum; this.version = version; this.port = port; } + } + static native void init(); + } + static { LDKNetAddress.init(); } + public static native LDKNetAddress LDKNetAddress_ref_from_ptr(long ptr); + public static native long LDKCVec_NetAddressZ_new(long[] elems); + public static native boolean LDKCResult_NodeAnnouncementInfoDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_err(long arg); + public static native long LDKCVec_u64Z_new(long[] elems); + public static native boolean LDKCResult_NodeInfoDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_NodeInfoDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_NodeInfoDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_NetworkGraphDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_NetworkGraphDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_NetworkGraphDecodeErrorZ_get_err(long arg); + public static native long LDKC2Tuple_usizeTransactionZ_new(long a, byte[] b); + public static native long LDKC2Tuple_usizeTransactionZ_get_a(long ptr); + public static native byte[] LDKC2Tuple_usizeTransactionZ_get_b(long ptr); + public static native long LDKCVec_C2Tuple_usizeTransactionZZ_new(long[] elems); + public static native boolean LDKCResult_NoneChannelMonitorUpdateErrZ_result_ok(long arg); + public static native void LDKCResult_NoneChannelMonitorUpdateErrZ_get_ok(long arg); + public static native LDKChannelMonitorUpdateErr LDKCResult_NoneChannelMonitorUpdateErrZ_get_err(long arg); + public static native long LDKCVec_MonitorEventZ_new(long[] elems); + public static native long LDKC2Tuple_u64u64Z_new(long a, long b); + public static native long LDKC2Tuple_u64u64Z_get_a(long ptr); + public static native long LDKC2Tuple_u64u64Z_get_b(long ptr); + public static class LDKSpendableOutputDescriptor { + private LDKSpendableOutputDescriptor() {} + public final static class StaticOutput extends LDKSpendableOutputDescriptor { + public long outpoint; + public long output; + StaticOutput(long outpoint, long output) { this.outpoint = outpoint; this.output = output; } + } + public final static class DynamicOutputP2WSH extends LDKSpendableOutputDescriptor { + public long outpoint; + public byte[] per_commitment_point; + public short to_self_delay; + public long output; + public long key_derivation_params; + public byte[] revocation_pubkey; + DynamicOutputP2WSH(long outpoint, byte[] per_commitment_point, short to_self_delay, long output, long key_derivation_params, byte[] revocation_pubkey) { this.outpoint = outpoint; this.per_commitment_point = per_commitment_point; this.to_self_delay = to_self_delay; this.output = output; this.key_derivation_params = key_derivation_params; this.revocation_pubkey = revocation_pubkey; } + } + public final static class StaticOutputCounterpartyPayment extends LDKSpendableOutputDescriptor { + public long outpoint; + public long output; + public long key_derivation_params; + StaticOutputCounterpartyPayment(long outpoint, long output, long key_derivation_params) { this.outpoint = outpoint; this.output = output; this.key_derivation_params = key_derivation_params; } + } + static native void init(); + } + static { LDKSpendableOutputDescriptor.init(); } + public static native LDKSpendableOutputDescriptor LDKSpendableOutputDescriptor_ref_from_ptr(long ptr); + public static native long LDKCVec_SpendableOutputDescriptorZ_new(long[] elems); public static class LDKEvent { private LDKEvent() {} public final static class FundingGenerationReady extends LDKEvent { @@ -240,17 +368,15 @@ public class bindings { static { LDKEvent.init(); } public static native LDKEvent LDKEvent_ref_from_ptr(long ptr); public static native long LDKCVec_EventZ_new(long[] elems); - public static native long LDKC2Tuple_usizeTransactionZ_new(long a, byte[] b); - public static native long LDKC2Tuple_usizeTransactionZ_get_a(long ptr); - public static native byte[] LDKC2Tuple_usizeTransactionZ_get_b(long ptr); - public static native long LDKCVec_C2Tuple_usizeTransactionZZ_new(long[] elems); - public static native boolean LDKCResult_NoneChannelMonitorUpdateErrZ_result_ok(long arg); - public static native void LDKCResult_NoneChannelMonitorUpdateErrZ_get_ok(long arg); - public static native LDKChannelMonitorUpdateErr LDKCResult_NoneChannelMonitorUpdateErrZ_get_err(long arg); - public static native long LDKCVec_MonitorEventZ_new(long[] elems); + public static native boolean LDKCResult_OutPointDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_OutPointDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_OutPointDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_ChannelMonitorUpdateDecodeErrorZ_result_ok(long arg); public static native long LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(long arg); public static native long LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_HTLCUpdateDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_HTLCUpdateDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_HTLCUpdateDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_NoneMonitorUpdateErrorZ_result_ok(long arg); public static native void LDKCResult_NoneMonitorUpdateErrorZ_get_ok(long arg); public static native long LDKCResult_NoneMonitorUpdateErrorZ_get_err(long arg); @@ -318,15 +444,6 @@ public class bindings { public static native boolean LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_result_ok(long arg); public static native long LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(long arg); public static native long LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(long arg); - public static native boolean LDKCResult_SpendableOutputDescriptorDecodeErrorZ_result_ok(long arg); - public static native long LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(long arg); - public static native long LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_err(long arg); - public static native boolean LDKCResult_ChanKeySignerDecodeErrorZ_result_ok(long arg); - public static native long LDKCResult_ChanKeySignerDecodeErrorZ_get_ok(long arg); - public static native long LDKCResult_ChanKeySignerDecodeErrorZ_get_err(long arg); - public static native boolean LDKCResult_InMemoryChannelKeysDecodeErrorZ_result_ok(long arg); - public static native long LDKCResult_InMemoryChannelKeysDecodeErrorZ_get_ok(long arg); - public static native long LDKCResult_InMemoryChannelKeysDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_TxOutAccessErrorZ_result_ok(long arg); public static native long LDKCResult_TxOutAccessErrorZ_get_ok(long arg); public static native LDKAccessError LDKCResult_TxOutAccessErrorZ_get_err(long arg); @@ -363,35 +480,6 @@ public class bindings { public static native boolean LDKCResult_NonePaymentSendFailureZ_result_ok(long arg); public static native void LDKCResult_NonePaymentSendFailureZ_get_ok(long arg); public static native long LDKCResult_NonePaymentSendFailureZ_get_err(long arg); - public static class LDKNetAddress { - private LDKNetAddress() {} - public final static class IPv4 extends LDKNetAddress { - public byte[] addr; - public short port; - IPv4(byte[] addr, short port) { this.addr = addr; this.port = port; } - } - public final static class IPv6 extends LDKNetAddress { - public byte[] addr; - public short port; - IPv6(byte[] addr, short port) { this.addr = addr; this.port = port; } - } - public final static class OnionV2 extends LDKNetAddress { - public byte[] addr; - public short port; - OnionV2(byte[] addr, short port) { this.addr = addr; this.port = port; } - } - public final static class OnionV3 extends LDKNetAddress { - public byte[] ed25519_pubkey; - public short checksum; - public byte version; - public short port; - OnionV3(byte[] ed25519_pubkey, short checksum, byte version, short port) { this.ed25519_pubkey = ed25519_pubkey; this.checksum = checksum; this.version = version; this.port = port; } - } - static native void init(); - } - static { LDKNetAddress.init(); } - public static native LDKNetAddress LDKNetAddress_ref_from_ptr(long ptr); - public static native long LDKCVec_NetAddressZ_new(long[] elems); public static native long LDKCVec_ChannelMonitorZ_new(long[] elems); public interface LDKWatch { long watch_channel(long funding_txo, long monitor); @@ -411,6 +499,9 @@ public class bindings { public static native long LDKBroadcasterInterface_new(LDKBroadcasterInterface impl); // void BroadcasterInterface_broadcast_transaction LDKBroadcasterInterface* this_arg, struct LDKTransaction tx public static native void BroadcasterInterface_broadcast_transaction(long this_arg, byte[] tx); + public static native boolean LDKCResult_ChannelKeysDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_ChannelKeysDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_ChannelKeysDecodeErrorZ_get_err(long arg); public interface LDKKeysInterface { byte[] get_node_secret(); byte[] get_destination_script(); @@ -430,7 +521,7 @@ public class bindings { public static native long KeysInterface_get_channel_keys(long this_arg, boolean inbound, long channel_value_satoshis); // LDKThirtyTwoBytes KeysInterface_get_secure_random_bytes LDKKeysInterface* this_arg public static native byte[] KeysInterface_get_secure_random_bytes(long this_arg); - // LDKCResult_ChanKeySignerDecodeErrorZ KeysInterface_read_chan_signer LDKKeysInterface* this_arg, struct LDKu8slice reader + // LDKCResult_ChannelKeysDecodeErrorZ KeysInterface_read_chan_signer LDKKeysInterface* this_arg, struct LDKu8slice reader public static native long KeysInterface_read_chan_signer(long this_arg, byte[] reader); public interface LDKFeeEstimator { int get_est_sat_per_1000_weight(LDKConfirmationTarget confirmation_target); @@ -448,35 +539,81 @@ public class bindings { public static native boolean LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_result_ok(long arg); public static native long LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(long arg); public static native long LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_SpendableOutputDescriptorDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_InMemoryChannelKeysDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_InMemoryChannelKeysDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_InMemoryChannelKeysDecodeErrorZ_get_err(long arg); + public static native long LDKCVec_RouteHopZ_new(long[] elems); + public static native boolean LDKCResult_RouteDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_RouteDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_RouteDecodeErrorZ_get_err(long arg); + public static native long LDKCVec_RouteHintZ_new(long[] elems); + public static native boolean LDKCResult_RouteLightningErrorZ_result_ok(long arg); + public static native long LDKCResult_RouteLightningErrorZ_get_ok(long arg); + public static native long LDKCResult_RouteLightningErrorZ_get_err(long arg); public static native boolean LDKCResult_NetAddressu8Z_result_ok(long arg); public static native long LDKCResult_NetAddressu8Z_get_ok(long arg); public static native byte LDKCResult_NetAddressu8Z_get_err(long arg); public static native boolean LDKCResult_CResult_NetAddressu8ZDecodeErrorZ_result_ok(long arg); public static native long LDKCResult_CResult_NetAddressu8ZDecodeErrorZ_get_ok(long arg); public static native long LDKCResult_CResult_NetAddressu8ZDecodeErrorZ_get_err(long arg); - public static native long LDKCVec_u64Z_new(long[] elems); public static native long LDKCVec_UpdateAddHTLCZ_new(long[] elems); public static native long LDKCVec_UpdateFulfillHTLCZ_new(long[] elems); public static native long LDKCVec_UpdateFailHTLCZ_new(long[] elems); public static native long LDKCVec_UpdateFailMalformedHTLCZ_new(long[] elems); - public static native boolean LDKCResult_boolLightningErrorZ_result_ok(long arg); - public static native boolean LDKCResult_boolLightningErrorZ_get_ok(long arg); - public static native long LDKCResult_boolLightningErrorZ_get_err(long arg); - public static native long LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(long a, long b, long c); - public static native long LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(long ptr); - public static native long LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(long ptr); - public static native long LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(long ptr); - public static native long LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_new(long[] elems); - public static native long LDKCVec_NodeAnnouncementZ_new(long[] elems); - public static native boolean LDKCResult_NoneLightningErrorZ_result_ok(long arg); - public static native void LDKCResult_NoneLightningErrorZ_get_ok(long arg); - public static native long LDKCResult_NoneLightningErrorZ_get_err(long arg); + public static native boolean LDKCResult_AcceptChannelDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_AcceptChannelDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_AcceptChannelDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_AnnouncementSignaturesDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_AnnouncementSignaturesDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_AnnouncementSignaturesDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_ChannelReestablishDecodeErrorZ_result_ok(long arg); public static native long LDKCResult_ChannelReestablishDecodeErrorZ_get_ok(long arg); public static native long LDKCResult_ChannelReestablishDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ClosingSignedDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_ClosingSignedDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_ClosingSignedDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_CommitmentSignedDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_CommitmentSignedDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_CommitmentSignedDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_FundingCreatedDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_FundingCreatedDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_FundingCreatedDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_FundingSignedDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_FundingSignedDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_FundingSignedDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_FundingLockedDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_FundingLockedDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_FundingLockedDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_InitDecodeErrorZ_result_ok(long arg); public static native long LDKCResult_InitDecodeErrorZ_get_ok(long arg); public static native long LDKCResult_InitDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_OpenChannelDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_OpenChannelDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_OpenChannelDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_RevokeAndACKDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_RevokeAndACKDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_RevokeAndACKDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ShutdownDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_ShutdownDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_ShutdownDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_UpdateFailHTLCDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_UpdateFailHTLCDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_UpdateFailHTLCDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_UpdateFeeDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_UpdateFeeDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_UpdateFeeDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_UpdateFulfillHTLCDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_UpdateFulfillHTLCDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_UpdateAddHTLCDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_UpdateAddHTLCDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_UpdateAddHTLCDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_PingDecodeErrorZ_result_ok(long arg); public static native long LDKCResult_PingDecodeErrorZ_get_ok(long arg); public static native long LDKCResult_PingDecodeErrorZ_get_err(long arg); @@ -486,15 +623,24 @@ public class bindings { public static native boolean LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_result_ok(long arg); public static native long LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(long arg); public static native long LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ChannelAnnouncementDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_ChannelAnnouncementDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_ChannelAnnouncementDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_UnsignedChannelUpdateDecodeErrorZ_result_ok(long arg); public static native long LDKCResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(long arg); public static native long LDKCResult_UnsignedChannelUpdateDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ChannelUpdateDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_ChannelUpdateDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_ChannelUpdateDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_ErrorMessageDecodeErrorZ_result_ok(long arg); public static native long LDKCResult_ErrorMessageDecodeErrorZ_get_ok(long arg); public static native long LDKCResult_ErrorMessageDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_result_ok(long arg); public static native long LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(long arg); public static native long LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_NodeAnnouncementDecodeErrorZ_result_ok(long arg); + public static native long LDKCResult_NodeAnnouncementDecodeErrorZ_get_ok(long arg); + public static native long LDKCResult_NodeAnnouncementDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_QueryShortChannelIdsDecodeErrorZ_result_ok(long arg); public static native long LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_ok(long arg); public static native long LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_err(long arg); @@ -510,50 +656,6 @@ public class bindings { public static native boolean LDKCResult_GossipTimestampFilterDecodeErrorZ_result_ok(long arg); public static native long LDKCResult_GossipTimestampFilterDecodeErrorZ_get_ok(long arg); public static native long LDKCResult_GossipTimestampFilterDecodeErrorZ_get_err(long arg); - public static native boolean LDKCResult_CVec_u8ZPeerHandleErrorZ_result_ok(long arg); - public static native byte[] LDKCResult_CVec_u8ZPeerHandleErrorZ_get_ok(long arg); - public static native long LDKCResult_CVec_u8ZPeerHandleErrorZ_get_err(long arg); - public static native boolean LDKCResult_NonePeerHandleErrorZ_result_ok(long arg); - public static native void LDKCResult_NonePeerHandleErrorZ_get_ok(long arg); - public static native long LDKCResult_NonePeerHandleErrorZ_get_err(long arg); - public static native boolean LDKCResult_boolPeerHandleErrorZ_result_ok(long arg); - public static native boolean LDKCResult_boolPeerHandleErrorZ_get_ok(long arg); - public static native long LDKCResult_boolPeerHandleErrorZ_get_err(long arg); - public static native boolean LDKCResult_SecretKeySecpErrorZ_result_ok(long arg); - public static native byte[] LDKCResult_SecretKeySecpErrorZ_get_ok(long arg); - public static native LDKSecp256k1Error LDKCResult_SecretKeySecpErrorZ_get_err(long arg); - public static native boolean LDKCResult_PublicKeySecpErrorZ_result_ok(long arg); - public static native byte[] LDKCResult_PublicKeySecpErrorZ_get_ok(long arg); - public static native LDKSecp256k1Error LDKCResult_PublicKeySecpErrorZ_get_err(long arg); - public static native boolean LDKCResult_TxCreationKeysSecpErrorZ_result_ok(long arg); - public static native long LDKCResult_TxCreationKeysSecpErrorZ_get_ok(long arg); - public static native LDKSecp256k1Error LDKCResult_TxCreationKeysSecpErrorZ_get_err(long arg); - public static native boolean LDKCResult_TrustedCommitmentTransactionNoneZ_result_ok(long arg); - public static native long LDKCResult_TrustedCommitmentTransactionNoneZ_get_ok(long arg); - public static native void LDKCResult_TrustedCommitmentTransactionNoneZ_get_err(long arg); - public static native boolean LDKCResult_CVec_SignatureZNoneZ_result_ok(long arg); - public static native byte[][] LDKCResult_CVec_SignatureZNoneZ_get_ok(long arg); - public static native void LDKCResult_CVec_SignatureZNoneZ_get_err(long arg); - public static native long LDKCVec_RouteHopZ_new(long[] elems); - public static native boolean LDKCResult_RouteDecodeErrorZ_result_ok(long arg); - public static native long LDKCResult_RouteDecodeErrorZ_get_ok(long arg); - public static native long LDKCResult_RouteDecodeErrorZ_get_err(long arg); - public static native long LDKCVec_RouteHintZ_new(long[] elems); - public static native boolean LDKCResult_RouteLightningErrorZ_result_ok(long arg); - public static native long LDKCResult_RouteLightningErrorZ_get_ok(long arg); - public static native long LDKCResult_RouteLightningErrorZ_get_err(long arg); - public static native boolean LDKCResult_RoutingFeesDecodeErrorZ_result_ok(long arg); - public static native long LDKCResult_RoutingFeesDecodeErrorZ_get_ok(long arg); - public static native long LDKCResult_RoutingFeesDecodeErrorZ_get_err(long arg); - public static native boolean LDKCResult_NodeAnnouncementInfoDecodeErrorZ_result_ok(long arg); - public static native long LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(long arg); - public static native long LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_err(long arg); - public static native boolean LDKCResult_NodeInfoDecodeErrorZ_result_ok(long arg); - public static native long LDKCResult_NodeInfoDecodeErrorZ_get_ok(long arg); - public static native long LDKCResult_NodeInfoDecodeErrorZ_get_err(long arg); - public static native boolean LDKCResult_NetworkGraphDecodeErrorZ_result_ok(long arg); - public static native long LDKCResult_NetworkGraphDecodeErrorZ_get_ok(long arg); - public static native long LDKCResult_NetworkGraphDecodeErrorZ_get_err(long arg); public interface LDKMessageSendEventsProvider { long[] get_and_clear_pending_msg_events(); } @@ -705,20 +807,242 @@ public class bindings { public static native void TxOut_free(long _res); // struct LDKTxOut TxOut_clone(const struct LDKTxOut *NONNULL_PTR orig); public static native long TxOut_clone(long orig); - // void CVec_SpendableOutputDescriptorZ_free(struct LDKCVec_SpendableOutputDescriptorZ _res); - public static native void CVec_SpendableOutputDescriptorZ_free(long[] _res); - // void CVec_MessageSendEventZ_free(struct LDKCVec_MessageSendEventZ _res); - public static native void CVec_MessageSendEventZ_free(long[] _res); - // void CVec_EventZ_free(struct LDKCVec_EventZ _res); - public static native void CVec_EventZ_free(long[] _res); - // void C2Tuple_usizeTransactionZ_free(struct LDKC2Tuple_usizeTransactionZ _res); - public static native void C2Tuple_usizeTransactionZ_free(long _res); - // struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_new(uintptr_t a, struct LDKTransaction b); - public static native long C2Tuple_usizeTransactionZ_new(long a, byte[] b); - // void CVec_C2Tuple_usizeTransactionZZ_free(struct LDKCVec_C2Tuple_usizeTransactionZZ _res); - public static native void CVec_C2Tuple_usizeTransactionZZ_free(long[] _res); - // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_ok(void); - public static native long CResult_NoneChannelMonitorUpdateErrZ_ok(); + // struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_ok(struct LDKSecretKey o); + public static native long CResult_SecretKeyErrorZ_ok(byte[] o); + // struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_err(enum LDKSecp256k1Error e); + public static native long CResult_SecretKeyErrorZ_err(LDKSecp256k1Error e); + // void CResult_SecretKeyErrorZ_free(struct LDKCResult_SecretKeyErrorZ _res); + public static native void CResult_SecretKeyErrorZ_free(long _res); + // struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_ok(struct LDKPublicKey o); + public static native long CResult_PublicKeyErrorZ_ok(byte[] o); + // struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_err(enum LDKSecp256k1Error e); + public static native long CResult_PublicKeyErrorZ_err(LDKSecp256k1Error e); + // void CResult_PublicKeyErrorZ_free(struct LDKCResult_PublicKeyErrorZ _res); + public static native void CResult_PublicKeyErrorZ_free(long _res); + // struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_ok(struct LDKTxCreationKeys o); + public static native long CResult_TxCreationKeysDecodeErrorZ_ok(long o); + // struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_TxCreationKeysDecodeErrorZ_err(long e); + // void CResult_TxCreationKeysDecodeErrorZ_free(struct LDKCResult_TxCreationKeysDecodeErrorZ _res); + public static native void CResult_TxCreationKeysDecodeErrorZ_free(long _res); + // struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_clone(const struct LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_TxCreationKeysDecodeErrorZ_clone(long orig); + // struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_ok(struct LDKChannelPublicKeys o); + public static native long CResult_ChannelPublicKeysDecodeErrorZ_ok(long o); + // struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_ChannelPublicKeysDecodeErrorZ_err(long e); + // void CResult_ChannelPublicKeysDecodeErrorZ_free(struct LDKCResult_ChannelPublicKeysDecodeErrorZ _res); + public static native void CResult_ChannelPublicKeysDecodeErrorZ_free(long _res); + // struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_clone(const struct LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_ChannelPublicKeysDecodeErrorZ_clone(long orig); + // struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_ok(struct LDKTxCreationKeys o); + public static native long CResult_TxCreationKeysErrorZ_ok(long o); + // struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_err(enum LDKSecp256k1Error e); + public static native long CResult_TxCreationKeysErrorZ_err(LDKSecp256k1Error e); + // void CResult_TxCreationKeysErrorZ_free(struct LDKCResult_TxCreationKeysErrorZ _res); + public static native void CResult_TxCreationKeysErrorZ_free(long _res); + // struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(struct LDKHTLCOutputInCommitment o); + public static native long CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(long o); + // struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_HTLCOutputInCommitmentDecodeErrorZ_err(long e); + // void CResult_HTLCOutputInCommitmentDecodeErrorZ_free(struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ _res); + public static native void CResult_HTLCOutputInCommitmentDecodeErrorZ_free(long _res); + // struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(const struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(long orig); + // struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(struct LDKCounterpartyChannelTransactionParameters o); + public static native long CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(long o); + // struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(long e); + // void CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ _res); + public static native void CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(long _res); + // struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(long orig); + // struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_ok(struct LDKChannelTransactionParameters o); + public static native long CResult_ChannelTransactionParametersDecodeErrorZ_ok(long o); + // struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_ChannelTransactionParametersDecodeErrorZ_err(long e); + // void CResult_ChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_ChannelTransactionParametersDecodeErrorZ _res); + public static native void CResult_ChannelTransactionParametersDecodeErrorZ_free(long _res); + // struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_ChannelTransactionParametersDecodeErrorZ_clone(long orig); + // void CVec_SignatureZ_free(struct LDKCVec_SignatureZ _res); + public static native void CVec_SignatureZ_free(byte[][] _res); + // struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_ok(struct LDKHolderCommitmentTransaction o); + public static native long CResult_HolderCommitmentTransactionDecodeErrorZ_ok(long o); + // struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_HolderCommitmentTransactionDecodeErrorZ_err(long e); + // void CResult_HolderCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ _res); + public static native void CResult_HolderCommitmentTransactionDecodeErrorZ_free(long _res); + // struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_HolderCommitmentTransactionDecodeErrorZ_clone(long orig); + // struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(struct LDKBuiltCommitmentTransaction o); + public static native long CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(long o); + // struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_BuiltCommitmentTransactionDecodeErrorZ_err(long e); + // void CResult_BuiltCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ _res); + public static native void CResult_BuiltCommitmentTransactionDecodeErrorZ_free(long _res); + // struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(long orig); + // struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_ok(struct LDKCommitmentTransaction o); + public static native long CResult_CommitmentTransactionDecodeErrorZ_ok(long o); + // struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_CommitmentTransactionDecodeErrorZ_err(long e); + // void CResult_CommitmentTransactionDecodeErrorZ_free(struct LDKCResult_CommitmentTransactionDecodeErrorZ _res); + public static native void CResult_CommitmentTransactionDecodeErrorZ_free(long _res); + // struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_CommitmentTransactionDecodeErrorZ_clone(long orig); + // struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_ok(struct LDKTrustedCommitmentTransaction o); + public static native long CResult_TrustedCommitmentTransactionNoneZ_ok(long o); + // struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_err(void); + public static native long CResult_TrustedCommitmentTransactionNoneZ_err(); + // void CResult_TrustedCommitmentTransactionNoneZ_free(struct LDKCResult_TrustedCommitmentTransactionNoneZ _res); + public static native void CResult_TrustedCommitmentTransactionNoneZ_free(long _res); + // struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_ok(struct LDKCVec_SignatureZ o); + public static native long CResult_CVec_SignatureZNoneZ_ok(byte[][] o); + // struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_err(void); + public static native long CResult_CVec_SignatureZNoneZ_err(); + // void CResult_CVec_SignatureZNoneZ_free(struct LDKCResult_CVec_SignatureZNoneZ _res); + public static native void CResult_CVec_SignatureZNoneZ_free(long _res); + // struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_clone(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR orig); + public static native long CResult_CVec_SignatureZNoneZ_clone(long orig); + // void CVec_PublicKeyZ_free(struct LDKCVec_PublicKeyZ _res); + public static native void CVec_PublicKeyZ_free(byte[][] _res); + // void CVec_u8Z_free(struct LDKCVec_u8Z _res); + public static native void CVec_u8Z_free(byte[] _res); + // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_ok(struct LDKCVec_u8Z o); + public static native long CResult_CVec_u8ZPeerHandleErrorZ_ok(byte[] o); + // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_err(struct LDKPeerHandleError e); + public static native long CResult_CVec_u8ZPeerHandleErrorZ_err(long e); + // void CResult_CVec_u8ZPeerHandleErrorZ_free(struct LDKCResult_CVec_u8ZPeerHandleErrorZ _res); + public static native void CResult_CVec_u8ZPeerHandleErrorZ_free(long _res); + // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_clone(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR orig); + public static native long CResult_CVec_u8ZPeerHandleErrorZ_clone(long orig); + // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_ok(void); + public static native long CResult_NonePeerHandleErrorZ_ok(); + // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_err(struct LDKPeerHandleError e); + public static native long CResult_NonePeerHandleErrorZ_err(long e); + // void CResult_NonePeerHandleErrorZ_free(struct LDKCResult_NonePeerHandleErrorZ _res); + public static native void CResult_NonePeerHandleErrorZ_free(long _res); + // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_clone(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR orig); + public static native long CResult_NonePeerHandleErrorZ_clone(long orig); + // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_ok(bool o); + public static native long CResult_boolPeerHandleErrorZ_ok(boolean o); + // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_err(struct LDKPeerHandleError e); + public static native long CResult_boolPeerHandleErrorZ_err(long e); + // void CResult_boolPeerHandleErrorZ_free(struct LDKCResult_boolPeerHandleErrorZ _res); + public static native void CResult_boolPeerHandleErrorZ_free(long _res); + // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_clone(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR orig); + public static native long CResult_boolPeerHandleErrorZ_clone(long orig); + // struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_ok(struct LDKInitFeatures o); + public static native long CResult_InitFeaturesDecodeErrorZ_ok(long o); + // struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_InitFeaturesDecodeErrorZ_err(long e); + // void CResult_InitFeaturesDecodeErrorZ_free(struct LDKCResult_InitFeaturesDecodeErrorZ _res); + public static native void CResult_InitFeaturesDecodeErrorZ_free(long _res); + // struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_ok(struct LDKNodeFeatures o); + public static native long CResult_NodeFeaturesDecodeErrorZ_ok(long o); + // struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_NodeFeaturesDecodeErrorZ_err(long e); + // void CResult_NodeFeaturesDecodeErrorZ_free(struct LDKCResult_NodeFeaturesDecodeErrorZ _res); + public static native void CResult_NodeFeaturesDecodeErrorZ_free(long _res); + // struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_ok(struct LDKChannelFeatures o); + public static native long CResult_ChannelFeaturesDecodeErrorZ_ok(long o); + // struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_ChannelFeaturesDecodeErrorZ_err(long e); + // void CResult_ChannelFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelFeaturesDecodeErrorZ _res); + public static native void CResult_ChannelFeaturesDecodeErrorZ_free(long _res); + // struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_ok(struct LDKChannelConfig o); + public static native long CResult_ChannelConfigDecodeErrorZ_ok(long o); + // struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_ChannelConfigDecodeErrorZ_err(long e); + // void CResult_ChannelConfigDecodeErrorZ_free(struct LDKCResult_ChannelConfigDecodeErrorZ _res); + public static native void CResult_ChannelConfigDecodeErrorZ_free(long _res); + // struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_clone(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_ChannelConfigDecodeErrorZ_clone(long orig); + // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_ok(bool o); + public static native long CResult_boolLightningErrorZ_ok(boolean o); + // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_err(struct LDKLightningError e); + public static native long CResult_boolLightningErrorZ_err(long e); + // void CResult_boolLightningErrorZ_free(struct LDKCResult_boolLightningErrorZ _res); + public static native void CResult_boolLightningErrorZ_free(long _res); + // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_clone(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR orig); + public static native long CResult_boolLightningErrorZ_clone(long orig); + // struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(const struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR orig); + public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(long orig); + // struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(struct LDKChannelAnnouncement a, struct LDKChannelUpdate b, struct LDKChannelUpdate c); + public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(long a, long b, long c); + // void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res); + public static native void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(long _res); + // void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res); + public static native void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(long[] _res); + // void CVec_NodeAnnouncementZ_free(struct LDKCVec_NodeAnnouncementZ _res); + public static native void CVec_NodeAnnouncementZ_free(long[] _res); + // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_ok(void); + public static native long CResult_NoneLightningErrorZ_ok(); + // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_err(struct LDKLightningError e); + public static native long CResult_NoneLightningErrorZ_err(long e); + // void CResult_NoneLightningErrorZ_free(struct LDKCResult_NoneLightningErrorZ _res); + public static native void CResult_NoneLightningErrorZ_free(long _res); + // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_clone(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR orig); + public static native long CResult_NoneLightningErrorZ_clone(long orig); + // void CVec_MessageSendEventZ_free(struct LDKCVec_MessageSendEventZ _res); + public static native void CVec_MessageSendEventZ_free(long[] _res); + // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_ok(struct LDKDirectionalChannelInfo o); + public static native long CResult_DirectionalChannelInfoDecodeErrorZ_ok(long o); + // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_DirectionalChannelInfoDecodeErrorZ_err(long e); + // void CResult_DirectionalChannelInfoDecodeErrorZ_free(struct LDKCResult_DirectionalChannelInfoDecodeErrorZ _res); + public static native void CResult_DirectionalChannelInfoDecodeErrorZ_free(long _res); + // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_clone(const struct LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_DirectionalChannelInfoDecodeErrorZ_clone(long orig); + // struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_ok(struct LDKChannelInfo o); + public static native long CResult_ChannelInfoDecodeErrorZ_ok(long o); + // struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_ChannelInfoDecodeErrorZ_err(long e); + // void CResult_ChannelInfoDecodeErrorZ_free(struct LDKCResult_ChannelInfoDecodeErrorZ _res); + public static native void CResult_ChannelInfoDecodeErrorZ_free(long _res); + // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_ok(struct LDKRoutingFees o); + public static native long CResult_RoutingFeesDecodeErrorZ_ok(long o); + // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_RoutingFeesDecodeErrorZ_err(long e); + // void CResult_RoutingFeesDecodeErrorZ_free(struct LDKCResult_RoutingFeesDecodeErrorZ _res); + public static native void CResult_RoutingFeesDecodeErrorZ_free(long _res); + // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_clone(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_RoutingFeesDecodeErrorZ_clone(long orig); + // void CVec_NetAddressZ_free(struct LDKCVec_NetAddressZ _res); + public static native void CVec_NetAddressZ_free(long[] _res); + // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_ok(struct LDKNodeAnnouncementInfo o); + public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_ok(long o); + // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_err(long e); + // void CResult_NodeAnnouncementInfoDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res); + public static native void CResult_NodeAnnouncementInfoDecodeErrorZ_free(long _res); + // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_clone(long orig); + // void CVec_u64Z_free(struct LDKCVec_u64Z _res); + public static native void CVec_u64Z_free(long[] _res); + // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_ok(struct LDKNodeInfo o); + public static native long CResult_NodeInfoDecodeErrorZ_ok(long o); + // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_NodeInfoDecodeErrorZ_err(long e); + // void CResult_NodeInfoDecodeErrorZ_free(struct LDKCResult_NodeInfoDecodeErrorZ _res); + public static native void CResult_NodeInfoDecodeErrorZ_free(long _res); + // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_clone(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_NodeInfoDecodeErrorZ_clone(long orig); + // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_ok(struct LDKNetworkGraph o); + public static native long CResult_NetworkGraphDecodeErrorZ_ok(long o); + // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_NetworkGraphDecodeErrorZ_err(long e); + // void CResult_NetworkGraphDecodeErrorZ_free(struct LDKCResult_NetworkGraphDecodeErrorZ _res); + public static native void CResult_NetworkGraphDecodeErrorZ_free(long _res); + // struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_new(uintptr_t a, struct LDKTransaction b); + public static native long C2Tuple_usizeTransactionZ_new(long a, byte[] b); + // void C2Tuple_usizeTransactionZ_free(struct LDKC2Tuple_usizeTransactionZ _res); + public static native void C2Tuple_usizeTransactionZ_free(long _res); + // void CVec_C2Tuple_usizeTransactionZZ_free(struct LDKCVec_C2Tuple_usizeTransactionZZ _res); + public static native void CVec_C2Tuple_usizeTransactionZZ_free(long[] _res); + // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_ok(void); + public static native long CResult_NoneChannelMonitorUpdateErrZ_ok(); // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_err(enum LDKChannelMonitorUpdateErr e); public static native long CResult_NoneChannelMonitorUpdateErrZ_err(LDKChannelMonitorUpdateErr e); // void CResult_NoneChannelMonitorUpdateErrZ_free(struct LDKCResult_NoneChannelMonitorUpdateErrZ _res); @@ -727,12 +1051,32 @@ public class bindings { public static native long CResult_NoneChannelMonitorUpdateErrZ_clone(long orig); // void CVec_MonitorEventZ_free(struct LDKCVec_MonitorEventZ _res); public static native void CVec_MonitorEventZ_free(long[] _res); + // void CVec_EventZ_free(struct LDKCVec_EventZ _res); + public static native void CVec_EventZ_free(long[] _res); + // struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_ok(struct LDKOutPoint o); + public static native long CResult_OutPointDecodeErrorZ_ok(long o); + // struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_OutPointDecodeErrorZ_err(long e); + // void CResult_OutPointDecodeErrorZ_free(struct LDKCResult_OutPointDecodeErrorZ _res); + public static native void CResult_OutPointDecodeErrorZ_free(long _res); + // struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_clone(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_OutPointDecodeErrorZ_clone(long orig); // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_ok(struct LDKChannelMonitorUpdate o); public static native long CResult_ChannelMonitorUpdateDecodeErrorZ_ok(long o); // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_err(struct LDKDecodeError e); public static native long CResult_ChannelMonitorUpdateDecodeErrorZ_err(long e); // void CResult_ChannelMonitorUpdateDecodeErrorZ_free(struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res); public static native void CResult_ChannelMonitorUpdateDecodeErrorZ_free(long _res); + // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_ChannelMonitorUpdateDecodeErrorZ_clone(long orig); + // struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_ok(struct LDKHTLCUpdate o); + public static native long CResult_HTLCUpdateDecodeErrorZ_ok(long o); + // struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_HTLCUpdateDecodeErrorZ_err(long e); + // void CResult_HTLCUpdateDecodeErrorZ_free(struct LDKCResult_HTLCUpdateDecodeErrorZ _res); + public static native void CResult_HTLCUpdateDecodeErrorZ_free(long _res); + // struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_clone(const struct LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_HTLCUpdateDecodeErrorZ_clone(long orig); // struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_ok(void); public static native long CResult_NoneMonitorUpdateErrorZ_ok(); // struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_err(struct LDKMonitorUpdateError e); @@ -741,42 +1085,84 @@ public class bindings { public static native void CResult_NoneMonitorUpdateErrorZ_free(long _res); // struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_clone(const struct LDKCResult_NoneMonitorUpdateErrorZ *NONNULL_PTR orig); public static native long CResult_NoneMonitorUpdateErrorZ_clone(long orig); - // void C2Tuple_OutPointScriptZ_free(struct LDKC2Tuple_OutPointScriptZ _res); - public static native void C2Tuple_OutPointScriptZ_free(long _res); + // struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_clone(const struct LDKC2Tuple_OutPointScriptZ *NONNULL_PTR orig); + public static native long C2Tuple_OutPointScriptZ_clone(long orig); // struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_new(struct LDKOutPoint a, struct LDKCVec_u8Z b); public static native long C2Tuple_OutPointScriptZ_new(long a, byte[] b); + // void C2Tuple_OutPointScriptZ_free(struct LDKC2Tuple_OutPointScriptZ _res); + public static native void C2Tuple_OutPointScriptZ_free(long _res); // void CVec_TransactionZ_free(struct LDKCVec_TransactionZ _res); public static native void CVec_TransactionZ_free(byte[][] _res); // struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_clone(const struct LDKC2Tuple_u32TxOutZ *NONNULL_PTR orig); public static native long C2Tuple_u32TxOutZ_clone(long orig); - // void C2Tuple_u32TxOutZ_free(struct LDKC2Tuple_u32TxOutZ _res); - public static native void C2Tuple_u32TxOutZ_free(long _res); // struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_new(uint32_t a, struct LDKTxOut b); public static native long C2Tuple_u32TxOutZ_new(int a, long b); + // void C2Tuple_u32TxOutZ_free(struct LDKC2Tuple_u32TxOutZ _res); + public static native void C2Tuple_u32TxOutZ_free(long _res); // void CVec_C2Tuple_u32TxOutZZ_free(struct LDKCVec_C2Tuple_u32TxOutZZ _res); public static native void CVec_C2Tuple_u32TxOutZZ_free(long[] _res); - // void C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res); - public static native void C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(long _res); // struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32TxOutZZ b); public static native long C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(byte[] a, long[] b); + // void C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res); + public static native void C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(long _res); // void CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ _res); public static native void CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(long[] _res); - // void C2Tuple_BlockHashChannelMonitorZ_free(struct LDKC2Tuple_BlockHashChannelMonitorZ _res); - public static native void C2Tuple_BlockHashChannelMonitorZ_free(long _res); // struct LDKC2Tuple_BlockHashChannelMonitorZ C2Tuple_BlockHashChannelMonitorZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelMonitor b); public static native long C2Tuple_BlockHashChannelMonitorZ_new(byte[] a, long b); + // void C2Tuple_BlockHashChannelMonitorZ_free(struct LDKC2Tuple_BlockHashChannelMonitorZ _res); + public static native void C2Tuple_BlockHashChannelMonitorZ_free(long _res); // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelMonitorZ o); public static native long CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(long o); // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(struct LDKDecodeError e); public static native long CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(long e); // void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res); public static native void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(long _res); + // void CVec_SpendableOutputDescriptorZ_free(struct LDKCVec_SpendableOutputDescriptorZ _res); + public static native void CVec_SpendableOutputDescriptorZ_free(long[] _res); + // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_ok(struct LDKTxOut o); + public static native long CResult_TxOutAccessErrorZ_ok(long o); + // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_err(enum LDKAccessError e); + public static native long CResult_TxOutAccessErrorZ_err(LDKAccessError e); + // void CResult_TxOutAccessErrorZ_free(struct LDKCResult_TxOutAccessErrorZ _res); + public static native void CResult_TxOutAccessErrorZ_free(long _res); + // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_clone(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR orig); + public static native long CResult_TxOutAccessErrorZ_clone(long orig); + // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_ok(void); + public static native long CResult_NoneAPIErrorZ_ok(); + // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_err(struct LDKAPIError e); + public static native long CResult_NoneAPIErrorZ_err(long e); + // void CResult_NoneAPIErrorZ_free(struct LDKCResult_NoneAPIErrorZ _res); + public static native void CResult_NoneAPIErrorZ_free(long _res); + // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_clone(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR orig); + public static native long CResult_NoneAPIErrorZ_clone(long orig); + // void CVec_ChannelDetailsZ_free(struct LDKCVec_ChannelDetailsZ _res); + public static native void CVec_ChannelDetailsZ_free(long[] _res); + // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_ok(void); + public static native long CResult_NonePaymentSendFailureZ_ok(); + // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_err(struct LDKPaymentSendFailure e); + public static native long CResult_NonePaymentSendFailureZ_err(long e); + // void CResult_NonePaymentSendFailureZ_free(struct LDKCResult_NonePaymentSendFailureZ _res); + public static native void CResult_NonePaymentSendFailureZ_free(long _res); + // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_clone(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR orig); + public static native long CResult_NonePaymentSendFailureZ_clone(long orig); + // void CVec_ChannelMonitorZ_free(struct LDKCVec_ChannelMonitorZ _res); + public static native void CVec_ChannelMonitorZ_free(long[] _res); + // struct LDKC2Tuple_BlockHashChannelManagerZ C2Tuple_BlockHashChannelManagerZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelManager b); + public static native long C2Tuple_BlockHashChannelManagerZ_new(byte[] a, long b); + // void C2Tuple_BlockHashChannelManagerZ_free(struct LDKC2Tuple_BlockHashChannelManagerZ _res); + public static native void C2Tuple_BlockHashChannelManagerZ_free(long _res); + // struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelManagerZ o); + public static native long CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(long o); + // struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(long e); + // void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res); + public static native void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(long _res); // struct LDKC2Tuple_u64u64Z C2Tuple_u64u64Z_clone(const struct LDKC2Tuple_u64u64Z *NONNULL_PTR orig); public static native long C2Tuple_u64u64Z_clone(long orig); - // void C2Tuple_u64u64Z_free(struct LDKC2Tuple_u64u64Z _res); - public static native void C2Tuple_u64u64Z_free(long _res); // struct LDKC2Tuple_u64u64Z C2Tuple_u64u64Z_new(uint64_t a, uint64_t b); public static native long C2Tuple_u64u64Z_new(long a, long b); + // void C2Tuple_u64u64Z_free(struct LDKC2Tuple_u64u64Z _res); + public static native void C2Tuple_u64u64Z_free(long _res); // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_ok(struct LDKSpendableOutputDescriptor o); public static native long CResult_SpendableOutputDescriptorDecodeErrorZ_ok(long o); // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e); @@ -785,14 +1171,12 @@ public class bindings { public static native void CResult_SpendableOutputDescriptorDecodeErrorZ_free(long _res); // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR orig); public static native long CResult_SpendableOutputDescriptorDecodeErrorZ_clone(long orig); - // void CVec_SignatureZ_free(struct LDKCVec_SignatureZ _res); - public static native void CVec_SignatureZ_free(byte[][] _res); // struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_clone(const struct LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR orig); public static native long C2Tuple_SignatureCVec_SignatureZZ_clone(long orig); - // void C2Tuple_SignatureCVec_SignatureZZ_free(struct LDKC2Tuple_SignatureCVec_SignatureZZ _res); - public static native void C2Tuple_SignatureCVec_SignatureZZ_free(long _res); // struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_new(struct LDKSignature a, struct LDKCVec_SignatureZ b); public static native long C2Tuple_SignatureCVec_SignatureZZ_new(byte[] a, byte[][] b); + // void C2Tuple_SignatureCVec_SignatureZZ_free(struct LDKC2Tuple_SignatureCVec_SignatureZZ _res); + public static native void C2Tuple_SignatureCVec_SignatureZZ_free(long _res); // struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(struct LDKC2Tuple_SignatureCVec_SignatureZZ o); public static native long CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(long o); // struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(void); @@ -809,58 +1193,44 @@ public class bindings { public static native void CResult_SignatureNoneZ_free(long _res); // struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_clone(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR orig); public static native long CResult_SignatureNoneZ_clone(long orig); - // struct LDKCResult_ChanKeySignerDecodeErrorZ CResult_ChanKeySignerDecodeErrorZ_ok(struct LDKChannelKeys o); - public static native long CResult_ChanKeySignerDecodeErrorZ_ok(long o); - // struct LDKCResult_ChanKeySignerDecodeErrorZ CResult_ChanKeySignerDecodeErrorZ_err(struct LDKDecodeError e); - public static native long CResult_ChanKeySignerDecodeErrorZ_err(long e); - // void CResult_ChanKeySignerDecodeErrorZ_free(struct LDKCResult_ChanKeySignerDecodeErrorZ _res); - public static native void CResult_ChanKeySignerDecodeErrorZ_free(long _res); - // struct LDKCResult_ChanKeySignerDecodeErrorZ CResult_ChanKeySignerDecodeErrorZ_clone(const struct LDKCResult_ChanKeySignerDecodeErrorZ *NONNULL_PTR orig); - public static native long CResult_ChanKeySignerDecodeErrorZ_clone(long orig); + // struct LDKCResult_ChannelKeysDecodeErrorZ CResult_ChannelKeysDecodeErrorZ_ok(struct LDKChannelKeys o); + public static native long CResult_ChannelKeysDecodeErrorZ_ok(long o); + // struct LDKCResult_ChannelKeysDecodeErrorZ CResult_ChannelKeysDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_ChannelKeysDecodeErrorZ_err(long e); + // void CResult_ChannelKeysDecodeErrorZ_free(struct LDKCResult_ChannelKeysDecodeErrorZ _res); + public static native void CResult_ChannelKeysDecodeErrorZ_free(long _res); + // struct LDKCResult_ChannelKeysDecodeErrorZ CResult_ChannelKeysDecodeErrorZ_clone(const struct LDKCResult_ChannelKeysDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_ChannelKeysDecodeErrorZ_clone(long orig); // struct LDKCResult_InMemoryChannelKeysDecodeErrorZ CResult_InMemoryChannelKeysDecodeErrorZ_ok(struct LDKInMemoryChannelKeys o); public static native long CResult_InMemoryChannelKeysDecodeErrorZ_ok(long o); // struct LDKCResult_InMemoryChannelKeysDecodeErrorZ CResult_InMemoryChannelKeysDecodeErrorZ_err(struct LDKDecodeError e); public static native long CResult_InMemoryChannelKeysDecodeErrorZ_err(long e); // void CResult_InMemoryChannelKeysDecodeErrorZ_free(struct LDKCResult_InMemoryChannelKeysDecodeErrorZ _res); public static native void CResult_InMemoryChannelKeysDecodeErrorZ_free(long _res); - // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_ok(struct LDKTxOut o); - public static native long CResult_TxOutAccessErrorZ_ok(long o); - // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_err(enum LDKAccessError e); - public static native long CResult_TxOutAccessErrorZ_err(LDKAccessError e); - // void CResult_TxOutAccessErrorZ_free(struct LDKCResult_TxOutAccessErrorZ _res); - public static native void CResult_TxOutAccessErrorZ_free(long _res); - // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_clone(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR orig); - public static native long CResult_TxOutAccessErrorZ_clone(long orig); - // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_ok(void); - public static native long CResult_NoneAPIErrorZ_ok(); - // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_err(struct LDKAPIError e); - public static native long CResult_NoneAPIErrorZ_err(long e); - // void CResult_NoneAPIErrorZ_free(struct LDKCResult_NoneAPIErrorZ _res); - public static native void CResult_NoneAPIErrorZ_free(long _res); - // void CVec_ChannelDetailsZ_free(struct LDKCVec_ChannelDetailsZ _res); - public static native void CVec_ChannelDetailsZ_free(long[] _res); - // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_ok(void); - public static native long CResult_NonePaymentSendFailureZ_ok(); - // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_err(struct LDKPaymentSendFailure e); - public static native long CResult_NonePaymentSendFailureZ_err(long e); - // void CResult_NonePaymentSendFailureZ_free(struct LDKCResult_NonePaymentSendFailureZ _res); - public static native void CResult_NonePaymentSendFailureZ_free(long _res); - // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_clone(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR orig); - public static native long CResult_NonePaymentSendFailureZ_clone(long orig); - // void CVec_NetAddressZ_free(struct LDKCVec_NetAddressZ _res); - public static native void CVec_NetAddressZ_free(long[] _res); - // void CVec_ChannelMonitorZ_free(struct LDKCVec_ChannelMonitorZ _res); - public static native void CVec_ChannelMonitorZ_free(long[] _res); - // void C2Tuple_BlockHashChannelManagerZ_free(struct LDKC2Tuple_BlockHashChannelManagerZ _res); - public static native void C2Tuple_BlockHashChannelManagerZ_free(long _res); - // struct LDKC2Tuple_BlockHashChannelManagerZ C2Tuple_BlockHashChannelManagerZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelManager b); - public static native long C2Tuple_BlockHashChannelManagerZ_new(byte[] a, long b); - // struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelManagerZ o); - public static native long CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(long o); - // struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(struct LDKDecodeError e); - public static native long CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(long e); - // void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res); - public static native void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(long _res); + // struct LDKCResult_InMemoryChannelKeysDecodeErrorZ CResult_InMemoryChannelKeysDecodeErrorZ_clone(const struct LDKCResult_InMemoryChannelKeysDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_InMemoryChannelKeysDecodeErrorZ_clone(long orig); + // void CVec_RouteHopZ_free(struct LDKCVec_RouteHopZ _res); + public static native void CVec_RouteHopZ_free(long[] _res); + // void CVec_CVec_RouteHopZZ_free(struct LDKCVec_CVec_RouteHopZZ _res); + public static native void CVec_CVec_RouteHopZZ_free(long[][] _res); + // struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_ok(struct LDKRoute o); + public static native long CResult_RouteDecodeErrorZ_ok(long o); + // struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_RouteDecodeErrorZ_err(long e); + // void CResult_RouteDecodeErrorZ_free(struct LDKCResult_RouteDecodeErrorZ _res); + public static native void CResult_RouteDecodeErrorZ_free(long _res); + // struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_clone(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_RouteDecodeErrorZ_clone(long orig); + // void CVec_RouteHintZ_free(struct LDKCVec_RouteHintZ _res); + public static native void CVec_RouteHintZ_free(long[] _res); + // struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_ok(struct LDKRoute o); + public static native long CResult_RouteLightningErrorZ_ok(long o); + // struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_err(struct LDKLightningError e); + public static native long CResult_RouteLightningErrorZ_err(long e); + // void CResult_RouteLightningErrorZ_free(struct LDKCResult_RouteLightningErrorZ _res); + public static native void CResult_RouteLightningErrorZ_free(long _res); + // struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_clone(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR orig); + public static native long CResult_RouteLightningErrorZ_clone(long orig); // struct LDKCResult_NetAddressu8Z CResult_NetAddressu8Z_ok(struct LDKNetAddress o); public static native long CResult_NetAddressu8Z_ok(long o); // struct LDKCResult_NetAddressu8Z CResult_NetAddressu8Z_err(uint8_t e); @@ -875,8 +1245,8 @@ public class bindings { public static native long CResult_CResult_NetAddressu8ZDecodeErrorZ_err(long e); // void CResult_CResult_NetAddressu8ZDecodeErrorZ_free(struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ _res); public static native void CResult_CResult_NetAddressu8ZDecodeErrorZ_free(long _res); - // void CVec_u64Z_free(struct LDKCVec_u64Z _res); - public static native void CVec_u64Z_free(long[] _res); + // struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ CResult_CResult_NetAddressu8ZDecodeErrorZ_clone(const struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_CResult_NetAddressu8ZDecodeErrorZ_clone(long orig); // void CVec_UpdateAddHTLCZ_free(struct LDKCVec_UpdateAddHTLCZ _res); public static native void CVec_UpdateAddHTLCZ_free(long[] _res); // void CVec_UpdateFulfillHTLCZ_free(struct LDKCVec_UpdateFulfillHTLCZ _res); @@ -885,214 +1255,254 @@ public class bindings { public static native void CVec_UpdateFailHTLCZ_free(long[] _res); // void CVec_UpdateFailMalformedHTLCZ_free(struct LDKCVec_UpdateFailMalformedHTLCZ _res); public static native void CVec_UpdateFailMalformedHTLCZ_free(long[] _res); - // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_ok(bool o); - public static native long CResult_boolLightningErrorZ_ok(boolean o); - // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_err(struct LDKLightningError e); - public static native long CResult_boolLightningErrorZ_err(long e); - // void CResult_boolLightningErrorZ_free(struct LDKCResult_boolLightningErrorZ _res); - public static native void CResult_boolLightningErrorZ_free(long _res); - // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_clone(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR orig); - public static native long CResult_boolLightningErrorZ_clone(long orig); - // void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res); - public static native void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(long _res); - // struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(struct LDKChannelAnnouncement a, struct LDKChannelUpdate b, struct LDKChannelUpdate c); - public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(long a, long b, long c); - // void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res); - public static native void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(long[] _res); - // void CVec_NodeAnnouncementZ_free(struct LDKCVec_NodeAnnouncementZ _res); - public static native void CVec_NodeAnnouncementZ_free(long[] _res); - // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_ok(void); - public static native long CResult_NoneLightningErrorZ_ok(); - // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_err(struct LDKLightningError e); - public static native long CResult_NoneLightningErrorZ_err(long e); - // void CResult_NoneLightningErrorZ_free(struct LDKCResult_NoneLightningErrorZ _res); - public static native void CResult_NoneLightningErrorZ_free(long _res); - // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_clone(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR orig); - public static native long CResult_NoneLightningErrorZ_clone(long orig); + // struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_ok(struct LDKAcceptChannel o); + public static native long CResult_AcceptChannelDecodeErrorZ_ok(long o); + // struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_AcceptChannelDecodeErrorZ_err(long e); + // void CResult_AcceptChannelDecodeErrorZ_free(struct LDKCResult_AcceptChannelDecodeErrorZ _res); + public static native void CResult_AcceptChannelDecodeErrorZ_free(long _res); + // struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_clone(const struct LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_AcceptChannelDecodeErrorZ_clone(long orig); + // struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_ok(struct LDKAnnouncementSignatures o); + public static native long CResult_AnnouncementSignaturesDecodeErrorZ_ok(long o); + // struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_AnnouncementSignaturesDecodeErrorZ_err(long e); + // void CResult_AnnouncementSignaturesDecodeErrorZ_free(struct LDKCResult_AnnouncementSignaturesDecodeErrorZ _res); + public static native void CResult_AnnouncementSignaturesDecodeErrorZ_free(long _res); + // struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_clone(const struct LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_AnnouncementSignaturesDecodeErrorZ_clone(long orig); // struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_ok(struct LDKChannelReestablish o); public static native long CResult_ChannelReestablishDecodeErrorZ_ok(long o); // struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_err(struct LDKDecodeError e); public static native long CResult_ChannelReestablishDecodeErrorZ_err(long e); // void CResult_ChannelReestablishDecodeErrorZ_free(struct LDKCResult_ChannelReestablishDecodeErrorZ _res); public static native void CResult_ChannelReestablishDecodeErrorZ_free(long _res); + // struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_clone(const struct LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_ChannelReestablishDecodeErrorZ_clone(long orig); + // struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_ok(struct LDKClosingSigned o); + public static native long CResult_ClosingSignedDecodeErrorZ_ok(long o); + // struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_ClosingSignedDecodeErrorZ_err(long e); + // void CResult_ClosingSignedDecodeErrorZ_free(struct LDKCResult_ClosingSignedDecodeErrorZ _res); + public static native void CResult_ClosingSignedDecodeErrorZ_free(long _res); + // struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_ClosingSignedDecodeErrorZ_clone(long orig); + // struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_ok(struct LDKCommitmentSigned o); + public static native long CResult_CommitmentSignedDecodeErrorZ_ok(long o); + // struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_CommitmentSignedDecodeErrorZ_err(long e); + // void CResult_CommitmentSignedDecodeErrorZ_free(struct LDKCResult_CommitmentSignedDecodeErrorZ _res); + public static native void CResult_CommitmentSignedDecodeErrorZ_free(long _res); + // struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_clone(const struct LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_CommitmentSignedDecodeErrorZ_clone(long orig); + // struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_ok(struct LDKFundingCreated o); + public static native long CResult_FundingCreatedDecodeErrorZ_ok(long o); + // struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_FundingCreatedDecodeErrorZ_err(long e); + // void CResult_FundingCreatedDecodeErrorZ_free(struct LDKCResult_FundingCreatedDecodeErrorZ _res); + public static native void CResult_FundingCreatedDecodeErrorZ_free(long _res); + // struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_clone(const struct LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_FundingCreatedDecodeErrorZ_clone(long orig); + // struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_ok(struct LDKFundingSigned o); + public static native long CResult_FundingSignedDecodeErrorZ_ok(long o); + // struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_FundingSignedDecodeErrorZ_err(long e); + // void CResult_FundingSignedDecodeErrorZ_free(struct LDKCResult_FundingSignedDecodeErrorZ _res); + public static native void CResult_FundingSignedDecodeErrorZ_free(long _res); + // struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_clone(const struct LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_FundingSignedDecodeErrorZ_clone(long orig); + // struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_ok(struct LDKFundingLocked o); + public static native long CResult_FundingLockedDecodeErrorZ_ok(long o); + // struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_FundingLockedDecodeErrorZ_err(long e); + // void CResult_FundingLockedDecodeErrorZ_free(struct LDKCResult_FundingLockedDecodeErrorZ _res); + public static native void CResult_FundingLockedDecodeErrorZ_free(long _res); + // struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_clone(const struct LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_FundingLockedDecodeErrorZ_clone(long orig); // struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_ok(struct LDKInit o); public static native long CResult_InitDecodeErrorZ_ok(long o); // struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_err(struct LDKDecodeError e); public static native long CResult_InitDecodeErrorZ_err(long e); // void CResult_InitDecodeErrorZ_free(struct LDKCResult_InitDecodeErrorZ _res); public static native void CResult_InitDecodeErrorZ_free(long _res); + // struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_clone(const struct LDKCResult_InitDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_InitDecodeErrorZ_clone(long orig); + // struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_ok(struct LDKOpenChannel o); + public static native long CResult_OpenChannelDecodeErrorZ_ok(long o); + // struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_OpenChannelDecodeErrorZ_err(long e); + // void CResult_OpenChannelDecodeErrorZ_free(struct LDKCResult_OpenChannelDecodeErrorZ _res); + public static native void CResult_OpenChannelDecodeErrorZ_free(long _res); + // struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_clone(const struct LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_OpenChannelDecodeErrorZ_clone(long orig); + // struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_ok(struct LDKRevokeAndACK o); + public static native long CResult_RevokeAndACKDecodeErrorZ_ok(long o); + // struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_RevokeAndACKDecodeErrorZ_err(long e); + // void CResult_RevokeAndACKDecodeErrorZ_free(struct LDKCResult_RevokeAndACKDecodeErrorZ _res); + public static native void CResult_RevokeAndACKDecodeErrorZ_free(long _res); + // struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_clone(const struct LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_RevokeAndACKDecodeErrorZ_clone(long orig); + // struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_ok(struct LDKShutdown o); + public static native long CResult_ShutdownDecodeErrorZ_ok(long o); + // struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_ShutdownDecodeErrorZ_err(long e); + // void CResult_ShutdownDecodeErrorZ_free(struct LDKCResult_ShutdownDecodeErrorZ _res); + public static native void CResult_ShutdownDecodeErrorZ_free(long _res); + // struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_clone(const struct LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_ShutdownDecodeErrorZ_clone(long orig); + // struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_ok(struct LDKUpdateFailHTLC o); + public static native long CResult_UpdateFailHTLCDecodeErrorZ_ok(long o); + // struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_UpdateFailHTLCDecodeErrorZ_err(long e); + // void CResult_UpdateFailHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailHTLCDecodeErrorZ _res); + public static native void CResult_UpdateFailHTLCDecodeErrorZ_free(long _res); + // struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_UpdateFailHTLCDecodeErrorZ_clone(long orig); + // struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(struct LDKUpdateFailMalformedHTLC o); + public static native long CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(long o); + // struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(long e); + // void CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ _res); + public static native void CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(long _res); + // struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(long orig); + // struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_ok(struct LDKUpdateFee o); + public static native long CResult_UpdateFeeDecodeErrorZ_ok(long o); + // struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_UpdateFeeDecodeErrorZ_err(long e); + // void CResult_UpdateFeeDecodeErrorZ_free(struct LDKCResult_UpdateFeeDecodeErrorZ _res); + public static native void CResult_UpdateFeeDecodeErrorZ_free(long _res); + // struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_clone(const struct LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_UpdateFeeDecodeErrorZ_clone(long orig); + // struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_ok(struct LDKUpdateFulfillHTLC o); + public static native long CResult_UpdateFulfillHTLCDecodeErrorZ_ok(long o); + // struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_UpdateFulfillHTLCDecodeErrorZ_err(long e); + // void CResult_UpdateFulfillHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ _res); + public static native void CResult_UpdateFulfillHTLCDecodeErrorZ_free(long _res); + // struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_UpdateFulfillHTLCDecodeErrorZ_clone(long orig); + // struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_ok(struct LDKUpdateAddHTLC o); + public static native long CResult_UpdateAddHTLCDecodeErrorZ_ok(long o); + // struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_UpdateAddHTLCDecodeErrorZ_err(long e); + // void CResult_UpdateAddHTLCDecodeErrorZ_free(struct LDKCResult_UpdateAddHTLCDecodeErrorZ _res); + public static native void CResult_UpdateAddHTLCDecodeErrorZ_free(long _res); + // struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_UpdateAddHTLCDecodeErrorZ_clone(long orig); // struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_ok(struct LDKPing o); public static native long CResult_PingDecodeErrorZ_ok(long o); // struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_err(struct LDKDecodeError e); public static native long CResult_PingDecodeErrorZ_err(long e); // void CResult_PingDecodeErrorZ_free(struct LDKCResult_PingDecodeErrorZ _res); public static native void CResult_PingDecodeErrorZ_free(long _res); + // struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_clone(const struct LDKCResult_PingDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_PingDecodeErrorZ_clone(long orig); // struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_ok(struct LDKPong o); public static native long CResult_PongDecodeErrorZ_ok(long o); // struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_err(struct LDKDecodeError e); public static native long CResult_PongDecodeErrorZ_err(long e); // void CResult_PongDecodeErrorZ_free(struct LDKCResult_PongDecodeErrorZ _res); public static native void CResult_PongDecodeErrorZ_free(long _res); + // struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_clone(const struct LDKCResult_PongDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_PongDecodeErrorZ_clone(long orig); // struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(struct LDKUnsignedChannelAnnouncement o); public static native long CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(long o); // struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e); public static native long CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(long e); // void CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res); public static native void CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(long _res); + // struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(long orig); + // struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_ok(struct LDKChannelAnnouncement o); + public static native long CResult_ChannelAnnouncementDecodeErrorZ_ok(long o); + // struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_ChannelAnnouncementDecodeErrorZ_err(long e); + // void CResult_ChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_ChannelAnnouncementDecodeErrorZ _res); + public static native void CResult_ChannelAnnouncementDecodeErrorZ_free(long _res); + // struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_ChannelAnnouncementDecodeErrorZ_clone(long orig); // struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_ok(struct LDKUnsignedChannelUpdate o); public static native long CResult_UnsignedChannelUpdateDecodeErrorZ_ok(long o); // struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e); public static native long CResult_UnsignedChannelUpdateDecodeErrorZ_err(long e); // void CResult_UnsignedChannelUpdateDecodeErrorZ_free(struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res); public static native void CResult_UnsignedChannelUpdateDecodeErrorZ_free(long _res); + // struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_UnsignedChannelUpdateDecodeErrorZ_clone(long orig); + // struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_ok(struct LDKChannelUpdate o); + public static native long CResult_ChannelUpdateDecodeErrorZ_ok(long o); + // struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_ChannelUpdateDecodeErrorZ_err(long e); + // void CResult_ChannelUpdateDecodeErrorZ_free(struct LDKCResult_ChannelUpdateDecodeErrorZ _res); + public static native void CResult_ChannelUpdateDecodeErrorZ_free(long _res); + // struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_ChannelUpdateDecodeErrorZ_clone(long orig); // struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_ok(struct LDKErrorMessage o); public static native long CResult_ErrorMessageDecodeErrorZ_ok(long o); // struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_err(struct LDKDecodeError e); public static native long CResult_ErrorMessageDecodeErrorZ_err(long e); // void CResult_ErrorMessageDecodeErrorZ_free(struct LDKCResult_ErrorMessageDecodeErrorZ _res); public static native void CResult_ErrorMessageDecodeErrorZ_free(long _res); + // struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_clone(const struct LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_ErrorMessageDecodeErrorZ_clone(long orig); // struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(struct LDKUnsignedNodeAnnouncement o); public static native long CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(long o); // struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e); public static native long CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(long e); - // void CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res); - public static native void CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(long _res); - // struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_ok(struct LDKQueryShortChannelIds o); - public static native long CResult_QueryShortChannelIdsDecodeErrorZ_ok(long o); - // struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_err(struct LDKDecodeError e); - public static native long CResult_QueryShortChannelIdsDecodeErrorZ_err(long e); - // void CResult_QueryShortChannelIdsDecodeErrorZ_free(struct LDKCResult_QueryShortChannelIdsDecodeErrorZ _res); - public static native void CResult_QueryShortChannelIdsDecodeErrorZ_free(long _res); - // struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(struct LDKReplyShortChannelIdsEnd o); - public static native long CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(long o); - // struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(struct LDKDecodeError e); - public static native long CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(long e); - // void CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res); - public static native void CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(long _res); - // struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_ok(struct LDKQueryChannelRange o); - public static native long CResult_QueryChannelRangeDecodeErrorZ_ok(long o); - // struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_err(struct LDKDecodeError e); - public static native long CResult_QueryChannelRangeDecodeErrorZ_err(long e); - // void CResult_QueryChannelRangeDecodeErrorZ_free(struct LDKCResult_QueryChannelRangeDecodeErrorZ _res); - public static native void CResult_QueryChannelRangeDecodeErrorZ_free(long _res); - // struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_ok(struct LDKReplyChannelRange o); - public static native long CResult_ReplyChannelRangeDecodeErrorZ_ok(long o); - // struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_err(struct LDKDecodeError e); - public static native long CResult_ReplyChannelRangeDecodeErrorZ_err(long e); - // void CResult_ReplyChannelRangeDecodeErrorZ_free(struct LDKCResult_ReplyChannelRangeDecodeErrorZ _res); - public static native void CResult_ReplyChannelRangeDecodeErrorZ_free(long _res); - // struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_ok(struct LDKGossipTimestampFilter o); - public static native long CResult_GossipTimestampFilterDecodeErrorZ_ok(long o); - // struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_err(struct LDKDecodeError e); - public static native long CResult_GossipTimestampFilterDecodeErrorZ_err(long e); - // void CResult_GossipTimestampFilterDecodeErrorZ_free(struct LDKCResult_GossipTimestampFilterDecodeErrorZ _res); - public static native void CResult_GossipTimestampFilterDecodeErrorZ_free(long _res); - // void CVec_PublicKeyZ_free(struct LDKCVec_PublicKeyZ _res); - public static native void CVec_PublicKeyZ_free(byte[][] _res); - // void CVec_u8Z_free(struct LDKCVec_u8Z _res); - public static native void CVec_u8Z_free(byte[] _res); - // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_ok(struct LDKCVec_u8Z o); - public static native long CResult_CVec_u8ZPeerHandleErrorZ_ok(byte[] o); - // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_err(struct LDKPeerHandleError e); - public static native long CResult_CVec_u8ZPeerHandleErrorZ_err(long e); - // void CResult_CVec_u8ZPeerHandleErrorZ_free(struct LDKCResult_CVec_u8ZPeerHandleErrorZ _res); - public static native void CResult_CVec_u8ZPeerHandleErrorZ_free(long _res); - // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_clone(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR orig); - public static native long CResult_CVec_u8ZPeerHandleErrorZ_clone(long orig); - // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_ok(void); - public static native long CResult_NonePeerHandleErrorZ_ok(); - // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_err(struct LDKPeerHandleError e); - public static native long CResult_NonePeerHandleErrorZ_err(long e); - // void CResult_NonePeerHandleErrorZ_free(struct LDKCResult_NonePeerHandleErrorZ _res); - public static native void CResult_NonePeerHandleErrorZ_free(long _res); - // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_clone(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR orig); - public static native long CResult_NonePeerHandleErrorZ_clone(long orig); - // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_ok(bool o); - public static native long CResult_boolPeerHandleErrorZ_ok(boolean o); - // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_err(struct LDKPeerHandleError e); - public static native long CResult_boolPeerHandleErrorZ_err(long e); - // void CResult_boolPeerHandleErrorZ_free(struct LDKCResult_boolPeerHandleErrorZ _res); - public static native void CResult_boolPeerHandleErrorZ_free(long _res); - // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_clone(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR orig); - public static native long CResult_boolPeerHandleErrorZ_clone(long orig); - // struct LDKCResult_SecretKeySecpErrorZ CResult_SecretKeySecpErrorZ_ok(struct LDKSecretKey o); - public static native long CResult_SecretKeySecpErrorZ_ok(byte[] o); - // struct LDKCResult_SecretKeySecpErrorZ CResult_SecretKeySecpErrorZ_err(enum LDKSecp256k1Error e); - public static native long CResult_SecretKeySecpErrorZ_err(LDKSecp256k1Error e); - // void CResult_SecretKeySecpErrorZ_free(struct LDKCResult_SecretKeySecpErrorZ _res); - public static native void CResult_SecretKeySecpErrorZ_free(long _res); - // struct LDKCResult_PublicKeySecpErrorZ CResult_PublicKeySecpErrorZ_ok(struct LDKPublicKey o); - public static native long CResult_PublicKeySecpErrorZ_ok(byte[] o); - // struct LDKCResult_PublicKeySecpErrorZ CResult_PublicKeySecpErrorZ_err(enum LDKSecp256k1Error e); - public static native long CResult_PublicKeySecpErrorZ_err(LDKSecp256k1Error e); - // void CResult_PublicKeySecpErrorZ_free(struct LDKCResult_PublicKeySecpErrorZ _res); - public static native void CResult_PublicKeySecpErrorZ_free(long _res); - // struct LDKCResult_TxCreationKeysSecpErrorZ CResult_TxCreationKeysSecpErrorZ_ok(struct LDKTxCreationKeys o); - public static native long CResult_TxCreationKeysSecpErrorZ_ok(long o); - // struct LDKCResult_TxCreationKeysSecpErrorZ CResult_TxCreationKeysSecpErrorZ_err(enum LDKSecp256k1Error e); - public static native long CResult_TxCreationKeysSecpErrorZ_err(LDKSecp256k1Error e); - // void CResult_TxCreationKeysSecpErrorZ_free(struct LDKCResult_TxCreationKeysSecpErrorZ _res); - public static native void CResult_TxCreationKeysSecpErrorZ_free(long _res); - // struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_ok(struct LDKTrustedCommitmentTransaction o); - public static native long CResult_TrustedCommitmentTransactionNoneZ_ok(long o); - // struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_err(void); - public static native long CResult_TrustedCommitmentTransactionNoneZ_err(); - // void CResult_TrustedCommitmentTransactionNoneZ_free(struct LDKCResult_TrustedCommitmentTransactionNoneZ _res); - public static native void CResult_TrustedCommitmentTransactionNoneZ_free(long _res); - // struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_ok(struct LDKCVec_SignatureZ o); - public static native long CResult_CVec_SignatureZNoneZ_ok(byte[][] o); - // struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_err(void); - public static native long CResult_CVec_SignatureZNoneZ_err(); - // void CResult_CVec_SignatureZNoneZ_free(struct LDKCResult_CVec_SignatureZNoneZ _res); - public static native void CResult_CVec_SignatureZNoneZ_free(long _res); - // struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_clone(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR orig); - public static native long CResult_CVec_SignatureZNoneZ_clone(long orig); - // void CVec_RouteHopZ_free(struct LDKCVec_RouteHopZ _res); - public static native void CVec_RouteHopZ_free(long[] _res); - // void CVec_CVec_RouteHopZZ_free(struct LDKCVec_CVec_RouteHopZZ _res); - public static native void CVec_CVec_RouteHopZZ_free(long[][] _res); - // struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_ok(struct LDKRoute o); - public static native long CResult_RouteDecodeErrorZ_ok(long o); - // struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_err(struct LDKDecodeError e); - public static native long CResult_RouteDecodeErrorZ_err(long e); - // void CResult_RouteDecodeErrorZ_free(struct LDKCResult_RouteDecodeErrorZ _res); - public static native void CResult_RouteDecodeErrorZ_free(long _res); - // void CVec_RouteHintZ_free(struct LDKCVec_RouteHintZ _res); - public static native void CVec_RouteHintZ_free(long[] _res); - // struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_ok(struct LDKRoute o); - public static native long CResult_RouteLightningErrorZ_ok(long o); - // struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_err(struct LDKLightningError e); - public static native long CResult_RouteLightningErrorZ_err(long e); - // void CResult_RouteLightningErrorZ_free(struct LDKCResult_RouteLightningErrorZ _res); - public static native void CResult_RouteLightningErrorZ_free(long _res); - // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_ok(struct LDKRoutingFees o); - public static native long CResult_RoutingFeesDecodeErrorZ_ok(long o); - // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_err(struct LDKDecodeError e); - public static native long CResult_RoutingFeesDecodeErrorZ_err(long e); - // void CResult_RoutingFeesDecodeErrorZ_free(struct LDKCResult_RoutingFeesDecodeErrorZ _res); - public static native void CResult_RoutingFeesDecodeErrorZ_free(long _res); - // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_ok(struct LDKNodeAnnouncementInfo o); - public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_ok(long o); - // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_err(struct LDKDecodeError e); - public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_err(long e); - // void CResult_NodeAnnouncementInfoDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res); - public static native void CResult_NodeAnnouncementInfoDecodeErrorZ_free(long _res); - // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR orig); - public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_clone(long orig); - // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_ok(struct LDKNodeInfo o); - public static native long CResult_NodeInfoDecodeErrorZ_ok(long o); - // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_err(struct LDKDecodeError e); - public static native long CResult_NodeInfoDecodeErrorZ_err(long e); - // void CResult_NodeInfoDecodeErrorZ_free(struct LDKCResult_NodeInfoDecodeErrorZ _res); - public static native void CResult_NodeInfoDecodeErrorZ_free(long _res); - // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_clone(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR orig); - public static native long CResult_NodeInfoDecodeErrorZ_clone(long orig); - // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_ok(struct LDKNetworkGraph o); - public static native long CResult_NetworkGraphDecodeErrorZ_ok(long o); - // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_err(struct LDKDecodeError e); - public static native long CResult_NetworkGraphDecodeErrorZ_err(long e); - // void CResult_NetworkGraphDecodeErrorZ_free(struct LDKCResult_NetworkGraphDecodeErrorZ _res); - public static native void CResult_NetworkGraphDecodeErrorZ_free(long _res); + // void CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res); + public static native void CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(long _res); + // struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(long orig); + // struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_ok(struct LDKNodeAnnouncement o); + public static native long CResult_NodeAnnouncementDecodeErrorZ_ok(long o); + // struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_NodeAnnouncementDecodeErrorZ_err(long e); + // void CResult_NodeAnnouncementDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementDecodeErrorZ _res); + public static native void CResult_NodeAnnouncementDecodeErrorZ_free(long _res); + // struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_NodeAnnouncementDecodeErrorZ_clone(long orig); + // struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_ok(struct LDKQueryShortChannelIds o); + public static native long CResult_QueryShortChannelIdsDecodeErrorZ_ok(long o); + // struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_QueryShortChannelIdsDecodeErrorZ_err(long e); + // void CResult_QueryShortChannelIdsDecodeErrorZ_free(struct LDKCResult_QueryShortChannelIdsDecodeErrorZ _res); + public static native void CResult_QueryShortChannelIdsDecodeErrorZ_free(long _res); + // struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_clone(const struct LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_QueryShortChannelIdsDecodeErrorZ_clone(long orig); + // struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(struct LDKReplyShortChannelIdsEnd o); + public static native long CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(long o); + // struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(long e); + // void CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res); + public static native void CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(long _res); + // struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(const struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(long orig); + // struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_ok(struct LDKQueryChannelRange o); + public static native long CResult_QueryChannelRangeDecodeErrorZ_ok(long o); + // struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_QueryChannelRangeDecodeErrorZ_err(long e); + // void CResult_QueryChannelRangeDecodeErrorZ_free(struct LDKCResult_QueryChannelRangeDecodeErrorZ _res); + public static native void CResult_QueryChannelRangeDecodeErrorZ_free(long _res); + // struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_clone(const struct LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_QueryChannelRangeDecodeErrorZ_clone(long orig); + // struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_ok(struct LDKReplyChannelRange o); + public static native long CResult_ReplyChannelRangeDecodeErrorZ_ok(long o); + // struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_ReplyChannelRangeDecodeErrorZ_err(long e); + // void CResult_ReplyChannelRangeDecodeErrorZ_free(struct LDKCResult_ReplyChannelRangeDecodeErrorZ _res); + public static native void CResult_ReplyChannelRangeDecodeErrorZ_free(long _res); + // struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_clone(const struct LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_ReplyChannelRangeDecodeErrorZ_clone(long orig); + // struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_ok(struct LDKGossipTimestampFilter o); + public static native long CResult_GossipTimestampFilterDecodeErrorZ_ok(long o); + // struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_err(struct LDKDecodeError e); + public static native long CResult_GossipTimestampFilterDecodeErrorZ_err(long e); + // void CResult_GossipTimestampFilterDecodeErrorZ_free(struct LDKCResult_GossipTimestampFilterDecodeErrorZ _res); + public static native void CResult_GossipTimestampFilterDecodeErrorZ_free(long _res); + // struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_clone(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR orig); + public static native long CResult_GossipTimestampFilterDecodeErrorZ_clone(long orig); // void Event_free(struct LDKEvent this_ptr); public static native void Event_free(long this_ptr); // struct LDKEvent Event_clone(const struct LDKEvent *NONNULL_PTR orig); @@ -1119,8 +1529,6 @@ public class bindings { public static native void Logger_free(long this_ptr); // void ChannelHandshakeConfig_free(struct LDKChannelHandshakeConfig this_ptr); public static native void ChannelHandshakeConfig_free(long this_ptr); - // struct LDKChannelHandshakeConfig ChannelHandshakeConfig_clone(const struct LDKChannelHandshakeConfig *NONNULL_PTR orig); - public static native long ChannelHandshakeConfig_clone(long orig); // uint32_t ChannelHandshakeConfig_get_minimum_depth(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr); public static native int ChannelHandshakeConfig_get_minimum_depth(long this_ptr); // void ChannelHandshakeConfig_set_minimum_depth(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint32_t val); @@ -1135,12 +1543,12 @@ public class bindings { public static native void ChannelHandshakeConfig_set_our_htlc_minimum_msat(long this_ptr, long val); // MUST_USE_RES struct LDKChannelHandshakeConfig ChannelHandshakeConfig_new(uint32_t minimum_depth_arg, uint16_t our_to_self_delay_arg, uint64_t our_htlc_minimum_msat_arg); public static native long ChannelHandshakeConfig_new(int minimum_depth_arg, short our_to_self_delay_arg, long our_htlc_minimum_msat_arg); + // struct LDKChannelHandshakeConfig ChannelHandshakeConfig_clone(const struct LDKChannelHandshakeConfig *NONNULL_PTR orig); + public static native long ChannelHandshakeConfig_clone(long orig); // MUST_USE_RES struct LDKChannelHandshakeConfig ChannelHandshakeConfig_default(void); public static native long ChannelHandshakeConfig_default(); // void ChannelHandshakeLimits_free(struct LDKChannelHandshakeLimits this_ptr); public static native void ChannelHandshakeLimits_free(long this_ptr); - // struct LDKChannelHandshakeLimits ChannelHandshakeLimits_clone(const struct LDKChannelHandshakeLimits *NONNULL_PTR orig); - public static native long ChannelHandshakeLimits_clone(long orig); // uint64_t ChannelHandshakeLimits_get_min_funding_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr); public static native long ChannelHandshakeLimits_get_min_funding_satoshis(long this_ptr); // void ChannelHandshakeLimits_set_min_funding_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val); @@ -1183,12 +1591,12 @@ public class bindings { public static native void ChannelHandshakeLimits_set_their_to_self_delay(long this_ptr, short val); // MUST_USE_RES struct LDKChannelHandshakeLimits ChannelHandshakeLimits_new(uint64_t min_funding_satoshis_arg, uint64_t max_htlc_minimum_msat_arg, uint64_t min_max_htlc_value_in_flight_msat_arg, uint64_t max_channel_reserve_satoshis_arg, uint16_t min_max_accepted_htlcs_arg, uint64_t min_dust_limit_satoshis_arg, uint64_t max_dust_limit_satoshis_arg, uint32_t max_minimum_depth_arg, bool force_announced_channel_preference_arg, uint16_t their_to_self_delay_arg); public static native long ChannelHandshakeLimits_new(long min_funding_satoshis_arg, long max_htlc_minimum_msat_arg, long min_max_htlc_value_in_flight_msat_arg, long max_channel_reserve_satoshis_arg, short min_max_accepted_htlcs_arg, long min_dust_limit_satoshis_arg, long max_dust_limit_satoshis_arg, int max_minimum_depth_arg, boolean force_announced_channel_preference_arg, short their_to_self_delay_arg); + // struct LDKChannelHandshakeLimits ChannelHandshakeLimits_clone(const struct LDKChannelHandshakeLimits *NONNULL_PTR orig); + public static native long ChannelHandshakeLimits_clone(long orig); // MUST_USE_RES struct LDKChannelHandshakeLimits ChannelHandshakeLimits_default(void); public static native long ChannelHandshakeLimits_default(); // void ChannelConfig_free(struct LDKChannelConfig this_ptr); public static native void ChannelConfig_free(long this_ptr); - // struct LDKChannelConfig ChannelConfig_clone(const struct LDKChannelConfig *NONNULL_PTR orig); - public static native long ChannelConfig_clone(long orig); // uint32_t ChannelConfig_get_fee_proportional_millionths(const struct LDKChannelConfig *NONNULL_PTR this_ptr); public static native int ChannelConfig_get_fee_proportional_millionths(long this_ptr); // void ChannelConfig_set_fee_proportional_millionths(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint32_t val); @@ -1203,16 +1611,16 @@ public class bindings { public static native void ChannelConfig_set_commit_upfront_shutdown_pubkey(long this_ptr, boolean val); // MUST_USE_RES struct LDKChannelConfig ChannelConfig_new(uint32_t fee_proportional_millionths_arg, bool announced_channel_arg, bool commit_upfront_shutdown_pubkey_arg); public static native long ChannelConfig_new(int fee_proportional_millionths_arg, boolean announced_channel_arg, boolean commit_upfront_shutdown_pubkey_arg); + // struct LDKChannelConfig ChannelConfig_clone(const struct LDKChannelConfig *NONNULL_PTR orig); + public static native long ChannelConfig_clone(long orig); // MUST_USE_RES struct LDKChannelConfig ChannelConfig_default(void); public static native long ChannelConfig_default(); // struct LDKCVec_u8Z ChannelConfig_write(const struct LDKChannelConfig *NONNULL_PTR obj); public static native byte[] ChannelConfig_write(long obj); - // struct LDKChannelConfig ChannelConfig_read(struct LDKu8slice ser); + // struct LDKCResult_ChannelConfigDecodeErrorZ ChannelConfig_read(struct LDKu8slice ser); public static native long ChannelConfig_read(byte[] ser); // void UserConfig_free(struct LDKUserConfig this_ptr); public static native void UserConfig_free(long this_ptr); - // struct LDKUserConfig UserConfig_clone(const struct LDKUserConfig *NONNULL_PTR orig); - public static native long UserConfig_clone(long orig); // struct LDKChannelHandshakeConfig UserConfig_get_own_channel_config(const struct LDKUserConfig *NONNULL_PTR this_ptr); public static native long UserConfig_get_own_channel_config(long this_ptr); // void UserConfig_set_own_channel_config(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeConfig val); @@ -1227,6 +1635,8 @@ public class bindings { public static native void UserConfig_set_channel_options(long this_ptr, long val); // MUST_USE_RES struct LDKUserConfig UserConfig_new(struct LDKChannelHandshakeConfig own_channel_config_arg, struct LDKChannelHandshakeLimits peer_channel_config_limits_arg, struct LDKChannelConfig channel_options_arg); public static native long UserConfig_new(long own_channel_config_arg, long peer_channel_config_limits_arg, long channel_options_arg); + // struct LDKUserConfig UserConfig_clone(const struct LDKUserConfig *NONNULL_PTR orig); + public static native long UserConfig_clone(long orig); // MUST_USE_RES struct LDKUserConfig UserConfig_default(void); public static native long UserConfig_default(); // enum LDKAccessError AccessError_clone(const enum LDKAccessError *NONNULL_PTR orig); @@ -1257,12 +1667,12 @@ public class bindings { public static native long ChainMonitor_as_EventsProvider(long this_arg); // void ChannelMonitorUpdate_free(struct LDKChannelMonitorUpdate this_ptr); public static native void ChannelMonitorUpdate_free(long this_ptr); - // struct LDKChannelMonitorUpdate ChannelMonitorUpdate_clone(const struct LDKChannelMonitorUpdate *NONNULL_PTR orig); - public static native long ChannelMonitorUpdate_clone(long orig); // uint64_t ChannelMonitorUpdate_get_update_id(const struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr); public static native long ChannelMonitorUpdate_get_update_id(long this_ptr); // void ChannelMonitorUpdate_set_update_id(struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr, uint64_t val); public static native void ChannelMonitorUpdate_set_update_id(long this_ptr, long val); + // struct LDKChannelMonitorUpdate ChannelMonitorUpdate_clone(const struct LDKChannelMonitorUpdate *NONNULL_PTR orig); + public static native long ChannelMonitorUpdate_clone(long orig); // struct LDKCVec_u8Z ChannelMonitorUpdate_write(const struct LDKChannelMonitorUpdate *NONNULL_PTR obj); public static native byte[] ChannelMonitorUpdate_write(long obj); // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ ChannelMonitorUpdate_read(struct LDKu8slice ser); @@ -1283,7 +1693,7 @@ public class bindings { public static native long HTLCUpdate_clone(long orig); // struct LDKCVec_u8Z HTLCUpdate_write(const struct LDKHTLCUpdate *NONNULL_PTR obj); public static native byte[] HTLCUpdate_write(long obj); - // struct LDKHTLCUpdate HTLCUpdate_read(struct LDKu8slice ser); + // struct LDKCResult_HTLCUpdateDecodeErrorZ HTLCUpdate_read(struct LDKu8slice ser); public static native long HTLCUpdate_read(byte[] ser); // void ChannelMonitor_free(struct LDKChannelMonitor this_ptr); public static native void ChannelMonitor_free(long this_ptr); @@ -1313,8 +1723,6 @@ public class bindings { public static native long C2Tuple_BlockHashChannelMonitorZ_read(byte[] ser, long arg); // void OutPoint_free(struct LDKOutPoint this_ptr); public static native void OutPoint_free(long this_ptr); - // struct LDKOutPoint OutPoint_clone(const struct LDKOutPoint *NONNULL_PTR orig); - public static native long OutPoint_clone(long orig); // const uint8_t (*OutPoint_get_txid(const struct LDKOutPoint *NONNULL_PTR this_ptr))[32]; public static native byte[] OutPoint_get_txid(long this_ptr); // void OutPoint_set_txid(struct LDKOutPoint *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1325,11 +1733,13 @@ public class bindings { public static native void OutPoint_set_index(long this_ptr, short val); // MUST_USE_RES struct LDKOutPoint OutPoint_new(struct LDKThirtyTwoBytes txid_arg, uint16_t index_arg); public static native long OutPoint_new(byte[] txid_arg, short index_arg); + // struct LDKOutPoint OutPoint_clone(const struct LDKOutPoint *NONNULL_PTR orig); + public static native long OutPoint_clone(long orig); // MUST_USE_RES struct LDKThirtyTwoBytes OutPoint_to_channel_id(const struct LDKOutPoint *NONNULL_PTR this_arg); public static native byte[] OutPoint_to_channel_id(long this_arg); // struct LDKCVec_u8Z OutPoint_write(const struct LDKOutPoint *NONNULL_PTR obj); public static native byte[] OutPoint_write(long obj); - // struct LDKOutPoint OutPoint_read(struct LDKu8slice ser); + // struct LDKCResult_OutPointDecodeErrorZ OutPoint_read(struct LDKu8slice ser); public static native long OutPoint_read(byte[] ser); // void SpendableOutputDescriptor_free(struct LDKSpendableOutputDescriptor this_ptr); public static native void SpendableOutputDescriptor_free(long this_ptr); @@ -1347,8 +1757,6 @@ public class bindings { public static native void KeysInterface_free(long this_ptr); // void InMemoryChannelKeys_free(struct LDKInMemoryChannelKeys this_ptr); public static native void InMemoryChannelKeys_free(long this_ptr); - // struct LDKInMemoryChannelKeys InMemoryChannelKeys_clone(const struct LDKInMemoryChannelKeys *NONNULL_PTR orig); - public static native long InMemoryChannelKeys_clone(long orig); // const uint8_t (*InMemoryChannelKeys_get_funding_key(const struct LDKInMemoryChannelKeys *NONNULL_PTR this_ptr))[32]; public static native byte[] InMemoryChannelKeys_get_funding_key(long this_ptr); // void InMemoryChannelKeys_set_funding_key(struct LDKInMemoryChannelKeys *NONNULL_PTR this_ptr, struct LDKSecretKey val); @@ -1373,6 +1781,8 @@ public class bindings { public static native byte[] InMemoryChannelKeys_get_commitment_seed(long this_ptr); // void InMemoryChannelKeys_set_commitment_seed(struct LDKInMemoryChannelKeys *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); public static native void InMemoryChannelKeys_set_commitment_seed(long this_ptr, byte[] val); + // struct LDKInMemoryChannelKeys InMemoryChannelKeys_clone(const struct LDKInMemoryChannelKeys *NONNULL_PTR orig); + public static native long InMemoryChannelKeys_clone(long orig); // MUST_USE_RES struct LDKInMemoryChannelKeys InMemoryChannelKeys_new(struct LDKSecretKey funding_key, struct LDKSecretKey revocation_base_key, struct LDKSecretKey payment_key, struct LDKSecretKey delayed_payment_base_key, struct LDKSecretKey htlc_base_key, struct LDKThirtyTwoBytes commitment_seed, uint64_t channel_value_satoshis, struct LDKC2Tuple_u64u64Z key_derivation_params); public static native long InMemoryChannelKeys_new(byte[] funding_key, byte[] revocation_base_key, byte[] payment_key, byte[] delayed_payment_base_key, byte[] htlc_base_key, byte[] commitment_seed, long channel_value_satoshis, long key_derivation_params); // MUST_USE_RES struct LDKChannelPublicKeys InMemoryChannelKeys_counterparty_pubkeys(const struct LDKInMemoryChannelKeys *NONNULL_PTR this_arg); @@ -1405,8 +1815,6 @@ public class bindings { public static native void ChannelManager_free(long this_ptr); // void ChannelDetails_free(struct LDKChannelDetails this_ptr); public static native void ChannelDetails_free(long this_ptr); - // struct LDKChannelDetails ChannelDetails_clone(const struct LDKChannelDetails *NONNULL_PTR orig); - public static native long ChannelDetails_clone(long orig); // const uint8_t (*ChannelDetails_get_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr))[32]; public static native byte[] ChannelDetails_get_channel_id(long this_ptr); // void ChannelDetails_set_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1439,6 +1847,8 @@ public class bindings { public static native boolean ChannelDetails_get_is_live(long this_ptr); // void ChannelDetails_set_is_live(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val); public static native void ChannelDetails_set_is_live(long this_ptr, boolean val); + // struct LDKChannelDetails ChannelDetails_clone(const struct LDKChannelDetails *NONNULL_PTR orig); + public static native long ChannelDetails_clone(long orig); // void PaymentSendFailure_free(struct LDKPaymentSendFailure this_ptr); public static native void PaymentSendFailure_free(long this_ptr); // struct LDKPaymentSendFailure PaymentSendFailure_clone(const struct LDKPaymentSendFailure *NONNULL_PTR orig); @@ -1527,8 +1937,6 @@ public class bindings { public static native long Init_clone(long orig); // void ErrorMessage_free(struct LDKErrorMessage this_ptr); public static native void ErrorMessage_free(long this_ptr); - // struct LDKErrorMessage ErrorMessage_clone(const struct LDKErrorMessage *NONNULL_PTR orig); - public static native long ErrorMessage_clone(long orig); // const uint8_t (*ErrorMessage_get_channel_id(const struct LDKErrorMessage *NONNULL_PTR this_ptr))[32]; public static native byte[] ErrorMessage_get_channel_id(long this_ptr); // void ErrorMessage_set_channel_id(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1539,10 +1947,10 @@ public class bindings { public static native void ErrorMessage_set_data(long this_ptr, byte[] val); // MUST_USE_RES struct LDKErrorMessage ErrorMessage_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKCVec_u8Z data_arg); public static native long ErrorMessage_new(byte[] channel_id_arg, byte[] data_arg); + // struct LDKErrorMessage ErrorMessage_clone(const struct LDKErrorMessage *NONNULL_PTR orig); + public static native long ErrorMessage_clone(long orig); // void Ping_free(struct LDKPing this_ptr); public static native void Ping_free(long this_ptr); - // struct LDKPing Ping_clone(const struct LDKPing *NONNULL_PTR orig); - public static native long Ping_clone(long orig); // uint16_t Ping_get_ponglen(const struct LDKPing *NONNULL_PTR this_ptr); public static native short Ping_get_ponglen(long this_ptr); // void Ping_set_ponglen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val); @@ -1553,20 +1961,20 @@ public class bindings { public static native void Ping_set_byteslen(long this_ptr, short val); // MUST_USE_RES struct LDKPing Ping_new(uint16_t ponglen_arg, uint16_t byteslen_arg); public static native long Ping_new(short ponglen_arg, short byteslen_arg); + // struct LDKPing Ping_clone(const struct LDKPing *NONNULL_PTR orig); + public static native long Ping_clone(long orig); // void Pong_free(struct LDKPong this_ptr); public static native void Pong_free(long this_ptr); - // struct LDKPong Pong_clone(const struct LDKPong *NONNULL_PTR orig); - public static native long Pong_clone(long orig); // uint16_t Pong_get_byteslen(const struct LDKPong *NONNULL_PTR this_ptr); public static native short Pong_get_byteslen(long this_ptr); // void Pong_set_byteslen(struct LDKPong *NONNULL_PTR this_ptr, uint16_t val); public static native void Pong_set_byteslen(long this_ptr, short val); // MUST_USE_RES struct LDKPong Pong_new(uint16_t byteslen_arg); public static native long Pong_new(short byteslen_arg); + // struct LDKPong Pong_clone(const struct LDKPong *NONNULL_PTR orig); + public static native long Pong_clone(long orig); // void OpenChannel_free(struct LDKOpenChannel this_ptr); public static native void OpenChannel_free(long this_ptr); - // struct LDKOpenChannel OpenChannel_clone(const struct LDKOpenChannel *NONNULL_PTR orig); - public static native long OpenChannel_clone(long orig); // const uint8_t (*OpenChannel_get_chain_hash(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32]; public static native byte[] OpenChannel_get_chain_hash(long this_ptr); // void OpenChannel_set_chain_hash(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1639,10 +2047,10 @@ public class bindings { public static native byte OpenChannel_get_channel_flags(long this_ptr); // void OpenChannel_set_channel_flags(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint8_t val); public static native void OpenChannel_set_channel_flags(long this_ptr, byte val); + // struct LDKOpenChannel OpenChannel_clone(const struct LDKOpenChannel *NONNULL_PTR orig); + public static native long OpenChannel_clone(long orig); // void AcceptChannel_free(struct LDKAcceptChannel this_ptr); public static native void AcceptChannel_free(long this_ptr); - // struct LDKAcceptChannel AcceptChannel_clone(const struct LDKAcceptChannel *NONNULL_PTR orig); - public static native long AcceptChannel_clone(long orig); // const uint8_t (*AcceptChannel_get_temporary_channel_id(const struct LDKAcceptChannel *NONNULL_PTR this_ptr))[32]; public static native byte[] AcceptChannel_get_temporary_channel_id(long this_ptr); // void AcceptChannel_set_temporary_channel_id(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1699,10 +2107,10 @@ public class bindings { public static native byte[] AcceptChannel_get_first_per_commitment_point(long this_ptr); // void AcceptChannel_set_first_per_commitment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val); public static native void AcceptChannel_set_first_per_commitment_point(long this_ptr, byte[] val); + // struct LDKAcceptChannel AcceptChannel_clone(const struct LDKAcceptChannel *NONNULL_PTR orig); + public static native long AcceptChannel_clone(long orig); // void FundingCreated_free(struct LDKFundingCreated this_ptr); public static native void FundingCreated_free(long this_ptr); - // struct LDKFundingCreated FundingCreated_clone(const struct LDKFundingCreated *NONNULL_PTR orig); - public static native long FundingCreated_clone(long orig); // const uint8_t (*FundingCreated_get_temporary_channel_id(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32]; public static native byte[] FundingCreated_get_temporary_channel_id(long this_ptr); // void FundingCreated_set_temporary_channel_id(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1721,10 +2129,10 @@ public class bindings { public static native void FundingCreated_set_signature(long this_ptr, byte[] val); // MUST_USE_RES struct LDKFundingCreated FundingCreated_new(struct LDKThirtyTwoBytes temporary_channel_id_arg, struct LDKThirtyTwoBytes funding_txid_arg, uint16_t funding_output_index_arg, struct LDKSignature signature_arg); public static native long FundingCreated_new(byte[] temporary_channel_id_arg, byte[] funding_txid_arg, short funding_output_index_arg, byte[] signature_arg); + // struct LDKFundingCreated FundingCreated_clone(const struct LDKFundingCreated *NONNULL_PTR orig); + public static native long FundingCreated_clone(long orig); // void FundingSigned_free(struct LDKFundingSigned this_ptr); public static native void FundingSigned_free(long this_ptr); - // struct LDKFundingSigned FundingSigned_clone(const struct LDKFundingSigned *NONNULL_PTR orig); - public static native long FundingSigned_clone(long orig); // const uint8_t (*FundingSigned_get_channel_id(const struct LDKFundingSigned *NONNULL_PTR this_ptr))[32]; public static native byte[] FundingSigned_get_channel_id(long this_ptr); // void FundingSigned_set_channel_id(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1735,10 +2143,10 @@ public class bindings { public static native void FundingSigned_set_signature(long this_ptr, byte[] val); // MUST_USE_RES struct LDKFundingSigned FundingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg); public static native long FundingSigned_new(byte[] channel_id_arg, byte[] signature_arg); + // struct LDKFundingSigned FundingSigned_clone(const struct LDKFundingSigned *NONNULL_PTR orig); + public static native long FundingSigned_clone(long orig); // void FundingLocked_free(struct LDKFundingLocked this_ptr); public static native void FundingLocked_free(long this_ptr); - // struct LDKFundingLocked FundingLocked_clone(const struct LDKFundingLocked *NONNULL_PTR orig); - public static native long FundingLocked_clone(long orig); // const uint8_t (*FundingLocked_get_channel_id(const struct LDKFundingLocked *NONNULL_PTR this_ptr))[32]; public static native byte[] FundingLocked_get_channel_id(long this_ptr); // void FundingLocked_set_channel_id(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1749,10 +2157,10 @@ public class bindings { public static native void FundingLocked_set_next_per_commitment_point(long this_ptr, byte[] val); // MUST_USE_RES struct LDKFundingLocked FundingLocked_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKPublicKey next_per_commitment_point_arg); public static native long FundingLocked_new(byte[] channel_id_arg, byte[] next_per_commitment_point_arg); + // struct LDKFundingLocked FundingLocked_clone(const struct LDKFundingLocked *NONNULL_PTR orig); + public static native long FundingLocked_clone(long orig); // void Shutdown_free(struct LDKShutdown this_ptr); public static native void Shutdown_free(long this_ptr); - // struct LDKShutdown Shutdown_clone(const struct LDKShutdown *NONNULL_PTR orig); - public static native long Shutdown_clone(long orig); // const uint8_t (*Shutdown_get_channel_id(const struct LDKShutdown *NONNULL_PTR this_ptr))[32]; public static native byte[] Shutdown_get_channel_id(long this_ptr); // void Shutdown_set_channel_id(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1763,10 +2171,10 @@ public class bindings { public static native void Shutdown_set_scriptpubkey(long this_ptr, byte[] val); // MUST_USE_RES struct LDKShutdown Shutdown_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKCVec_u8Z scriptpubkey_arg); public static native long Shutdown_new(byte[] channel_id_arg, byte[] scriptpubkey_arg); + // struct LDKShutdown Shutdown_clone(const struct LDKShutdown *NONNULL_PTR orig); + public static native long Shutdown_clone(long orig); // void ClosingSigned_free(struct LDKClosingSigned this_ptr); public static native void ClosingSigned_free(long this_ptr); - // struct LDKClosingSigned ClosingSigned_clone(const struct LDKClosingSigned *NONNULL_PTR orig); - public static native long ClosingSigned_clone(long orig); // const uint8_t (*ClosingSigned_get_channel_id(const struct LDKClosingSigned *NONNULL_PTR this_ptr))[32]; public static native byte[] ClosingSigned_get_channel_id(long this_ptr); // void ClosingSigned_set_channel_id(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1781,10 +2189,10 @@ public class bindings { public static native void ClosingSigned_set_signature(long this_ptr, byte[] val); // MUST_USE_RES struct LDKClosingSigned ClosingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t fee_satoshis_arg, struct LDKSignature signature_arg); public static native long ClosingSigned_new(byte[] channel_id_arg, long fee_satoshis_arg, byte[] signature_arg); + // struct LDKClosingSigned ClosingSigned_clone(const struct LDKClosingSigned *NONNULL_PTR orig); + public static native long ClosingSigned_clone(long orig); // void UpdateAddHTLC_free(struct LDKUpdateAddHTLC this_ptr); public static native void UpdateAddHTLC_free(long this_ptr); - // struct LDKUpdateAddHTLC UpdateAddHTLC_clone(const struct LDKUpdateAddHTLC *NONNULL_PTR orig); - public static native long UpdateAddHTLC_clone(long orig); // const uint8_t (*UpdateAddHTLC_get_channel_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32]; public static native byte[] UpdateAddHTLC_get_channel_id(long this_ptr); // void UpdateAddHTLC_set_channel_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1805,10 +2213,10 @@ public class bindings { public static native int UpdateAddHTLC_get_cltv_expiry(long this_ptr); // void UpdateAddHTLC_set_cltv_expiry(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint32_t val); public static native void UpdateAddHTLC_set_cltv_expiry(long this_ptr, int val); + // struct LDKUpdateAddHTLC UpdateAddHTLC_clone(const struct LDKUpdateAddHTLC *NONNULL_PTR orig); + public static native long UpdateAddHTLC_clone(long orig); // void UpdateFulfillHTLC_free(struct LDKUpdateFulfillHTLC this_ptr); public static native void UpdateFulfillHTLC_free(long this_ptr); - // struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_clone(const struct LDKUpdateFulfillHTLC *NONNULL_PTR orig); - public static native long UpdateFulfillHTLC_clone(long orig); // const uint8_t (*UpdateFulfillHTLC_get_channel_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32]; public static native byte[] UpdateFulfillHTLC_get_channel_id(long this_ptr); // void UpdateFulfillHTLC_set_channel_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1823,10 +2231,10 @@ public class bindings { public static native void UpdateFulfillHTLC_set_payment_preimage(long this_ptr, byte[] val); // MUST_USE_RES struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t htlc_id_arg, struct LDKThirtyTwoBytes payment_preimage_arg); public static native long UpdateFulfillHTLC_new(byte[] channel_id_arg, long htlc_id_arg, byte[] payment_preimage_arg); + // struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_clone(const struct LDKUpdateFulfillHTLC *NONNULL_PTR orig); + public static native long UpdateFulfillHTLC_clone(long orig); // void UpdateFailHTLC_free(struct LDKUpdateFailHTLC this_ptr); public static native void UpdateFailHTLC_free(long this_ptr); - // struct LDKUpdateFailHTLC UpdateFailHTLC_clone(const struct LDKUpdateFailHTLC *NONNULL_PTR orig); - public static native long UpdateFailHTLC_clone(long orig); // const uint8_t (*UpdateFailHTLC_get_channel_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr))[32]; public static native byte[] UpdateFailHTLC_get_channel_id(long this_ptr); // void UpdateFailHTLC_set_channel_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1835,10 +2243,10 @@ public class bindings { public static native long UpdateFailHTLC_get_htlc_id(long this_ptr); // void UpdateFailHTLC_set_htlc_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, uint64_t val); public static native void UpdateFailHTLC_set_htlc_id(long this_ptr, long val); + // struct LDKUpdateFailHTLC UpdateFailHTLC_clone(const struct LDKUpdateFailHTLC *NONNULL_PTR orig); + public static native long UpdateFailHTLC_clone(long orig); // void UpdateFailMalformedHTLC_free(struct LDKUpdateFailMalformedHTLC this_ptr); public static native void UpdateFailMalformedHTLC_free(long this_ptr); - // struct LDKUpdateFailMalformedHTLC UpdateFailMalformedHTLC_clone(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR orig); - public static native long UpdateFailMalformedHTLC_clone(long orig); // const uint8_t (*UpdateFailMalformedHTLC_get_channel_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr))[32]; public static native byte[] UpdateFailMalformedHTLC_get_channel_id(long this_ptr); // void UpdateFailMalformedHTLC_set_channel_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1851,10 +2259,10 @@ public class bindings { public static native short UpdateFailMalformedHTLC_get_failure_code(long this_ptr); // void UpdateFailMalformedHTLC_set_failure_code(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint16_t val); public static native void UpdateFailMalformedHTLC_set_failure_code(long this_ptr, short val); + // struct LDKUpdateFailMalformedHTLC UpdateFailMalformedHTLC_clone(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR orig); + public static native long UpdateFailMalformedHTLC_clone(long orig); // void CommitmentSigned_free(struct LDKCommitmentSigned this_ptr); public static native void CommitmentSigned_free(long this_ptr); - // struct LDKCommitmentSigned CommitmentSigned_clone(const struct LDKCommitmentSigned *NONNULL_PTR orig); - public static native long CommitmentSigned_clone(long orig); // const uint8_t (*CommitmentSigned_get_channel_id(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr))[32]; public static native byte[] CommitmentSigned_get_channel_id(long this_ptr); // void CommitmentSigned_set_channel_id(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1867,10 +2275,10 @@ public class bindings { public static native void CommitmentSigned_set_htlc_signatures(long this_ptr, byte[][] val); // MUST_USE_RES struct LDKCommitmentSigned CommitmentSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg, struct LDKCVec_SignatureZ htlc_signatures_arg); public static native long CommitmentSigned_new(byte[] channel_id_arg, byte[] signature_arg, byte[][] htlc_signatures_arg); + // struct LDKCommitmentSigned CommitmentSigned_clone(const struct LDKCommitmentSigned *NONNULL_PTR orig); + public static native long CommitmentSigned_clone(long orig); // void RevokeAndACK_free(struct LDKRevokeAndACK this_ptr); public static native void RevokeAndACK_free(long this_ptr); - // struct LDKRevokeAndACK RevokeAndACK_clone(const struct LDKRevokeAndACK *NONNULL_PTR orig); - public static native long RevokeAndACK_clone(long orig); // const uint8_t (*RevokeAndACK_get_channel_id(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32]; public static native byte[] RevokeAndACK_get_channel_id(long this_ptr); // void RevokeAndACK_set_channel_id(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1885,10 +2293,10 @@ public class bindings { public static native void RevokeAndACK_set_next_per_commitment_point(long this_ptr, byte[] val); // MUST_USE_RES struct LDKRevokeAndACK RevokeAndACK_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKThirtyTwoBytes per_commitment_secret_arg, struct LDKPublicKey next_per_commitment_point_arg); public static native long RevokeAndACK_new(byte[] channel_id_arg, byte[] per_commitment_secret_arg, byte[] next_per_commitment_point_arg); + // struct LDKRevokeAndACK RevokeAndACK_clone(const struct LDKRevokeAndACK *NONNULL_PTR orig); + public static native long RevokeAndACK_clone(long orig); // void UpdateFee_free(struct LDKUpdateFee this_ptr); public static native void UpdateFee_free(long this_ptr); - // struct LDKUpdateFee UpdateFee_clone(const struct LDKUpdateFee *NONNULL_PTR orig); - public static native long UpdateFee_clone(long orig); // const uint8_t (*UpdateFee_get_channel_id(const struct LDKUpdateFee *NONNULL_PTR this_ptr))[32]; public static native byte[] UpdateFee_get_channel_id(long this_ptr); // void UpdateFee_set_channel_id(struct LDKUpdateFee *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1899,10 +2307,10 @@ public class bindings { public static native void UpdateFee_set_feerate_per_kw(long this_ptr, int val); // MUST_USE_RES struct LDKUpdateFee UpdateFee_new(struct LDKThirtyTwoBytes channel_id_arg, uint32_t feerate_per_kw_arg); public static native long UpdateFee_new(byte[] channel_id_arg, int feerate_per_kw_arg); + // struct LDKUpdateFee UpdateFee_clone(const struct LDKUpdateFee *NONNULL_PTR orig); + public static native long UpdateFee_clone(long orig); // void DataLossProtect_free(struct LDKDataLossProtect this_ptr); public static native void DataLossProtect_free(long this_ptr); - // struct LDKDataLossProtect DataLossProtect_clone(const struct LDKDataLossProtect *NONNULL_PTR orig); - public static native long DataLossProtect_clone(long orig); // const uint8_t (*DataLossProtect_get_your_last_per_commitment_secret(const struct LDKDataLossProtect *NONNULL_PTR this_ptr))[32]; public static native byte[] DataLossProtect_get_your_last_per_commitment_secret(long this_ptr); // void DataLossProtect_set_your_last_per_commitment_secret(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1913,10 +2321,10 @@ public class bindings { public static native void DataLossProtect_set_my_current_per_commitment_point(long this_ptr, byte[] val); // MUST_USE_RES struct LDKDataLossProtect DataLossProtect_new(struct LDKThirtyTwoBytes your_last_per_commitment_secret_arg, struct LDKPublicKey my_current_per_commitment_point_arg); public static native long DataLossProtect_new(byte[] your_last_per_commitment_secret_arg, byte[] my_current_per_commitment_point_arg); + // struct LDKDataLossProtect DataLossProtect_clone(const struct LDKDataLossProtect *NONNULL_PTR orig); + public static native long DataLossProtect_clone(long orig); // void ChannelReestablish_free(struct LDKChannelReestablish this_ptr); public static native void ChannelReestablish_free(long this_ptr); - // struct LDKChannelReestablish ChannelReestablish_clone(const struct LDKChannelReestablish *NONNULL_PTR orig); - public static native long ChannelReestablish_clone(long orig); // const uint8_t (*ChannelReestablish_get_channel_id(const struct LDKChannelReestablish *NONNULL_PTR this_ptr))[32]; public static native byte[] ChannelReestablish_get_channel_id(long this_ptr); // void ChannelReestablish_set_channel_id(struct LDKChannelReestablish *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1929,10 +2337,10 @@ public class bindings { public static native long ChannelReestablish_get_next_remote_commitment_number(long this_ptr); // void ChannelReestablish_set_next_remote_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val); public static native void ChannelReestablish_set_next_remote_commitment_number(long this_ptr, long val); + // struct LDKChannelReestablish ChannelReestablish_clone(const struct LDKChannelReestablish *NONNULL_PTR orig); + public static native long ChannelReestablish_clone(long orig); // void AnnouncementSignatures_free(struct LDKAnnouncementSignatures this_ptr); public static native void AnnouncementSignatures_free(long this_ptr); - // struct LDKAnnouncementSignatures AnnouncementSignatures_clone(const struct LDKAnnouncementSignatures *NONNULL_PTR orig); - public static native long AnnouncementSignatures_clone(long orig); // const uint8_t (*AnnouncementSignatures_get_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr))[32]; public static native byte[] AnnouncementSignatures_get_channel_id(long this_ptr); // void AnnouncementSignatures_set_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -1951,6 +2359,8 @@ public class bindings { public static native void AnnouncementSignatures_set_bitcoin_signature(long this_ptr, byte[] val); // MUST_USE_RES struct LDKAnnouncementSignatures AnnouncementSignatures_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t short_channel_id_arg, struct LDKSignature node_signature_arg, struct LDKSignature bitcoin_signature_arg); public static native long AnnouncementSignatures_new(byte[] channel_id_arg, long short_channel_id_arg, byte[] node_signature_arg, byte[] bitcoin_signature_arg); + // struct LDKAnnouncementSignatures AnnouncementSignatures_clone(const struct LDKAnnouncementSignatures *NONNULL_PTR orig); + public static native long AnnouncementSignatures_clone(long orig); // void NetAddress_free(struct LDKNetAddress this_ptr); public static native void NetAddress_free(long this_ptr); // struct LDKNetAddress NetAddress_clone(const struct LDKNetAddress *NONNULL_PTR orig); @@ -1961,8 +2371,6 @@ public class bindings { public static native long Result_read(byte[] ser); // void UnsignedNodeAnnouncement_free(struct LDKUnsignedNodeAnnouncement this_ptr); public static native void UnsignedNodeAnnouncement_free(long this_ptr); - // struct LDKUnsignedNodeAnnouncement UnsignedNodeAnnouncement_clone(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR orig); - public static native long UnsignedNodeAnnouncement_clone(long orig); // struct LDKNodeFeatures UnsignedNodeAnnouncement_get_features(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr); public static native long UnsignedNodeAnnouncement_get_features(long this_ptr); // void UnsignedNodeAnnouncement_set_features(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKNodeFeatures val); @@ -1985,10 +2393,10 @@ public class bindings { public static native void UnsignedNodeAnnouncement_set_alias(long this_ptr, byte[] val); // void UnsignedNodeAnnouncement_set_addresses(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val); public static native void UnsignedNodeAnnouncement_set_addresses(long this_ptr, long[] val); + // struct LDKUnsignedNodeAnnouncement UnsignedNodeAnnouncement_clone(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR orig); + public static native long UnsignedNodeAnnouncement_clone(long orig); // void NodeAnnouncement_free(struct LDKNodeAnnouncement this_ptr); public static native void NodeAnnouncement_free(long this_ptr); - // struct LDKNodeAnnouncement NodeAnnouncement_clone(const struct LDKNodeAnnouncement *NONNULL_PTR orig); - public static native long NodeAnnouncement_clone(long orig); // struct LDKSignature NodeAnnouncement_get_signature(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr); public static native byte[] NodeAnnouncement_get_signature(long this_ptr); // void NodeAnnouncement_set_signature(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val); @@ -1999,10 +2407,10 @@ public class bindings { public static native void NodeAnnouncement_set_contents(long this_ptr, long val); // MUST_USE_RES struct LDKNodeAnnouncement NodeAnnouncement_new(struct LDKSignature signature_arg, struct LDKUnsignedNodeAnnouncement contents_arg); public static native long NodeAnnouncement_new(byte[] signature_arg, long contents_arg); + // struct LDKNodeAnnouncement NodeAnnouncement_clone(const struct LDKNodeAnnouncement *NONNULL_PTR orig); + public static native long NodeAnnouncement_clone(long orig); // void UnsignedChannelAnnouncement_free(struct LDKUnsignedChannelAnnouncement this_ptr); public static native void UnsignedChannelAnnouncement_free(long this_ptr); - // struct LDKUnsignedChannelAnnouncement UnsignedChannelAnnouncement_clone(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR orig); - public static native long UnsignedChannelAnnouncement_clone(long orig); // struct LDKChannelFeatures UnsignedChannelAnnouncement_get_features(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr); public static native long UnsignedChannelAnnouncement_get_features(long this_ptr); // void UnsignedChannelAnnouncement_set_features(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKChannelFeatures val); @@ -2031,10 +2439,10 @@ public class bindings { public static native byte[] UnsignedChannelAnnouncement_get_bitcoin_key_2(long this_ptr); // void UnsignedChannelAnnouncement_set_bitcoin_key_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val); public static native void UnsignedChannelAnnouncement_set_bitcoin_key_2(long this_ptr, byte[] val); + // struct LDKUnsignedChannelAnnouncement UnsignedChannelAnnouncement_clone(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR orig); + public static native long UnsignedChannelAnnouncement_clone(long orig); // void ChannelAnnouncement_free(struct LDKChannelAnnouncement this_ptr); public static native void ChannelAnnouncement_free(long this_ptr); - // struct LDKChannelAnnouncement ChannelAnnouncement_clone(const struct LDKChannelAnnouncement *NONNULL_PTR orig); - public static native long ChannelAnnouncement_clone(long orig); // struct LDKSignature ChannelAnnouncement_get_node_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr); public static native byte[] ChannelAnnouncement_get_node_signature_1(long this_ptr); // void ChannelAnnouncement_set_node_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val); @@ -2057,10 +2465,10 @@ public class bindings { public static native void ChannelAnnouncement_set_contents(long this_ptr, long val); // MUST_USE_RES struct LDKChannelAnnouncement ChannelAnnouncement_new(struct LDKSignature node_signature_1_arg, struct LDKSignature node_signature_2_arg, struct LDKSignature bitcoin_signature_1_arg, struct LDKSignature bitcoin_signature_2_arg, struct LDKUnsignedChannelAnnouncement contents_arg); public static native long ChannelAnnouncement_new(byte[] node_signature_1_arg, byte[] node_signature_2_arg, byte[] bitcoin_signature_1_arg, byte[] bitcoin_signature_2_arg, long contents_arg); + // struct LDKChannelAnnouncement ChannelAnnouncement_clone(const struct LDKChannelAnnouncement *NONNULL_PTR orig); + public static native long ChannelAnnouncement_clone(long orig); // void UnsignedChannelUpdate_free(struct LDKUnsignedChannelUpdate this_ptr); public static native void UnsignedChannelUpdate_free(long this_ptr); - // struct LDKUnsignedChannelUpdate UnsignedChannelUpdate_clone(const struct LDKUnsignedChannelUpdate *NONNULL_PTR orig); - public static native long UnsignedChannelUpdate_clone(long orig); // const uint8_t (*UnsignedChannelUpdate_get_chain_hash(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr))[32]; public static native byte[] UnsignedChannelUpdate_get_chain_hash(long this_ptr); // void UnsignedChannelUpdate_set_chain_hash(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -2093,10 +2501,10 @@ public class bindings { public static native int UnsignedChannelUpdate_get_fee_proportional_millionths(long this_ptr); // void UnsignedChannelUpdate_set_fee_proportional_millionths(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val); public static native void UnsignedChannelUpdate_set_fee_proportional_millionths(long this_ptr, int val); + // struct LDKUnsignedChannelUpdate UnsignedChannelUpdate_clone(const struct LDKUnsignedChannelUpdate *NONNULL_PTR orig); + public static native long UnsignedChannelUpdate_clone(long orig); // void ChannelUpdate_free(struct LDKChannelUpdate this_ptr); public static native void ChannelUpdate_free(long this_ptr); - // struct LDKChannelUpdate ChannelUpdate_clone(const struct LDKChannelUpdate *NONNULL_PTR orig); - public static native long ChannelUpdate_clone(long orig); // struct LDKSignature ChannelUpdate_get_signature(const struct LDKChannelUpdate *NONNULL_PTR this_ptr); public static native byte[] ChannelUpdate_get_signature(long this_ptr); // void ChannelUpdate_set_signature(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKSignature val); @@ -2107,10 +2515,10 @@ public class bindings { public static native void ChannelUpdate_set_contents(long this_ptr, long val); // MUST_USE_RES struct LDKChannelUpdate ChannelUpdate_new(struct LDKSignature signature_arg, struct LDKUnsignedChannelUpdate contents_arg); public static native long ChannelUpdate_new(byte[] signature_arg, long contents_arg); + // struct LDKChannelUpdate ChannelUpdate_clone(const struct LDKChannelUpdate *NONNULL_PTR orig); + public static native long ChannelUpdate_clone(long orig); // void QueryChannelRange_free(struct LDKQueryChannelRange this_ptr); public static native void QueryChannelRange_free(long this_ptr); - // struct LDKQueryChannelRange QueryChannelRange_clone(const struct LDKQueryChannelRange *NONNULL_PTR orig); - public static native long QueryChannelRange_clone(long orig); // const uint8_t (*QueryChannelRange_get_chain_hash(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr))[32]; public static native byte[] QueryChannelRange_get_chain_hash(long this_ptr); // void QueryChannelRange_set_chain_hash(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -2125,10 +2533,10 @@ public class bindings { public static native void QueryChannelRange_set_number_of_blocks(long this_ptr, int val); // MUST_USE_RES struct LDKQueryChannelRange QueryChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg); public static native long QueryChannelRange_new(byte[] chain_hash_arg, int first_blocknum_arg, int number_of_blocks_arg); + // struct LDKQueryChannelRange QueryChannelRange_clone(const struct LDKQueryChannelRange *NONNULL_PTR orig); + public static native long QueryChannelRange_clone(long orig); // void ReplyChannelRange_free(struct LDKReplyChannelRange this_ptr); public static native void ReplyChannelRange_free(long this_ptr); - // struct LDKReplyChannelRange ReplyChannelRange_clone(const struct LDKReplyChannelRange *NONNULL_PTR orig); - public static native long ReplyChannelRange_clone(long orig); // const uint8_t (*ReplyChannelRange_get_chain_hash(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr))[32]; public static native byte[] ReplyChannelRange_get_chain_hash(long this_ptr); // void ReplyChannelRange_set_chain_hash(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -2141,18 +2549,18 @@ public class bindings { public static native int ReplyChannelRange_get_number_of_blocks(long this_ptr); // void ReplyChannelRange_set_number_of_blocks(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val); public static native void ReplyChannelRange_set_number_of_blocks(long this_ptr, int val); - // bool ReplyChannelRange_get_full_information(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr); - public static native boolean ReplyChannelRange_get_full_information(long this_ptr); - // void ReplyChannelRange_set_full_information(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, bool val); - public static native void ReplyChannelRange_set_full_information(long this_ptr, boolean val); + // bool ReplyChannelRange_get_sync_complete(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr); + public static native boolean ReplyChannelRange_get_sync_complete(long this_ptr); + // void ReplyChannelRange_set_sync_complete(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, bool val); + public static native void ReplyChannelRange_set_sync_complete(long this_ptr, boolean val); // void ReplyChannelRange_set_short_channel_ids(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val); public static native void ReplyChannelRange_set_short_channel_ids(long this_ptr, long[] val); - // MUST_USE_RES struct LDKReplyChannelRange ReplyChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg, bool full_information_arg, struct LDKCVec_u64Z short_channel_ids_arg); - public static native long ReplyChannelRange_new(byte[] chain_hash_arg, int first_blocknum_arg, int number_of_blocks_arg, boolean full_information_arg, long[] short_channel_ids_arg); + // MUST_USE_RES struct LDKReplyChannelRange ReplyChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg, bool sync_complete_arg, struct LDKCVec_u64Z short_channel_ids_arg); + public static native long ReplyChannelRange_new(byte[] chain_hash_arg, int first_blocknum_arg, int number_of_blocks_arg, boolean sync_complete_arg, long[] short_channel_ids_arg); + // struct LDKReplyChannelRange ReplyChannelRange_clone(const struct LDKReplyChannelRange *NONNULL_PTR orig); + public static native long ReplyChannelRange_clone(long orig); // void QueryShortChannelIds_free(struct LDKQueryShortChannelIds this_ptr); public static native void QueryShortChannelIds_free(long this_ptr); - // struct LDKQueryShortChannelIds QueryShortChannelIds_clone(const struct LDKQueryShortChannelIds *NONNULL_PTR orig); - public static native long QueryShortChannelIds_clone(long orig); // const uint8_t (*QueryShortChannelIds_get_chain_hash(const struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr))[32]; public static native byte[] QueryShortChannelIds_get_chain_hash(long this_ptr); // void QueryShortChannelIds_set_chain_hash(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -2161,10 +2569,10 @@ public class bindings { public static native void QueryShortChannelIds_set_short_channel_ids(long this_ptr, long[] val); // MUST_USE_RES struct LDKQueryShortChannelIds QueryShortChannelIds_new(struct LDKThirtyTwoBytes chain_hash_arg, struct LDKCVec_u64Z short_channel_ids_arg); public static native long QueryShortChannelIds_new(byte[] chain_hash_arg, long[] short_channel_ids_arg); + // struct LDKQueryShortChannelIds QueryShortChannelIds_clone(const struct LDKQueryShortChannelIds *NONNULL_PTR orig); + public static native long QueryShortChannelIds_clone(long orig); // void ReplyShortChannelIdsEnd_free(struct LDKReplyShortChannelIdsEnd this_ptr); public static native void ReplyShortChannelIdsEnd_free(long this_ptr); - // struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_clone(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR orig); - public static native long ReplyShortChannelIdsEnd_clone(long orig); // const uint8_t (*ReplyShortChannelIdsEnd_get_chain_hash(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr))[32]; public static native byte[] ReplyShortChannelIdsEnd_get_chain_hash(long this_ptr); // void ReplyShortChannelIdsEnd_set_chain_hash(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -2175,10 +2583,10 @@ public class bindings { public static native void ReplyShortChannelIdsEnd_set_full_information(long this_ptr, boolean val); // MUST_USE_RES struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_new(struct LDKThirtyTwoBytes chain_hash_arg, bool full_information_arg); public static native long ReplyShortChannelIdsEnd_new(byte[] chain_hash_arg, boolean full_information_arg); + // struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_clone(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR orig); + public static native long ReplyShortChannelIdsEnd_clone(long orig); // void GossipTimestampFilter_free(struct LDKGossipTimestampFilter this_ptr); public static native void GossipTimestampFilter_free(long this_ptr); - // struct LDKGossipTimestampFilter GossipTimestampFilter_clone(const struct LDKGossipTimestampFilter *NONNULL_PTR orig); - public static native long GossipTimestampFilter_clone(long orig); // const uint8_t (*GossipTimestampFilter_get_chain_hash(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr))[32]; public static native byte[] GossipTimestampFilter_get_chain_hash(long this_ptr); // void GossipTimestampFilter_set_chain_hash(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); @@ -2193,14 +2601,14 @@ public class bindings { public static native void GossipTimestampFilter_set_timestamp_range(long this_ptr, int val); // MUST_USE_RES struct LDKGossipTimestampFilter GossipTimestampFilter_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_timestamp_arg, uint32_t timestamp_range_arg); public static native long GossipTimestampFilter_new(byte[] chain_hash_arg, int first_timestamp_arg, int timestamp_range_arg); + // struct LDKGossipTimestampFilter GossipTimestampFilter_clone(const struct LDKGossipTimestampFilter *NONNULL_PTR orig); + public static native long GossipTimestampFilter_clone(long orig); // void ErrorAction_free(struct LDKErrorAction this_ptr); public static native void ErrorAction_free(long this_ptr); // struct LDKErrorAction ErrorAction_clone(const struct LDKErrorAction *NONNULL_PTR orig); public static native long ErrorAction_clone(long orig); // void LightningError_free(struct LDKLightningError this_ptr); public static native void LightningError_free(long this_ptr); - // struct LDKLightningError LightningError_clone(const struct LDKLightningError *NONNULL_PTR orig); - public static native long LightningError_clone(long orig); // struct LDKStr LightningError_get_err(const struct LDKLightningError *NONNULL_PTR this_ptr); public static native String LightningError_get_err(long this_ptr); // void LightningError_set_err(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val); @@ -2211,10 +2619,10 @@ public class bindings { public static native void LightningError_set_action(long this_ptr, long val); // MUST_USE_RES struct LDKLightningError LightningError_new(struct LDKCVec_u8Z err_arg, struct LDKErrorAction action_arg); public static native long LightningError_new(byte[] err_arg, long action_arg); + // struct LDKLightningError LightningError_clone(const struct LDKLightningError *NONNULL_PTR orig); + public static native long LightningError_clone(long orig); // void CommitmentUpdate_free(struct LDKCommitmentUpdate this_ptr); public static native void CommitmentUpdate_free(long this_ptr); - // struct LDKCommitmentUpdate CommitmentUpdate_clone(const struct LDKCommitmentUpdate *NONNULL_PTR orig); - public static native long CommitmentUpdate_clone(long orig); // void CommitmentUpdate_set_update_add_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateAddHTLCZ val); public static native void CommitmentUpdate_set_update_add_htlcs(long this_ptr, long[] val); // void CommitmentUpdate_set_update_fulfill_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFulfillHTLCZ val); @@ -2233,6 +2641,8 @@ public class bindings { public static native void CommitmentUpdate_set_commitment_signed(long this_ptr, long val); // MUST_USE_RES struct LDKCommitmentUpdate CommitmentUpdate_new(struct LDKCVec_UpdateAddHTLCZ update_add_htlcs_arg, struct LDKCVec_UpdateFulfillHTLCZ update_fulfill_htlcs_arg, struct LDKCVec_UpdateFailHTLCZ update_fail_htlcs_arg, struct LDKCVec_UpdateFailMalformedHTLCZ update_fail_malformed_htlcs_arg, struct LDKUpdateFee update_fee_arg, struct LDKCommitmentSigned commitment_signed_arg); public static native long CommitmentUpdate_new(long[] update_add_htlcs_arg, long[] update_fulfill_htlcs_arg, long[] update_fail_htlcs_arg, long[] update_fail_malformed_htlcs_arg, long update_fee_arg, long commitment_signed_arg); + // struct LDKCommitmentUpdate CommitmentUpdate_clone(const struct LDKCommitmentUpdate *NONNULL_PTR orig); + public static native long CommitmentUpdate_clone(long orig); // void HTLCFailChannelUpdate_free(struct LDKHTLCFailChannelUpdate this_ptr); public static native void HTLCFailChannelUpdate_free(long this_ptr); // struct LDKHTLCFailChannelUpdate HTLCFailChannelUpdate_clone(const struct LDKHTLCFailChannelUpdate *NONNULL_PTR orig); @@ -2243,11 +2653,11 @@ public class bindings { public static native void RoutingMessageHandler_free(long this_ptr); // struct LDKCVec_u8Z AcceptChannel_write(const struct LDKAcceptChannel *NONNULL_PTR obj); public static native byte[] AcceptChannel_write(long obj); - // struct LDKAcceptChannel AcceptChannel_read(struct LDKu8slice ser); + // struct LDKCResult_AcceptChannelDecodeErrorZ AcceptChannel_read(struct LDKu8slice ser); public static native long AcceptChannel_read(byte[] ser); // struct LDKCVec_u8Z AnnouncementSignatures_write(const struct LDKAnnouncementSignatures *NONNULL_PTR obj); public static native byte[] AnnouncementSignatures_write(long obj); - // struct LDKAnnouncementSignatures AnnouncementSignatures_read(struct LDKu8slice ser); + // struct LDKCResult_AnnouncementSignaturesDecodeErrorZ AnnouncementSignatures_read(struct LDKu8slice ser); public static native long AnnouncementSignatures_read(byte[] ser); // struct LDKCVec_u8Z ChannelReestablish_write(const struct LDKChannelReestablish *NONNULL_PTR obj); public static native byte[] ChannelReestablish_write(long obj); @@ -2255,23 +2665,23 @@ public class bindings { public static native long ChannelReestablish_read(byte[] ser); // struct LDKCVec_u8Z ClosingSigned_write(const struct LDKClosingSigned *NONNULL_PTR obj); public static native byte[] ClosingSigned_write(long obj); - // struct LDKClosingSigned ClosingSigned_read(struct LDKu8slice ser); + // struct LDKCResult_ClosingSignedDecodeErrorZ ClosingSigned_read(struct LDKu8slice ser); public static native long ClosingSigned_read(byte[] ser); // struct LDKCVec_u8Z CommitmentSigned_write(const struct LDKCommitmentSigned *NONNULL_PTR obj); public static native byte[] CommitmentSigned_write(long obj); - // struct LDKCommitmentSigned CommitmentSigned_read(struct LDKu8slice ser); + // struct LDKCResult_CommitmentSignedDecodeErrorZ CommitmentSigned_read(struct LDKu8slice ser); public static native long CommitmentSigned_read(byte[] ser); // struct LDKCVec_u8Z FundingCreated_write(const struct LDKFundingCreated *NONNULL_PTR obj); public static native byte[] FundingCreated_write(long obj); - // struct LDKFundingCreated FundingCreated_read(struct LDKu8slice ser); + // struct LDKCResult_FundingCreatedDecodeErrorZ FundingCreated_read(struct LDKu8slice ser); public static native long FundingCreated_read(byte[] ser); // struct LDKCVec_u8Z FundingSigned_write(const struct LDKFundingSigned *NONNULL_PTR obj); public static native byte[] FundingSigned_write(long obj); - // struct LDKFundingSigned FundingSigned_read(struct LDKu8slice ser); + // struct LDKCResult_FundingSignedDecodeErrorZ FundingSigned_read(struct LDKu8slice ser); public static native long FundingSigned_read(byte[] ser); // struct LDKCVec_u8Z FundingLocked_write(const struct LDKFundingLocked *NONNULL_PTR obj); public static native byte[] FundingLocked_write(long obj); - // struct LDKFundingLocked FundingLocked_read(struct LDKu8slice ser); + // struct LDKCResult_FundingLockedDecodeErrorZ FundingLocked_read(struct LDKu8slice ser); public static native long FundingLocked_read(byte[] ser); // struct LDKCVec_u8Z Init_write(const struct LDKInit *NONNULL_PTR obj); public static native byte[] Init_write(long obj); @@ -2279,35 +2689,35 @@ public class bindings { public static native long Init_read(byte[] ser); // struct LDKCVec_u8Z OpenChannel_write(const struct LDKOpenChannel *NONNULL_PTR obj); public static native byte[] OpenChannel_write(long obj); - // struct LDKOpenChannel OpenChannel_read(struct LDKu8slice ser); + // struct LDKCResult_OpenChannelDecodeErrorZ OpenChannel_read(struct LDKu8slice ser); public static native long OpenChannel_read(byte[] ser); // struct LDKCVec_u8Z RevokeAndACK_write(const struct LDKRevokeAndACK *NONNULL_PTR obj); public static native byte[] RevokeAndACK_write(long obj); - // struct LDKRevokeAndACK RevokeAndACK_read(struct LDKu8slice ser); + // struct LDKCResult_RevokeAndACKDecodeErrorZ RevokeAndACK_read(struct LDKu8slice ser); public static native long RevokeAndACK_read(byte[] ser); // struct LDKCVec_u8Z Shutdown_write(const struct LDKShutdown *NONNULL_PTR obj); public static native byte[] Shutdown_write(long obj); - // struct LDKShutdown Shutdown_read(struct LDKu8slice ser); + // struct LDKCResult_ShutdownDecodeErrorZ Shutdown_read(struct LDKu8slice ser); public static native long Shutdown_read(byte[] ser); // struct LDKCVec_u8Z UpdateFailHTLC_write(const struct LDKUpdateFailHTLC *NONNULL_PTR obj); public static native byte[] UpdateFailHTLC_write(long obj); - // struct LDKUpdateFailHTLC UpdateFailHTLC_read(struct LDKu8slice ser); + // struct LDKCResult_UpdateFailHTLCDecodeErrorZ UpdateFailHTLC_read(struct LDKu8slice ser); public static native long UpdateFailHTLC_read(byte[] ser); // struct LDKCVec_u8Z UpdateFailMalformedHTLC_write(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR obj); public static native byte[] UpdateFailMalformedHTLC_write(long obj); - // struct LDKUpdateFailMalformedHTLC UpdateFailMalformedHTLC_read(struct LDKu8slice ser); + // struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ UpdateFailMalformedHTLC_read(struct LDKu8slice ser); public static native long UpdateFailMalformedHTLC_read(byte[] ser); // struct LDKCVec_u8Z UpdateFee_write(const struct LDKUpdateFee *NONNULL_PTR obj); public static native byte[] UpdateFee_write(long obj); - // struct LDKUpdateFee UpdateFee_read(struct LDKu8slice ser); + // struct LDKCResult_UpdateFeeDecodeErrorZ UpdateFee_read(struct LDKu8slice ser); public static native long UpdateFee_read(byte[] ser); // struct LDKCVec_u8Z UpdateFulfillHTLC_write(const struct LDKUpdateFulfillHTLC *NONNULL_PTR obj); public static native byte[] UpdateFulfillHTLC_write(long obj); - // struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_read(struct LDKu8slice ser); + // struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ UpdateFulfillHTLC_read(struct LDKu8slice ser); public static native long UpdateFulfillHTLC_read(byte[] ser); // struct LDKCVec_u8Z UpdateAddHTLC_write(const struct LDKUpdateAddHTLC *NONNULL_PTR obj); public static native byte[] UpdateAddHTLC_write(long obj); - // struct LDKUpdateAddHTLC UpdateAddHTLC_read(struct LDKu8slice ser); + // struct LDKCResult_UpdateAddHTLCDecodeErrorZ UpdateAddHTLC_read(struct LDKu8slice ser); public static native long UpdateAddHTLC_read(byte[] ser); // struct LDKCVec_u8Z Ping_write(const struct LDKPing *NONNULL_PTR obj); public static native byte[] Ping_write(long obj); @@ -2323,7 +2733,7 @@ public class bindings { public static native long UnsignedChannelAnnouncement_read(byte[] ser); // struct LDKCVec_u8Z ChannelAnnouncement_write(const struct LDKChannelAnnouncement *NONNULL_PTR obj); public static native byte[] ChannelAnnouncement_write(long obj); - // struct LDKChannelAnnouncement ChannelAnnouncement_read(struct LDKu8slice ser); + // struct LDKCResult_ChannelAnnouncementDecodeErrorZ ChannelAnnouncement_read(struct LDKu8slice ser); public static native long ChannelAnnouncement_read(byte[] ser); // struct LDKCVec_u8Z UnsignedChannelUpdate_write(const struct LDKUnsignedChannelUpdate *NONNULL_PTR obj); public static native byte[] UnsignedChannelUpdate_write(long obj); @@ -2331,7 +2741,7 @@ public class bindings { public static native long UnsignedChannelUpdate_read(byte[] ser); // struct LDKCVec_u8Z ChannelUpdate_write(const struct LDKChannelUpdate *NONNULL_PTR obj); public static native byte[] ChannelUpdate_write(long obj); - // struct LDKChannelUpdate ChannelUpdate_read(struct LDKu8slice ser); + // struct LDKCResult_ChannelUpdateDecodeErrorZ ChannelUpdate_read(struct LDKu8slice ser); public static native long ChannelUpdate_read(byte[] ser); // struct LDKCVec_u8Z ErrorMessage_write(const struct LDKErrorMessage *NONNULL_PTR obj); public static native byte[] ErrorMessage_write(long obj); @@ -2343,7 +2753,7 @@ public class bindings { public static native long UnsignedNodeAnnouncement_read(byte[] ser); // struct LDKCVec_u8Z NodeAnnouncement_write(const struct LDKNodeAnnouncement *NONNULL_PTR obj); public static native byte[] NodeAnnouncement_write(long obj); - // struct LDKNodeAnnouncement NodeAnnouncement_read(struct LDKu8slice ser); + // struct LDKCResult_NodeAnnouncementDecodeErrorZ NodeAnnouncement_read(struct LDKu8slice ser); public static native long NodeAnnouncement_read(byte[] ser); // struct LDKCResult_QueryShortChannelIdsDecodeErrorZ QueryShortChannelIds_read(struct LDKu8slice ser); public static native long QueryShortChannelIds_read(byte[] ser); @@ -2383,14 +2793,14 @@ public class bindings { public static native void SocketDescriptor_free(long this_ptr); // void PeerHandleError_free(struct LDKPeerHandleError this_ptr); public static native void PeerHandleError_free(long this_ptr); - // struct LDKPeerHandleError PeerHandleError_clone(const struct LDKPeerHandleError *NONNULL_PTR orig); - public static native long PeerHandleError_clone(long orig); // bool PeerHandleError_get_no_connection_possible(const struct LDKPeerHandleError *NONNULL_PTR this_ptr); public static native boolean PeerHandleError_get_no_connection_possible(long this_ptr); // void PeerHandleError_set_no_connection_possible(struct LDKPeerHandleError *NONNULL_PTR this_ptr, bool val); public static native void PeerHandleError_set_no_connection_possible(long this_ptr, boolean val); // MUST_USE_RES struct LDKPeerHandleError PeerHandleError_new(bool no_connection_possible_arg); public static native long PeerHandleError_new(boolean no_connection_possible_arg); + // struct LDKPeerHandleError PeerHandleError_clone(const struct LDKPeerHandleError *NONNULL_PTR orig); + public static native long PeerHandleError_clone(long orig); // void PeerManager_free(struct LDKPeerManager this_ptr); public static native void PeerManager_free(long this_ptr); // MUST_USE_RES struct LDKPeerManager PeerManager_new(struct LDKMessageHandler message_handler, struct LDKSecretKey our_node_secret, const uint8_t (*ephemeral_random_data)[32], struct LDKLogger logger); @@ -2415,18 +2825,16 @@ public class bindings { public static native void PeerManager_timer_tick_occured(long this_arg); // struct LDKThirtyTwoBytes build_commitment_secret(const uint8_t (*commitment_seed)[32], uint64_t idx); public static native byte[] build_commitment_secret(byte[] commitment_seed, long idx); - // struct LDKCResult_SecretKeySecpErrorZ derive_private_key(struct LDKPublicKey per_commitment_point, const uint8_t (*base_secret)[32]); + // struct LDKCResult_SecretKeyErrorZ derive_private_key(struct LDKPublicKey per_commitment_point, const uint8_t (*base_secret)[32]); public static native long derive_private_key(byte[] per_commitment_point, byte[] base_secret); - // struct LDKCResult_PublicKeySecpErrorZ derive_public_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey base_point); + // struct LDKCResult_PublicKeyErrorZ derive_public_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey base_point); public static native long derive_public_key(byte[] per_commitment_point, byte[] base_point); - // struct LDKCResult_SecretKeySecpErrorZ derive_private_revocation_key(const uint8_t (*per_commitment_secret)[32], const uint8_t (*countersignatory_revocation_base_secret)[32]); + // struct LDKCResult_SecretKeyErrorZ derive_private_revocation_key(const uint8_t (*per_commitment_secret)[32], const uint8_t (*countersignatory_revocation_base_secret)[32]); public static native long derive_private_revocation_key(byte[] per_commitment_secret, byte[] countersignatory_revocation_base_secret); - // struct LDKCResult_PublicKeySecpErrorZ derive_public_revocation_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey countersignatory_revocation_base_point); + // struct LDKCResult_PublicKeyErrorZ derive_public_revocation_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey countersignatory_revocation_base_point); public static native long derive_public_revocation_key(byte[] per_commitment_point, byte[] countersignatory_revocation_base_point); // void TxCreationKeys_free(struct LDKTxCreationKeys this_ptr); public static native void TxCreationKeys_free(long this_ptr); - // struct LDKTxCreationKeys TxCreationKeys_clone(const struct LDKTxCreationKeys *NONNULL_PTR orig); - public static native long TxCreationKeys_clone(long orig); // struct LDKPublicKey TxCreationKeys_get_per_commitment_point(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr); public static native byte[] TxCreationKeys_get_per_commitment_point(long this_ptr); // void TxCreationKeys_set_per_commitment_point(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val); @@ -2449,14 +2857,14 @@ public class bindings { public static native void TxCreationKeys_set_broadcaster_delayed_payment_key(long this_ptr, byte[] val); // MUST_USE_RES struct LDKTxCreationKeys TxCreationKeys_new(struct LDKPublicKey per_commitment_point_arg, struct LDKPublicKey revocation_key_arg, struct LDKPublicKey broadcaster_htlc_key_arg, struct LDKPublicKey countersignatory_htlc_key_arg, struct LDKPublicKey broadcaster_delayed_payment_key_arg); public static native long TxCreationKeys_new(byte[] per_commitment_point_arg, byte[] revocation_key_arg, byte[] broadcaster_htlc_key_arg, byte[] countersignatory_htlc_key_arg, byte[] broadcaster_delayed_payment_key_arg); + // struct LDKTxCreationKeys TxCreationKeys_clone(const struct LDKTxCreationKeys *NONNULL_PTR orig); + public static native long TxCreationKeys_clone(long orig); // struct LDKCVec_u8Z TxCreationKeys_write(const struct LDKTxCreationKeys *NONNULL_PTR obj); public static native byte[] TxCreationKeys_write(long obj); - // struct LDKTxCreationKeys TxCreationKeys_read(struct LDKu8slice ser); + // struct LDKCResult_TxCreationKeysDecodeErrorZ TxCreationKeys_read(struct LDKu8slice ser); public static native long TxCreationKeys_read(byte[] ser); // void ChannelPublicKeys_free(struct LDKChannelPublicKeys this_ptr); public static native void ChannelPublicKeys_free(long this_ptr); - // struct LDKChannelPublicKeys ChannelPublicKeys_clone(const struct LDKChannelPublicKeys *NONNULL_PTR orig); - public static native long ChannelPublicKeys_clone(long orig); // struct LDKPublicKey ChannelPublicKeys_get_funding_pubkey(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr); public static native byte[] ChannelPublicKeys_get_funding_pubkey(long this_ptr); // void ChannelPublicKeys_set_funding_pubkey(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val); @@ -2479,20 +2887,20 @@ public class bindings { public static native void ChannelPublicKeys_set_htlc_basepoint(long this_ptr, byte[] val); // MUST_USE_RES struct LDKChannelPublicKeys ChannelPublicKeys_new(struct LDKPublicKey funding_pubkey_arg, struct LDKPublicKey revocation_basepoint_arg, struct LDKPublicKey payment_point_arg, struct LDKPublicKey delayed_payment_basepoint_arg, struct LDKPublicKey htlc_basepoint_arg); public static native long ChannelPublicKeys_new(byte[] funding_pubkey_arg, byte[] revocation_basepoint_arg, byte[] payment_point_arg, byte[] delayed_payment_basepoint_arg, byte[] htlc_basepoint_arg); + // struct LDKChannelPublicKeys ChannelPublicKeys_clone(const struct LDKChannelPublicKeys *NONNULL_PTR orig); + public static native long ChannelPublicKeys_clone(long orig); // struct LDKCVec_u8Z ChannelPublicKeys_write(const struct LDKChannelPublicKeys *NONNULL_PTR obj); public static native byte[] ChannelPublicKeys_write(long obj); - // struct LDKChannelPublicKeys ChannelPublicKeys_read(struct LDKu8slice ser); + // struct LDKCResult_ChannelPublicKeysDecodeErrorZ ChannelPublicKeys_read(struct LDKu8slice ser); public static native long ChannelPublicKeys_read(byte[] ser); - // MUST_USE_RES struct LDKCResult_TxCreationKeysSecpErrorZ TxCreationKeys_derive_new(struct LDKPublicKey per_commitment_point, struct LDKPublicKey broadcaster_delayed_payment_base, struct LDKPublicKey broadcaster_htlc_base, struct LDKPublicKey countersignatory_revocation_base, struct LDKPublicKey countersignatory_htlc_base); + // MUST_USE_RES struct LDKCResult_TxCreationKeysErrorZ TxCreationKeys_derive_new(struct LDKPublicKey per_commitment_point, struct LDKPublicKey broadcaster_delayed_payment_base, struct LDKPublicKey broadcaster_htlc_base, struct LDKPublicKey countersignatory_revocation_base, struct LDKPublicKey countersignatory_htlc_base); public static native long TxCreationKeys_derive_new(byte[] per_commitment_point, byte[] broadcaster_delayed_payment_base, byte[] broadcaster_htlc_base, byte[] countersignatory_revocation_base, byte[] countersignatory_htlc_base); - // MUST_USE_RES struct LDKCResult_TxCreationKeysSecpErrorZ TxCreationKeys_from_channel_static_keys(struct LDKPublicKey per_commitment_point, const struct LDKChannelPublicKeys *NONNULL_PTR broadcaster_keys, const struct LDKChannelPublicKeys *NONNULL_PTR countersignatory_keys); + // MUST_USE_RES struct LDKCResult_TxCreationKeysErrorZ TxCreationKeys_from_channel_static_keys(struct LDKPublicKey per_commitment_point, const struct LDKChannelPublicKeys *NONNULL_PTR broadcaster_keys, const struct LDKChannelPublicKeys *NONNULL_PTR countersignatory_keys); public static native long TxCreationKeys_from_channel_static_keys(byte[] per_commitment_point, long broadcaster_keys, long countersignatory_keys); // struct LDKCVec_u8Z get_revokeable_redeemscript(struct LDKPublicKey revocation_key, uint16_t contest_delay, struct LDKPublicKey broadcaster_delayed_payment_key); public static native byte[] get_revokeable_redeemscript(byte[] revocation_key, short contest_delay, byte[] broadcaster_delayed_payment_key); // void HTLCOutputInCommitment_free(struct LDKHTLCOutputInCommitment this_ptr); public static native void HTLCOutputInCommitment_free(long this_ptr); - // struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_clone(const struct LDKHTLCOutputInCommitment *NONNULL_PTR orig); - public static native long HTLCOutputInCommitment_clone(long orig); // bool HTLCOutputInCommitment_get_offered(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr); public static native boolean HTLCOutputInCommitment_get_offered(long this_ptr); // void HTLCOutputInCommitment_set_offered(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, bool val); @@ -2509,9 +2917,11 @@ public class bindings { public static native byte[] HTLCOutputInCommitment_get_payment_hash(long this_ptr); // void HTLCOutputInCommitment_set_payment_hash(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val); public static native void HTLCOutputInCommitment_set_payment_hash(long this_ptr, byte[] val); + // struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_clone(const struct LDKHTLCOutputInCommitment *NONNULL_PTR orig); + public static native long HTLCOutputInCommitment_clone(long orig); // struct LDKCVec_u8Z HTLCOutputInCommitment_write(const struct LDKHTLCOutputInCommitment *NONNULL_PTR obj); public static native byte[] HTLCOutputInCommitment_write(long obj); - // struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_read(struct LDKu8slice ser); + // struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ HTLCOutputInCommitment_read(struct LDKu8slice ser); public static native long HTLCOutputInCommitment_read(byte[] ser); // struct LDKCVec_u8Z get_htlc_redeemscript(const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc, const struct LDKTxCreationKeys *NONNULL_PTR keys); public static native byte[] get_htlc_redeemscript(long htlc, long keys); @@ -2521,8 +2931,6 @@ public class bindings { public static native byte[] build_htlc_transaction(byte[] prev_hash, int feerate_per_kw, short contest_delay, long htlc, byte[] broadcaster_delayed_payment_key, byte[] revocation_key); // void ChannelTransactionParameters_free(struct LDKChannelTransactionParameters this_ptr); public static native void ChannelTransactionParameters_free(long this_ptr); - // struct LDKChannelTransactionParameters ChannelTransactionParameters_clone(const struct LDKChannelTransactionParameters *NONNULL_PTR orig); - public static native long ChannelTransactionParameters_clone(long orig); // struct LDKChannelPublicKeys ChannelTransactionParameters_get_holder_pubkeys(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr); public static native long ChannelTransactionParameters_get_holder_pubkeys(long this_ptr); // void ChannelTransactionParameters_set_holder_pubkeys(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val); @@ -2545,10 +2953,10 @@ public class bindings { public static native void ChannelTransactionParameters_set_funding_outpoint(long this_ptr, long val); // MUST_USE_RES struct LDKChannelTransactionParameters ChannelTransactionParameters_new(struct LDKChannelPublicKeys holder_pubkeys_arg, uint16_t holder_selected_contest_delay_arg, bool is_outbound_from_holder_arg, struct LDKCounterpartyChannelTransactionParameters counterparty_parameters_arg, struct LDKOutPoint funding_outpoint_arg); public static native long ChannelTransactionParameters_new(long holder_pubkeys_arg, short holder_selected_contest_delay_arg, boolean is_outbound_from_holder_arg, long counterparty_parameters_arg, long funding_outpoint_arg); + // struct LDKChannelTransactionParameters ChannelTransactionParameters_clone(const struct LDKChannelTransactionParameters *NONNULL_PTR orig); + public static native long ChannelTransactionParameters_clone(long orig); // void CounterpartyChannelTransactionParameters_free(struct LDKCounterpartyChannelTransactionParameters this_ptr); public static native void CounterpartyChannelTransactionParameters_free(long this_ptr); - // struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_clone(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR orig); - public static native long CounterpartyChannelTransactionParameters_clone(long orig); // struct LDKChannelPublicKeys CounterpartyChannelTransactionParameters_get_pubkeys(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr); public static native long CounterpartyChannelTransactionParameters_get_pubkeys(long this_ptr); // void CounterpartyChannelTransactionParameters_set_pubkeys(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val); @@ -2559,6 +2967,8 @@ public class bindings { public static native void CounterpartyChannelTransactionParameters_set_selected_contest_delay(long this_ptr, short val); // MUST_USE_RES struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_new(struct LDKChannelPublicKeys pubkeys_arg, uint16_t selected_contest_delay_arg); public static native long CounterpartyChannelTransactionParameters_new(long pubkeys_arg, short selected_contest_delay_arg); + // struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_clone(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR orig); + public static native long CounterpartyChannelTransactionParameters_clone(long orig); // MUST_USE_RES bool ChannelTransactionParameters_is_populated(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg); public static native boolean ChannelTransactionParameters_is_populated(long this_arg); // MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_holder_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg); @@ -2567,11 +2977,11 @@ public class bindings { public static native long ChannelTransactionParameters_as_counterparty_broadcastable(long this_arg); // struct LDKCVec_u8Z CounterpartyChannelTransactionParameters_write(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR obj); public static native byte[] CounterpartyChannelTransactionParameters_write(long obj); - // struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_read(struct LDKu8slice ser); + // struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CounterpartyChannelTransactionParameters_read(struct LDKu8slice ser); public static native long CounterpartyChannelTransactionParameters_read(byte[] ser); // struct LDKCVec_u8Z ChannelTransactionParameters_write(const struct LDKChannelTransactionParameters *NONNULL_PTR obj); public static native byte[] ChannelTransactionParameters_write(long obj); - // struct LDKChannelTransactionParameters ChannelTransactionParameters_read(struct LDKu8slice ser); + // struct LDKCResult_ChannelTransactionParametersDecodeErrorZ ChannelTransactionParameters_read(struct LDKu8slice ser); public static native long ChannelTransactionParameters_read(byte[] ser); // void DirectedChannelTransactionParameters_free(struct LDKDirectedChannelTransactionParameters this_ptr); public static native void DirectedChannelTransactionParameters_free(long this_ptr); @@ -2587,24 +2997,22 @@ public class bindings { public static native long DirectedChannelTransactionParameters_funding_outpoint(long this_arg); // void HolderCommitmentTransaction_free(struct LDKHolderCommitmentTransaction this_ptr); public static native void HolderCommitmentTransaction_free(long this_ptr); - // struct LDKHolderCommitmentTransaction HolderCommitmentTransaction_clone(const struct LDKHolderCommitmentTransaction *NONNULL_PTR orig); - public static native long HolderCommitmentTransaction_clone(long orig); // struct LDKSignature HolderCommitmentTransaction_get_counterparty_sig(const struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr); public static native byte[] HolderCommitmentTransaction_get_counterparty_sig(long this_ptr); // void HolderCommitmentTransaction_set_counterparty_sig(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKSignature val); public static native void HolderCommitmentTransaction_set_counterparty_sig(long this_ptr, byte[] val); // void HolderCommitmentTransaction_set_counterparty_htlc_sigs(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val); public static native void HolderCommitmentTransaction_set_counterparty_htlc_sigs(long this_ptr, byte[][] val); + // struct LDKHolderCommitmentTransaction HolderCommitmentTransaction_clone(const struct LDKHolderCommitmentTransaction *NONNULL_PTR orig); + public static native long HolderCommitmentTransaction_clone(long orig); // struct LDKCVec_u8Z HolderCommitmentTransaction_write(const struct LDKHolderCommitmentTransaction *NONNULL_PTR obj); public static native byte[] HolderCommitmentTransaction_write(long obj); - // struct LDKHolderCommitmentTransaction HolderCommitmentTransaction_read(struct LDKu8slice ser); + // struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ HolderCommitmentTransaction_read(struct LDKu8slice ser); public static native long HolderCommitmentTransaction_read(byte[] ser); // MUST_USE_RES struct LDKHolderCommitmentTransaction HolderCommitmentTransaction_new(struct LDKCommitmentTransaction commitment_tx, struct LDKSignature counterparty_sig, struct LDKCVec_SignatureZ counterparty_htlc_sigs, struct LDKPublicKey holder_funding_key, struct LDKPublicKey counterparty_funding_key); public static native long HolderCommitmentTransaction_new(long commitment_tx, byte[] counterparty_sig, byte[][] counterparty_htlc_sigs, byte[] holder_funding_key, byte[] counterparty_funding_key); // void BuiltCommitmentTransaction_free(struct LDKBuiltCommitmentTransaction this_ptr); public static native void BuiltCommitmentTransaction_free(long this_ptr); - // struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_clone(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR orig); - public static native long BuiltCommitmentTransaction_clone(long orig); // struct LDKTransaction BuiltCommitmentTransaction_get_transaction(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr); public static native byte[] BuiltCommitmentTransaction_get_transaction(long this_ptr); // void BuiltCommitmentTransaction_set_transaction(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKTransaction val); @@ -2615,9 +3023,11 @@ public class bindings { public static native void BuiltCommitmentTransaction_set_txid(long this_ptr, byte[] val); // MUST_USE_RES struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_new(struct LDKTransaction transaction_arg, struct LDKThirtyTwoBytes txid_arg); public static native long BuiltCommitmentTransaction_new(byte[] transaction_arg, byte[] txid_arg); + // struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_clone(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR orig); + public static native long BuiltCommitmentTransaction_clone(long orig); // struct LDKCVec_u8Z BuiltCommitmentTransaction_write(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR obj); public static native byte[] BuiltCommitmentTransaction_write(long obj); - // struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_read(struct LDKu8slice ser); + // struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ BuiltCommitmentTransaction_read(struct LDKu8slice ser); public static native long BuiltCommitmentTransaction_read(byte[] ser); // MUST_USE_RES struct LDKThirtyTwoBytes BuiltCommitmentTransaction_get_sighash_all(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_arg, struct LDKu8slice funding_redeemscript, uint64_t channel_value_satoshis); public static native byte[] BuiltCommitmentTransaction_get_sighash_all(long this_arg, byte[] funding_redeemscript, long channel_value_satoshis); @@ -2629,7 +3039,7 @@ public class bindings { public static native long CommitmentTransaction_clone(long orig); // struct LDKCVec_u8Z CommitmentTransaction_write(const struct LDKCommitmentTransaction *NONNULL_PTR obj); public static native byte[] CommitmentTransaction_write(long obj); - // struct LDKCommitmentTransaction CommitmentTransaction_read(struct LDKu8slice ser); + // struct LDKCResult_CommitmentTransactionDecodeErrorZ CommitmentTransaction_read(struct LDKu8slice ser); public static native long CommitmentTransaction_read(byte[] ser); // MUST_USE_RES uint64_t CommitmentTransaction_commitment_number(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg); public static native long CommitmentTransaction_commitment_number(long this_arg); @@ -2655,16 +3065,44 @@ public class bindings { public static native long TrustedCommitmentTransaction_get_htlc_sigs(long this_arg, byte[] htlc_base_key, long channel_parameters); // uint64_t get_commitment_transaction_number_obscure_factor(struct LDKPublicKey broadcaster_payment_basepoint, struct LDKPublicKey countersignatory_payment_basepoint, bool outbound_from_broadcaster); public static native long get_commitment_transaction_number_obscure_factor(byte[] broadcaster_payment_basepoint, byte[] countersignatory_payment_basepoint, boolean outbound_from_broadcaster); + // struct LDKInitFeatures InitFeatures_clone(const struct LDKInitFeatures *NONNULL_PTR orig); + public static native long InitFeatures_clone(long orig); + // struct LDKNodeFeatures NodeFeatures_clone(const struct LDKNodeFeatures *NONNULL_PTR orig); + public static native long NodeFeatures_clone(long orig); + // struct LDKChannelFeatures ChannelFeatures_clone(const struct LDKChannelFeatures *NONNULL_PTR orig); + public static native long ChannelFeatures_clone(long orig); // void InitFeatures_free(struct LDKInitFeatures this_ptr); public static native void InitFeatures_free(long this_ptr); // void NodeFeatures_free(struct LDKNodeFeatures this_ptr); public static native void NodeFeatures_free(long this_ptr); // void ChannelFeatures_free(struct LDKChannelFeatures this_ptr); public static native void ChannelFeatures_free(long this_ptr); + // MUST_USE_RES struct LDKInitFeatures InitFeatures_empty(void); + public static native long InitFeatures_empty(); + // MUST_USE_RES struct LDKInitFeatures InitFeatures_known(void); + public static native long InitFeatures_known(); + // MUST_USE_RES struct LDKNodeFeatures NodeFeatures_empty(void); + public static native long NodeFeatures_empty(); + // MUST_USE_RES struct LDKNodeFeatures NodeFeatures_known(void); + public static native long NodeFeatures_known(); + // MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_empty(void); + public static native long ChannelFeatures_empty(); + // MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_known(void); + public static native long ChannelFeatures_known(); + // struct LDKCVec_u8Z InitFeatures_write(const struct LDKInitFeatures *NONNULL_PTR obj); + public static native byte[] InitFeatures_write(long obj); + // struct LDKCVec_u8Z NodeFeatures_write(const struct LDKNodeFeatures *NONNULL_PTR obj); + public static native byte[] NodeFeatures_write(long obj); + // struct LDKCVec_u8Z ChannelFeatures_write(const struct LDKChannelFeatures *NONNULL_PTR obj); + public static native byte[] ChannelFeatures_write(long obj); + // struct LDKCResult_InitFeaturesDecodeErrorZ InitFeatures_read(struct LDKu8slice ser); + public static native long InitFeatures_read(byte[] ser); + // struct LDKCResult_NodeFeaturesDecodeErrorZ NodeFeatures_read(struct LDKu8slice ser); + public static native long NodeFeatures_read(byte[] ser); + // struct LDKCResult_ChannelFeaturesDecodeErrorZ ChannelFeatures_read(struct LDKu8slice ser); + public static native long ChannelFeatures_read(byte[] ser); // void RouteHop_free(struct LDKRouteHop this_ptr); public static native void RouteHop_free(long this_ptr); - // struct LDKRouteHop RouteHop_clone(const struct LDKRouteHop *NONNULL_PTR orig); - public static native long RouteHop_clone(long orig); // struct LDKPublicKey RouteHop_get_pubkey(const struct LDKRouteHop *NONNULL_PTR this_ptr); public static native byte[] RouteHop_get_pubkey(long this_ptr); // void RouteHop_set_pubkey(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKPublicKey val); @@ -2691,22 +3129,22 @@ public class bindings { public static native void RouteHop_set_cltv_expiry_delta(long this_ptr, int val); // MUST_USE_RES struct LDKRouteHop RouteHop_new(struct LDKPublicKey pubkey_arg, struct LDKNodeFeatures node_features_arg, uint64_t short_channel_id_arg, struct LDKChannelFeatures channel_features_arg, uint64_t fee_msat_arg, uint32_t cltv_expiry_delta_arg); public static native long RouteHop_new(byte[] pubkey_arg, long node_features_arg, long short_channel_id_arg, long channel_features_arg, long fee_msat_arg, int cltv_expiry_delta_arg); + // struct LDKRouteHop RouteHop_clone(const struct LDKRouteHop *NONNULL_PTR orig); + public static native long RouteHop_clone(long orig); // void Route_free(struct LDKRoute this_ptr); public static native void Route_free(long this_ptr); - // struct LDKRoute Route_clone(const struct LDKRoute *NONNULL_PTR orig); - public static native long Route_clone(long orig); // void Route_set_paths(struct LDKRoute *NONNULL_PTR this_ptr, struct LDKCVec_CVec_RouteHopZZ val); public static native void Route_set_paths(long this_ptr, long[][] val); // MUST_USE_RES struct LDKRoute Route_new(struct LDKCVec_CVec_RouteHopZZ paths_arg); public static native long Route_new(long[][] paths_arg); + // struct LDKRoute Route_clone(const struct LDKRoute *NONNULL_PTR orig); + public static native long Route_clone(long orig); // struct LDKCVec_u8Z Route_write(const struct LDKRoute *NONNULL_PTR obj); public static native byte[] Route_write(long obj); // struct LDKCResult_RouteDecodeErrorZ Route_read(struct LDKu8slice ser); public static native long Route_read(byte[] ser); // void RouteHint_free(struct LDKRouteHint this_ptr); public static native void RouteHint_free(long this_ptr); - // struct LDKRouteHint RouteHint_clone(const struct LDKRouteHint *NONNULL_PTR orig); - public static native long RouteHint_clone(long orig); // struct LDKPublicKey RouteHint_get_src_node_id(const struct LDKRouteHint *NONNULL_PTR this_ptr); public static native byte[] RouteHint_get_src_node_id(long this_ptr); // void RouteHint_set_src_node_id(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKPublicKey val); @@ -2729,6 +3167,8 @@ public class bindings { public static native void RouteHint_set_htlc_minimum_msat(long this_ptr, long val); // MUST_USE_RES struct LDKRouteHint RouteHint_new(struct LDKPublicKey src_node_id_arg, uint64_t short_channel_id_arg, struct LDKRoutingFees fees_arg, uint16_t cltv_expiry_delta_arg, uint64_t htlc_minimum_msat_arg); public static native long RouteHint_new(byte[] src_node_id_arg, long short_channel_id_arg, long fees_arg, short cltv_expiry_delta_arg, long htlc_minimum_msat_arg); + // struct LDKRouteHint RouteHint_clone(const struct LDKRouteHint *NONNULL_PTR orig); + public static native long RouteHint_clone(long orig); // struct LDKCResult_RouteLightningErrorZ get_route(struct LDKPublicKey our_node_id, const struct LDKNetworkGraph *NONNULL_PTR network, struct LDKPublicKey target, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKCVec_RouteHintZ last_hops, uint64_t final_value_msat, uint32_t final_cltv, struct LDKLogger logger); public static native long get_route(byte[] our_node_id, long network, byte[] target, long[] first_hops, long[] last_hops, long final_value_msat, int final_cltv, long logger); // void NetworkGraph_free(struct LDKNetworkGraph this_ptr); @@ -2751,8 +3191,6 @@ public class bindings { public static native long NetGraphMsgHandler_as_MessageSendEventsProvider(long this_arg); // void DirectionalChannelInfo_free(struct LDKDirectionalChannelInfo this_ptr); public static native void DirectionalChannelInfo_free(long this_ptr); - // struct LDKDirectionalChannelInfo DirectionalChannelInfo_clone(const struct LDKDirectionalChannelInfo *NONNULL_PTR orig); - public static native long DirectionalChannelInfo_clone(long orig); // uint32_t DirectionalChannelInfo_get_last_update(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr); public static native int DirectionalChannelInfo_get_last_update(long this_ptr); // void DirectionalChannelInfo_set_last_update(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint32_t val); @@ -2777,9 +3215,11 @@ public class bindings { public static native long DirectionalChannelInfo_get_last_update_message(long this_ptr); // void DirectionalChannelInfo_set_last_update_message(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdate val); public static native void DirectionalChannelInfo_set_last_update_message(long this_ptr, long val); + // struct LDKDirectionalChannelInfo DirectionalChannelInfo_clone(const struct LDKDirectionalChannelInfo *NONNULL_PTR orig); + public static native long DirectionalChannelInfo_clone(long orig); // struct LDKCVec_u8Z DirectionalChannelInfo_write(const struct LDKDirectionalChannelInfo *NONNULL_PTR obj); public static native byte[] DirectionalChannelInfo_write(long obj); - // struct LDKDirectionalChannelInfo DirectionalChannelInfo_read(struct LDKu8slice ser); + // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ DirectionalChannelInfo_read(struct LDKu8slice ser); public static native long DirectionalChannelInfo_read(byte[] ser); // void ChannelInfo_free(struct LDKChannelInfo this_ptr); public static native void ChannelInfo_free(long this_ptr); @@ -2809,12 +3249,10 @@ public class bindings { public static native void ChannelInfo_set_announcement_message(long this_ptr, long val); // struct LDKCVec_u8Z ChannelInfo_write(const struct LDKChannelInfo *NONNULL_PTR obj); public static native byte[] ChannelInfo_write(long obj); - // struct LDKChannelInfo ChannelInfo_read(struct LDKu8slice ser); + // struct LDKCResult_ChannelInfoDecodeErrorZ ChannelInfo_read(struct LDKu8slice ser); public static native long ChannelInfo_read(byte[] ser); // void RoutingFees_free(struct LDKRoutingFees this_ptr); public static native void RoutingFees_free(long this_ptr); - // struct LDKRoutingFees RoutingFees_clone(const struct LDKRoutingFees *NONNULL_PTR orig); - public static native long RoutingFees_clone(long orig); // uint32_t RoutingFees_get_base_msat(const struct LDKRoutingFees *NONNULL_PTR this_ptr); public static native int RoutingFees_get_base_msat(long this_ptr); // void RoutingFees_set_base_msat(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val); @@ -2825,14 +3263,14 @@ public class bindings { public static native void RoutingFees_set_proportional_millionths(long this_ptr, int val); // MUST_USE_RES struct LDKRoutingFees RoutingFees_new(uint32_t base_msat_arg, uint32_t proportional_millionths_arg); public static native long RoutingFees_new(int base_msat_arg, int proportional_millionths_arg); + // struct LDKRoutingFees RoutingFees_clone(const struct LDKRoutingFees *NONNULL_PTR orig); + public static native long RoutingFees_clone(long orig); // struct LDKCResult_RoutingFeesDecodeErrorZ RoutingFees_read(struct LDKu8slice ser); public static native long RoutingFees_read(byte[] ser); // struct LDKCVec_u8Z RoutingFees_write(const struct LDKRoutingFees *NONNULL_PTR obj); public static native byte[] RoutingFees_write(long obj); // void NodeAnnouncementInfo_free(struct LDKNodeAnnouncementInfo this_ptr); public static native void NodeAnnouncementInfo_free(long this_ptr); - // struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_clone(const struct LDKNodeAnnouncementInfo *NONNULL_PTR orig); - public static native long NodeAnnouncementInfo_clone(long orig); // struct LDKNodeFeatures NodeAnnouncementInfo_get_features(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr); public static native long NodeAnnouncementInfo_get_features(long this_ptr); // void NodeAnnouncementInfo_set_features(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeFeatures val); @@ -2857,14 +3295,14 @@ public class bindings { public static native void NodeAnnouncementInfo_set_announcement_message(long this_ptr, long val); // MUST_USE_RES struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_new(struct LDKNodeFeatures features_arg, uint32_t last_update_arg, struct LDKThreeBytes rgb_arg, struct LDKThirtyTwoBytes alias_arg, struct LDKCVec_NetAddressZ addresses_arg, struct LDKNodeAnnouncement announcement_message_arg); public static native long NodeAnnouncementInfo_new(long features_arg, int last_update_arg, byte[] rgb_arg, byte[] alias_arg, long[] addresses_arg, long announcement_message_arg); + // struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_clone(const struct LDKNodeAnnouncementInfo *NONNULL_PTR orig); + public static native long NodeAnnouncementInfo_clone(long orig); // struct LDKCVec_u8Z NodeAnnouncementInfo_write(const struct LDKNodeAnnouncementInfo *NONNULL_PTR obj); public static native byte[] NodeAnnouncementInfo_write(long obj); // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ NodeAnnouncementInfo_read(struct LDKu8slice ser); public static native long NodeAnnouncementInfo_read(byte[] ser); // void NodeInfo_free(struct LDKNodeInfo this_ptr); public static native void NodeInfo_free(long this_ptr); - // struct LDKNodeInfo NodeInfo_clone(const struct LDKNodeInfo *NONNULL_PTR orig); - public static native long NodeInfo_clone(long orig); // void NodeInfo_set_channels(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val); public static native void NodeInfo_set_channels(long this_ptr, long[] val); // struct LDKRoutingFees NodeInfo_get_lowest_inbound_channel_fees(const struct LDKNodeInfo *NONNULL_PTR this_ptr); @@ -2877,6 +3315,8 @@ public class bindings { public static native void NodeInfo_set_announcement_info(long this_ptr, long val); // MUST_USE_RES struct LDKNodeInfo NodeInfo_new(struct LDKCVec_u64Z channels_arg, struct LDKRoutingFees lowest_inbound_channel_fees_arg, struct LDKNodeAnnouncementInfo announcement_info_arg); public static native long NodeInfo_new(long[] channels_arg, long lowest_inbound_channel_fees_arg, long announcement_info_arg); + // struct LDKNodeInfo NodeInfo_clone(const struct LDKNodeInfo *NONNULL_PTR orig); + public static native long NodeInfo_clone(long orig); // struct LDKCVec_u8Z NodeInfo_write(const struct LDKNodeInfo *NONNULL_PTR obj); public static native byte[] NodeInfo_write(long obj); // struct LDKCResult_NodeInfoDecodeErrorZ NodeInfo_read(struct LDKu8slice ser); diff --git a/src/main/java/org/ldk/structs/AcceptChannel.java b/src/main/java/org/ldk/structs/AcceptChannel.java index f6ba8ed4..2771149f 100644 --- a/src/main/java/org/ldk/structs/AcceptChannel.java +++ b/src/main/java/org/ldk/structs/AcceptChannel.java @@ -14,13 +14,6 @@ public class AcceptChannel extends CommonBase { if (ptr != 0) { bindings.AcceptChannel_free(ptr); } } - public AcceptChannel clone() { - long ret = bindings.AcceptChannel_clone(this.ptr); - AcceptChannel ret_hu_conv = new AcceptChannel(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_temporary_channel_id() { byte[] ret = bindings.AcceptChannel_get_temporary_channel_id(this.ptr); return ret; @@ -147,15 +140,21 @@ public class AcceptChannel extends CommonBase { bindings.AcceptChannel_set_first_per_commitment_point(this.ptr, val); } + public AcceptChannel clone() { + long ret = bindings.AcceptChannel_clone(this.ptr); + AcceptChannel ret_hu_conv = new AcceptChannel(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.AcceptChannel_write(this.ptr); return ret; } - public static AcceptChannel constructor_read(byte[] ser) { + public static Result_AcceptChannelDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.AcceptChannel_read(ser); - AcceptChannel ret_hu_conv = new AcceptChannel(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_AcceptChannelDecodeErrorZ ret_hu_conv = Result_AcceptChannelDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/AnnouncementSignatures.java b/src/main/java/org/ldk/structs/AnnouncementSignatures.java index 23de5a0f..14aba588 100644 --- a/src/main/java/org/ldk/structs/AnnouncementSignatures.java +++ b/src/main/java/org/ldk/structs/AnnouncementSignatures.java @@ -14,13 +14,6 @@ public class AnnouncementSignatures extends CommonBase { if (ptr != 0) { bindings.AnnouncementSignatures_free(ptr); } } - public AnnouncementSignatures clone() { - long ret = bindings.AnnouncementSignatures_clone(this.ptr); - AnnouncementSignatures ret_hu_conv = new AnnouncementSignatures(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_channel_id() { byte[] ret = bindings.AnnouncementSignatures_get_channel_id(this.ptr); return ret; @@ -64,15 +57,21 @@ public class AnnouncementSignatures extends CommonBase { return ret_hu_conv; } + public AnnouncementSignatures clone() { + long ret = bindings.AnnouncementSignatures_clone(this.ptr); + AnnouncementSignatures ret_hu_conv = new AnnouncementSignatures(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.AnnouncementSignatures_write(this.ptr); return ret; } - public static AnnouncementSignatures constructor_read(byte[] ser) { + public static Result_AnnouncementSignaturesDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.AnnouncementSignatures_read(ser); - AnnouncementSignatures ret_hu_conv = new AnnouncementSignatures(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_AnnouncementSignaturesDecodeErrorZ ret_hu_conv = Result_AnnouncementSignaturesDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/BuiltCommitmentTransaction.java b/src/main/java/org/ldk/structs/BuiltCommitmentTransaction.java index 5626c66d..337469f3 100644 --- a/src/main/java/org/ldk/structs/BuiltCommitmentTransaction.java +++ b/src/main/java/org/ldk/structs/BuiltCommitmentTransaction.java @@ -14,13 +14,6 @@ public class BuiltCommitmentTransaction extends CommonBase { if (ptr != 0) { bindings.BuiltCommitmentTransaction_free(ptr); } } - public BuiltCommitmentTransaction clone() { - long ret = bindings.BuiltCommitmentTransaction_clone(this.ptr); - BuiltCommitmentTransaction ret_hu_conv = new BuiltCommitmentTransaction(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_transaction() { byte[] ret = bindings.BuiltCommitmentTransaction_get_transaction(this.ptr); return ret; @@ -46,15 +39,21 @@ public class BuiltCommitmentTransaction extends CommonBase { return ret_hu_conv; } + public BuiltCommitmentTransaction clone() { + long ret = bindings.BuiltCommitmentTransaction_clone(this.ptr); + BuiltCommitmentTransaction ret_hu_conv = new BuiltCommitmentTransaction(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.BuiltCommitmentTransaction_write(this.ptr); return ret; } - public static BuiltCommitmentTransaction constructor_read(byte[] ser) { + public static Result_BuiltCommitmentTransactionDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.BuiltCommitmentTransaction_read(ser); - BuiltCommitmentTransaction ret_hu_conv = new BuiltCommitmentTransaction(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_BuiltCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_BuiltCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/ChannelAnnouncement.java b/src/main/java/org/ldk/structs/ChannelAnnouncement.java index a49a163b..52c88eac 100644 --- a/src/main/java/org/ldk/structs/ChannelAnnouncement.java +++ b/src/main/java/org/ldk/structs/ChannelAnnouncement.java @@ -14,13 +14,6 @@ public class ChannelAnnouncement extends CommonBase { if (ptr != 0) { bindings.ChannelAnnouncement_free(ptr); } } - public ChannelAnnouncement clone() { - long ret = bindings.ChannelAnnouncement_clone(this.ptr); - ChannelAnnouncement ret_hu_conv = new ChannelAnnouncement(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_node_signature_1() { byte[] ret = bindings.ChannelAnnouncement_get_node_signature_1(this.ptr); return ret; @@ -77,15 +70,21 @@ public class ChannelAnnouncement extends CommonBase { return ret_hu_conv; } + public ChannelAnnouncement clone() { + long ret = bindings.ChannelAnnouncement_clone(this.ptr); + ChannelAnnouncement ret_hu_conv = new ChannelAnnouncement(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.ChannelAnnouncement_write(this.ptr); return ret; } - public static ChannelAnnouncement constructor_read(byte[] ser) { + public static Result_ChannelAnnouncementDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.ChannelAnnouncement_read(ser); - ChannelAnnouncement ret_hu_conv = new ChannelAnnouncement(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_ChannelAnnouncementDecodeErrorZ ret_hu_conv = Result_ChannelAnnouncementDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/ChannelConfig.java b/src/main/java/org/ldk/structs/ChannelConfig.java index 869ca572..5af68d38 100644 --- a/src/main/java/org/ldk/structs/ChannelConfig.java +++ b/src/main/java/org/ldk/structs/ChannelConfig.java @@ -14,13 +14,6 @@ public class ChannelConfig extends CommonBase { if (ptr != 0) { bindings.ChannelConfig_free(ptr); } } - public ChannelConfig clone() { - long ret = bindings.ChannelConfig_clone(this.ptr); - ChannelConfig ret_hu_conv = new ChannelConfig(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public int get_fee_proportional_millionths() { int ret = bindings.ChannelConfig_get_fee_proportional_millionths(this.ptr); return ret; @@ -55,6 +48,13 @@ public class ChannelConfig extends CommonBase { return ret_hu_conv; } + public ChannelConfig clone() { + long ret = bindings.ChannelConfig_clone(this.ptr); + ChannelConfig ret_hu_conv = new ChannelConfig(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static ChannelConfig constructor_default() { long ret = bindings.ChannelConfig_default(); ChannelConfig ret_hu_conv = new ChannelConfig(null, ret); @@ -67,10 +67,9 @@ public class ChannelConfig extends CommonBase { return ret; } - public static ChannelConfig constructor_read(byte[] ser) { + public static Result_ChannelConfigDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.ChannelConfig_read(ser); - ChannelConfig ret_hu_conv = new ChannelConfig(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_ChannelConfigDecodeErrorZ ret_hu_conv = Result_ChannelConfigDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/ChannelDetails.java b/src/main/java/org/ldk/structs/ChannelDetails.java index 4c690d2d..216c017b 100644 --- a/src/main/java/org/ldk/structs/ChannelDetails.java +++ b/src/main/java/org/ldk/structs/ChannelDetails.java @@ -14,13 +14,6 @@ public class ChannelDetails extends CommonBase { if (ptr != 0) { bindings.ChannelDetails_free(ptr); } } - public ChannelDetails clone() { - long ret = bindings.ChannelDetails_clone(this.ptr); - ChannelDetails ret_hu_conv = new ChannelDetails(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_channel_id() { byte[] ret = bindings.ChannelDetails_get_channel_id(this.ptr); return ret; @@ -49,14 +42,6 @@ public class ChannelDetails extends CommonBase { public void set_counterparty_features(InitFeatures val) { bindings.ChannelDetails_set_counterparty_features(this.ptr, val == null ? 0 : val.ptr & ~1); this.ptrs_to.add(val); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, val is reset to null and is now a dummy object. - val.ptr = 0; } public long get_channel_value_satoshis() { @@ -104,4 +89,11 @@ public class ChannelDetails extends CommonBase { bindings.ChannelDetails_set_is_live(this.ptr, val); } + public ChannelDetails clone() { + long ret = bindings.ChannelDetails_clone(this.ptr); + ChannelDetails ret_hu_conv = new ChannelDetails(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + } diff --git a/src/main/java/org/ldk/structs/ChannelFeatures.java b/src/main/java/org/ldk/structs/ChannelFeatures.java index 428ed8b7..7b10e51b 100644 --- a/src/main/java/org/ldk/structs/ChannelFeatures.java +++ b/src/main/java/org/ldk/structs/ChannelFeatures.java @@ -14,4 +14,36 @@ public class ChannelFeatures extends CommonBase { if (ptr != 0) { bindings.ChannelFeatures_free(ptr); } } + public ChannelFeatures clone() { + long ret = bindings.ChannelFeatures_clone(this.ptr); + ChannelFeatures ret_hu_conv = new ChannelFeatures(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + + public static ChannelFeatures constructor_empty() { + long ret = bindings.ChannelFeatures_empty(); + ChannelFeatures ret_hu_conv = new ChannelFeatures(null, ret); + ret_hu_conv.ptrs_to.add(ret_hu_conv); + return ret_hu_conv; + } + + public static ChannelFeatures constructor_known() { + long ret = bindings.ChannelFeatures_known(); + ChannelFeatures ret_hu_conv = new ChannelFeatures(null, ret); + ret_hu_conv.ptrs_to.add(ret_hu_conv); + return ret_hu_conv; + } + + public byte[] write() { + byte[] ret = bindings.ChannelFeatures_write(this.ptr); + return ret; + } + + public static Result_ChannelFeaturesDecodeErrorZ constructor_read(byte[] ser) { + long ret = bindings.ChannelFeatures_read(ser); + Result_ChannelFeaturesDecodeErrorZ ret_hu_conv = Result_ChannelFeaturesDecodeErrorZ.constr_from_ptr(ret); + return ret_hu_conv; + } + } diff --git a/src/main/java/org/ldk/structs/ChannelHandshakeConfig.java b/src/main/java/org/ldk/structs/ChannelHandshakeConfig.java index a07f2e2a..730d50ad 100644 --- a/src/main/java/org/ldk/structs/ChannelHandshakeConfig.java +++ b/src/main/java/org/ldk/structs/ChannelHandshakeConfig.java @@ -14,13 +14,6 @@ public class ChannelHandshakeConfig extends CommonBase { if (ptr != 0) { bindings.ChannelHandshakeConfig_free(ptr); } } - public ChannelHandshakeConfig clone() { - long ret = bindings.ChannelHandshakeConfig_clone(this.ptr); - ChannelHandshakeConfig ret_hu_conv = new ChannelHandshakeConfig(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public int get_minimum_depth() { int ret = bindings.ChannelHandshakeConfig_get_minimum_depth(this.ptr); return ret; @@ -55,6 +48,13 @@ public class ChannelHandshakeConfig extends CommonBase { return ret_hu_conv; } + public ChannelHandshakeConfig clone() { + long ret = bindings.ChannelHandshakeConfig_clone(this.ptr); + ChannelHandshakeConfig ret_hu_conv = new ChannelHandshakeConfig(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static ChannelHandshakeConfig constructor_default() { long ret = bindings.ChannelHandshakeConfig_default(); ChannelHandshakeConfig ret_hu_conv = new ChannelHandshakeConfig(null, ret); diff --git a/src/main/java/org/ldk/structs/ChannelHandshakeLimits.java b/src/main/java/org/ldk/structs/ChannelHandshakeLimits.java index e108446e..33eec305 100644 --- a/src/main/java/org/ldk/structs/ChannelHandshakeLimits.java +++ b/src/main/java/org/ldk/structs/ChannelHandshakeLimits.java @@ -14,13 +14,6 @@ public class ChannelHandshakeLimits extends CommonBase { if (ptr != 0) { bindings.ChannelHandshakeLimits_free(ptr); } } - public ChannelHandshakeLimits clone() { - long ret = bindings.ChannelHandshakeLimits_clone(this.ptr); - ChannelHandshakeLimits ret_hu_conv = new ChannelHandshakeLimits(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public long get_min_funding_satoshis() { long ret = bindings.ChannelHandshakeLimits_get_min_funding_satoshis(this.ptr); return ret; @@ -118,6 +111,13 @@ public class ChannelHandshakeLimits extends CommonBase { return ret_hu_conv; } + public ChannelHandshakeLimits clone() { + long ret = bindings.ChannelHandshakeLimits_clone(this.ptr); + ChannelHandshakeLimits ret_hu_conv = new ChannelHandshakeLimits(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static ChannelHandshakeLimits constructor_default() { long ret = bindings.ChannelHandshakeLimits_default(); ChannelHandshakeLimits ret_hu_conv = new ChannelHandshakeLimits(null, ret); diff --git a/src/main/java/org/ldk/structs/ChannelInfo.java b/src/main/java/org/ldk/structs/ChannelInfo.java index 8c9e5727..5850917a 100644 --- a/src/main/java/org/ldk/structs/ChannelInfo.java +++ b/src/main/java/org/ldk/structs/ChannelInfo.java @@ -24,14 +24,6 @@ public class ChannelInfo extends CommonBase { public void set_features(ChannelFeatures val) { bindings.ChannelInfo_set_features(this.ptr, val == null ? 0 : val.ptr & ~1); this.ptrs_to.add(val); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, val is reset to null and is now a dummy object. - val.ptr = 0; } public byte[] get_node_one() { @@ -93,10 +85,9 @@ public class ChannelInfo extends CommonBase { return ret; } - public static ChannelInfo constructor_read(byte[] ser) { + public static Result_ChannelInfoDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.ChannelInfo_read(ser); - ChannelInfo ret_hu_conv = new ChannelInfo(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_ChannelInfoDecodeErrorZ ret_hu_conv = Result_ChannelInfoDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/ChannelMessageHandler.java b/src/main/java/org/ldk/structs/ChannelMessageHandler.java index 06013385..6c395670 100644 --- a/src/main/java/org/ldk/structs/ChannelMessageHandler.java +++ b/src/main/java/org/ldk/structs/ChannelMessageHandler.java @@ -130,28 +130,12 @@ public class ChannelMessageHandler extends CommonBase { public void handle_open_channel(byte[] their_node_id, InitFeatures their_features, OpenChannel msg) { bindings.ChannelMessageHandler_handle_open_channel(this.ptr, their_node_id, their_features == null ? 0 : their_features.ptr & ~1, msg == null ? 0 : msg.ptr & ~1); this.ptrs_to.add(their_features); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, their_features is reset to null and is now a dummy object. - their_features.ptr = 0; this.ptrs_to.add(msg); } public void handle_accept_channel(byte[] their_node_id, InitFeatures their_features, AcceptChannel msg) { bindings.ChannelMessageHandler_handle_accept_channel(this.ptr, their_node_id, their_features == null ? 0 : their_features.ptr & ~1, msg == null ? 0 : msg.ptr & ~1); this.ptrs_to.add(their_features); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, their_features is reset to null and is now a dummy object. - their_features.ptr = 0; this.ptrs_to.add(msg); } diff --git a/src/main/java/org/ldk/structs/ChannelMonitorUpdate.java b/src/main/java/org/ldk/structs/ChannelMonitorUpdate.java index 739965b1..179a200d 100644 --- a/src/main/java/org/ldk/structs/ChannelMonitorUpdate.java +++ b/src/main/java/org/ldk/structs/ChannelMonitorUpdate.java @@ -14,13 +14,6 @@ public class ChannelMonitorUpdate extends CommonBase { if (ptr != 0) { bindings.ChannelMonitorUpdate_free(ptr); } } - public ChannelMonitorUpdate clone() { - long ret = bindings.ChannelMonitorUpdate_clone(this.ptr); - ChannelMonitorUpdate ret_hu_conv = new ChannelMonitorUpdate(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public long get_update_id() { long ret = bindings.ChannelMonitorUpdate_get_update_id(this.ptr); return ret; @@ -30,6 +23,13 @@ public class ChannelMonitorUpdate extends CommonBase { bindings.ChannelMonitorUpdate_set_update_id(this.ptr, val); } + public ChannelMonitorUpdate clone() { + long ret = bindings.ChannelMonitorUpdate_clone(this.ptr); + ChannelMonitorUpdate ret_hu_conv = new ChannelMonitorUpdate(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.ChannelMonitorUpdate_write(this.ptr); return ret; diff --git a/src/main/java/org/ldk/structs/ChannelPublicKeys.java b/src/main/java/org/ldk/structs/ChannelPublicKeys.java index 91102b53..0d2664a6 100644 --- a/src/main/java/org/ldk/structs/ChannelPublicKeys.java +++ b/src/main/java/org/ldk/structs/ChannelPublicKeys.java @@ -14,13 +14,6 @@ public class ChannelPublicKeys extends CommonBase { if (ptr != 0) { bindings.ChannelPublicKeys_free(ptr); } } - public ChannelPublicKeys clone() { - long ret = bindings.ChannelPublicKeys_clone(this.ptr); - ChannelPublicKeys ret_hu_conv = new ChannelPublicKeys(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_funding_pubkey() { byte[] ret = bindings.ChannelPublicKeys_get_funding_pubkey(this.ptr); return ret; @@ -73,15 +66,21 @@ public class ChannelPublicKeys extends CommonBase { return ret_hu_conv; } + public ChannelPublicKeys clone() { + long ret = bindings.ChannelPublicKeys_clone(this.ptr); + ChannelPublicKeys ret_hu_conv = new ChannelPublicKeys(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.ChannelPublicKeys_write(this.ptr); return ret; } - public static ChannelPublicKeys constructor_read(byte[] ser) { + public static Result_ChannelPublicKeysDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.ChannelPublicKeys_read(ser); - ChannelPublicKeys ret_hu_conv = new ChannelPublicKeys(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_ChannelPublicKeysDecodeErrorZ ret_hu_conv = Result_ChannelPublicKeysDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/ChannelReestablish.java b/src/main/java/org/ldk/structs/ChannelReestablish.java index 9df48729..be928489 100644 --- a/src/main/java/org/ldk/structs/ChannelReestablish.java +++ b/src/main/java/org/ldk/structs/ChannelReestablish.java @@ -14,13 +14,6 @@ public class ChannelReestablish extends CommonBase { if (ptr != 0) { bindings.ChannelReestablish_free(ptr); } } - public ChannelReestablish clone() { - long ret = bindings.ChannelReestablish_clone(this.ptr); - ChannelReestablish ret_hu_conv = new ChannelReestablish(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_channel_id() { byte[] ret = bindings.ChannelReestablish_get_channel_id(this.ptr); return ret; @@ -48,6 +41,13 @@ public class ChannelReestablish extends CommonBase { bindings.ChannelReestablish_set_next_remote_commitment_number(this.ptr, val); } + public ChannelReestablish clone() { + long ret = bindings.ChannelReestablish_clone(this.ptr); + ChannelReestablish ret_hu_conv = new ChannelReestablish(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.ChannelReestablish_write(this.ptr); return ret; diff --git a/src/main/java/org/ldk/structs/ChannelTransactionParameters.java b/src/main/java/org/ldk/structs/ChannelTransactionParameters.java index 1740e54c..a64af173 100644 --- a/src/main/java/org/ldk/structs/ChannelTransactionParameters.java +++ b/src/main/java/org/ldk/structs/ChannelTransactionParameters.java @@ -14,13 +14,6 @@ public class ChannelTransactionParameters extends CommonBase { if (ptr != 0) { bindings.ChannelTransactionParameters_free(ptr); } } - public ChannelTransactionParameters clone() { - long ret = bindings.ChannelTransactionParameters_clone(this.ptr); - ChannelTransactionParameters ret_hu_conv = new ChannelTransactionParameters(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public ChannelPublicKeys get_holder_pubkeys() { long ret = bindings.ChannelTransactionParameters_get_holder_pubkeys(this.ptr); ChannelPublicKeys ret_hu_conv = new ChannelPublicKeys(null, ret); @@ -85,6 +78,13 @@ public class ChannelTransactionParameters extends CommonBase { return ret_hu_conv; } + public ChannelTransactionParameters clone() { + long ret = bindings.ChannelTransactionParameters_clone(this.ptr); + ChannelTransactionParameters ret_hu_conv = new ChannelTransactionParameters(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public boolean is_populated() { boolean ret = bindings.ChannelTransactionParameters_is_populated(this.ptr); return ret; @@ -109,10 +109,9 @@ public class ChannelTransactionParameters extends CommonBase { return ret; } - public static ChannelTransactionParameters constructor_read(byte[] ser) { + public static Result_ChannelTransactionParametersDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.ChannelTransactionParameters_read(ser); - ChannelTransactionParameters ret_hu_conv = new ChannelTransactionParameters(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_ChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_ChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/ChannelUpdate.java b/src/main/java/org/ldk/structs/ChannelUpdate.java index cb055f37..805b4511 100644 --- a/src/main/java/org/ldk/structs/ChannelUpdate.java +++ b/src/main/java/org/ldk/structs/ChannelUpdate.java @@ -14,13 +14,6 @@ public class ChannelUpdate extends CommonBase { if (ptr != 0) { bindings.ChannelUpdate_free(ptr); } } - public ChannelUpdate clone() { - long ret = bindings.ChannelUpdate_clone(this.ptr); - ChannelUpdate ret_hu_conv = new ChannelUpdate(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_signature() { byte[] ret = bindings.ChannelUpdate_get_signature(this.ptr); return ret; @@ -50,15 +43,21 @@ public class ChannelUpdate extends CommonBase { return ret_hu_conv; } + public ChannelUpdate clone() { + long ret = bindings.ChannelUpdate_clone(this.ptr); + ChannelUpdate ret_hu_conv = new ChannelUpdate(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.ChannelUpdate_write(this.ptr); return ret; } - public static ChannelUpdate constructor_read(byte[] ser) { + public static Result_ChannelUpdateDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.ChannelUpdate_read(ser); - ChannelUpdate ret_hu_conv = new ChannelUpdate(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_ChannelUpdateDecodeErrorZ ret_hu_conv = Result_ChannelUpdateDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/ClosingSigned.java b/src/main/java/org/ldk/structs/ClosingSigned.java index fbd0f330..a42c3e50 100644 --- a/src/main/java/org/ldk/structs/ClosingSigned.java +++ b/src/main/java/org/ldk/structs/ClosingSigned.java @@ -14,13 +14,6 @@ public class ClosingSigned extends CommonBase { if (ptr != 0) { bindings.ClosingSigned_free(ptr); } } - public ClosingSigned clone() { - long ret = bindings.ClosingSigned_clone(this.ptr); - ClosingSigned ret_hu_conv = new ClosingSigned(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_channel_id() { byte[] ret = bindings.ClosingSigned_get_channel_id(this.ptr); return ret; @@ -55,15 +48,21 @@ public class ClosingSigned extends CommonBase { return ret_hu_conv; } + public ClosingSigned clone() { + long ret = bindings.ClosingSigned_clone(this.ptr); + ClosingSigned ret_hu_conv = new ClosingSigned(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.ClosingSigned_write(this.ptr); return ret; } - public static ClosingSigned constructor_read(byte[] ser) { + public static Result_ClosingSignedDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.ClosingSigned_read(ser); - ClosingSigned ret_hu_conv = new ClosingSigned(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_ClosingSignedDecodeErrorZ ret_hu_conv = Result_ClosingSignedDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/CommitmentSigned.java b/src/main/java/org/ldk/structs/CommitmentSigned.java index e6a76bcf..b14e1ca4 100644 --- a/src/main/java/org/ldk/structs/CommitmentSigned.java +++ b/src/main/java/org/ldk/structs/CommitmentSigned.java @@ -14,13 +14,6 @@ public class CommitmentSigned extends CommonBase { if (ptr != 0) { bindings.CommitmentSigned_free(ptr); } } - public CommitmentSigned clone() { - long ret = bindings.CommitmentSigned_clone(this.ptr); - CommitmentSigned ret_hu_conv = new CommitmentSigned(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_channel_id() { byte[] ret = bindings.CommitmentSigned_get_channel_id(this.ptr); return ret; @@ -50,15 +43,21 @@ public class CommitmentSigned extends CommonBase { return ret_hu_conv; } + public CommitmentSigned clone() { + long ret = bindings.CommitmentSigned_clone(this.ptr); + CommitmentSigned ret_hu_conv = new CommitmentSigned(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.CommitmentSigned_write(this.ptr); return ret; } - public static CommitmentSigned constructor_read(byte[] ser) { + public static Result_CommitmentSignedDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.CommitmentSigned_read(ser); - CommitmentSigned ret_hu_conv = new CommitmentSigned(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_CommitmentSignedDecodeErrorZ ret_hu_conv = Result_CommitmentSignedDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/CommitmentTransaction.java b/src/main/java/org/ldk/structs/CommitmentTransaction.java index bb38be53..a4f1698c 100644 --- a/src/main/java/org/ldk/structs/CommitmentTransaction.java +++ b/src/main/java/org/ldk/structs/CommitmentTransaction.java @@ -26,10 +26,9 @@ public class CommitmentTransaction extends CommonBase { return ret; } - public static CommitmentTransaction constructor_read(byte[] ser) { + public static Result_CommitmentTransactionDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.CommitmentTransaction_read(ser); - CommitmentTransaction ret_hu_conv = new CommitmentTransaction(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_CommitmentTransactionDecodeErrorZ ret_hu_conv = Result_CommitmentTransactionDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/CommitmentUpdate.java b/src/main/java/org/ldk/structs/CommitmentUpdate.java index c53eb4eb..d6fdfa20 100644 --- a/src/main/java/org/ldk/structs/CommitmentUpdate.java +++ b/src/main/java/org/ldk/structs/CommitmentUpdate.java @@ -14,13 +14,6 @@ public class CommitmentUpdate extends CommonBase { if (ptr != 0) { bindings.CommitmentUpdate_free(ptr); } } - public CommitmentUpdate clone() { - long ret = bindings.CommitmentUpdate_clone(this.ptr); - CommitmentUpdate ret_hu_conv = new CommitmentUpdate(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public void set_update_add_htlcs(UpdateAddHTLC[] val) { bindings.CommitmentUpdate_set_update_add_htlcs(this.ptr, Arrays.stream(val).mapToLong(arr_conv_15 -> arr_conv_15 == null ? 0 : arr_conv_15.ptr & ~1).toArray()); /* TODO 2 UpdateAddHTLC */; @@ -78,4 +71,11 @@ public class CommitmentUpdate extends CommonBase { return ret_hu_conv; } + public CommitmentUpdate clone() { + long ret = bindings.CommitmentUpdate_clone(this.ptr); + CommitmentUpdate ret_hu_conv = new CommitmentUpdate(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + } diff --git a/src/main/java/org/ldk/structs/CounterpartyChannelTransactionParameters.java b/src/main/java/org/ldk/structs/CounterpartyChannelTransactionParameters.java index 5cabe932..ae2d77cc 100644 --- a/src/main/java/org/ldk/structs/CounterpartyChannelTransactionParameters.java +++ b/src/main/java/org/ldk/structs/CounterpartyChannelTransactionParameters.java @@ -14,13 +14,6 @@ public class CounterpartyChannelTransactionParameters extends CommonBase { if (ptr != 0) { bindings.CounterpartyChannelTransactionParameters_free(ptr); } } - public CounterpartyChannelTransactionParameters clone() { - long ret = bindings.CounterpartyChannelTransactionParameters_clone(this.ptr); - CounterpartyChannelTransactionParameters ret_hu_conv = new CounterpartyChannelTransactionParameters(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public ChannelPublicKeys get_pubkeys() { long ret = bindings.CounterpartyChannelTransactionParameters_get_pubkeys(this.ptr); ChannelPublicKeys ret_hu_conv = new ChannelPublicKeys(null, ret); @@ -50,15 +43,21 @@ public class CounterpartyChannelTransactionParameters extends CommonBase { return ret_hu_conv; } + public CounterpartyChannelTransactionParameters clone() { + long ret = bindings.CounterpartyChannelTransactionParameters_clone(this.ptr); + CounterpartyChannelTransactionParameters ret_hu_conv = new CounterpartyChannelTransactionParameters(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.CounterpartyChannelTransactionParameters_write(this.ptr); return ret; } - public static CounterpartyChannelTransactionParameters constructor_read(byte[] ser) { + public static Result_CounterpartyChannelTransactionParametersDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.CounterpartyChannelTransactionParameters_read(ser); - CounterpartyChannelTransactionParameters ret_hu_conv = new CounterpartyChannelTransactionParameters(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_CounterpartyChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_CounterpartyChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/DataLossProtect.java b/src/main/java/org/ldk/structs/DataLossProtect.java index 63db5eef..4d0e79d4 100644 --- a/src/main/java/org/ldk/structs/DataLossProtect.java +++ b/src/main/java/org/ldk/structs/DataLossProtect.java @@ -14,13 +14,6 @@ public class DataLossProtect extends CommonBase { if (ptr != 0) { bindings.DataLossProtect_free(ptr); } } - public DataLossProtect clone() { - long ret = bindings.DataLossProtect_clone(this.ptr); - DataLossProtect ret_hu_conv = new DataLossProtect(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_your_last_per_commitment_secret() { byte[] ret = bindings.DataLossProtect_get_your_last_per_commitment_secret(this.ptr); return ret; @@ -46,4 +39,11 @@ public class DataLossProtect extends CommonBase { return ret_hu_conv; } + public DataLossProtect clone() { + long ret = bindings.DataLossProtect_clone(this.ptr); + DataLossProtect ret_hu_conv = new DataLossProtect(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + } diff --git a/src/main/java/org/ldk/structs/DirectionalChannelInfo.java b/src/main/java/org/ldk/structs/DirectionalChannelInfo.java index 82ec5091..8e51c3f2 100644 --- a/src/main/java/org/ldk/structs/DirectionalChannelInfo.java +++ b/src/main/java/org/ldk/structs/DirectionalChannelInfo.java @@ -14,13 +14,6 @@ public class DirectionalChannelInfo extends CommonBase { if (ptr != 0) { bindings.DirectionalChannelInfo_free(ptr); } } - public DirectionalChannelInfo clone() { - long ret = bindings.DirectionalChannelInfo_clone(this.ptr); - DirectionalChannelInfo ret_hu_conv = new DirectionalChannelInfo(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public int get_last_update() { int ret = bindings.DirectionalChannelInfo_get_last_update(this.ptr); return ret; @@ -81,15 +74,21 @@ public class DirectionalChannelInfo extends CommonBase { this.ptrs_to.add(val); } + public DirectionalChannelInfo clone() { + long ret = bindings.DirectionalChannelInfo_clone(this.ptr); + DirectionalChannelInfo ret_hu_conv = new DirectionalChannelInfo(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.DirectionalChannelInfo_write(this.ptr); return ret; } - public static DirectionalChannelInfo constructor_read(byte[] ser) { + public static Result_DirectionalChannelInfoDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.DirectionalChannelInfo_read(ser); - DirectionalChannelInfo ret_hu_conv = new DirectionalChannelInfo(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_DirectionalChannelInfoDecodeErrorZ ret_hu_conv = Result_DirectionalChannelInfoDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/ErrorMessage.java b/src/main/java/org/ldk/structs/ErrorMessage.java index a90b207b..8e1f30dd 100644 --- a/src/main/java/org/ldk/structs/ErrorMessage.java +++ b/src/main/java/org/ldk/structs/ErrorMessage.java @@ -14,13 +14,6 @@ public class ErrorMessage extends CommonBase { if (ptr != 0) { bindings.ErrorMessage_free(ptr); } } - public ErrorMessage clone() { - long ret = bindings.ErrorMessage_clone(this.ptr); - ErrorMessage ret_hu_conv = new ErrorMessage(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_channel_id() { byte[] ret = bindings.ErrorMessage_get_channel_id(this.ptr); return ret; @@ -46,6 +39,13 @@ public class ErrorMessage extends CommonBase { return ret_hu_conv; } + public ErrorMessage clone() { + long ret = bindings.ErrorMessage_clone(this.ptr); + ErrorMessage ret_hu_conv = new ErrorMessage(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.ErrorMessage_write(this.ptr); return ret; diff --git a/src/main/java/org/ldk/structs/FundingCreated.java b/src/main/java/org/ldk/structs/FundingCreated.java index 7687561d..c6388db5 100644 --- a/src/main/java/org/ldk/structs/FundingCreated.java +++ b/src/main/java/org/ldk/structs/FundingCreated.java @@ -14,13 +14,6 @@ public class FundingCreated extends CommonBase { if (ptr != 0) { bindings.FundingCreated_free(ptr); } } - public FundingCreated clone() { - long ret = bindings.FundingCreated_clone(this.ptr); - FundingCreated ret_hu_conv = new FundingCreated(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_temporary_channel_id() { byte[] ret = bindings.FundingCreated_get_temporary_channel_id(this.ptr); return ret; @@ -64,15 +57,21 @@ public class FundingCreated extends CommonBase { return ret_hu_conv; } + public FundingCreated clone() { + long ret = bindings.FundingCreated_clone(this.ptr); + FundingCreated ret_hu_conv = new FundingCreated(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.FundingCreated_write(this.ptr); return ret; } - public static FundingCreated constructor_read(byte[] ser) { + public static Result_FundingCreatedDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.FundingCreated_read(ser); - FundingCreated ret_hu_conv = new FundingCreated(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_FundingCreatedDecodeErrorZ ret_hu_conv = Result_FundingCreatedDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/FundingLocked.java b/src/main/java/org/ldk/structs/FundingLocked.java index 4439697f..0462f1a0 100644 --- a/src/main/java/org/ldk/structs/FundingLocked.java +++ b/src/main/java/org/ldk/structs/FundingLocked.java @@ -14,13 +14,6 @@ public class FundingLocked extends CommonBase { if (ptr != 0) { bindings.FundingLocked_free(ptr); } } - public FundingLocked clone() { - long ret = bindings.FundingLocked_clone(this.ptr); - FundingLocked ret_hu_conv = new FundingLocked(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_channel_id() { byte[] ret = bindings.FundingLocked_get_channel_id(this.ptr); return ret; @@ -46,15 +39,21 @@ public class FundingLocked extends CommonBase { return ret_hu_conv; } + public FundingLocked clone() { + long ret = bindings.FundingLocked_clone(this.ptr); + FundingLocked ret_hu_conv = new FundingLocked(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.FundingLocked_write(this.ptr); return ret; } - public static FundingLocked constructor_read(byte[] ser) { + public static Result_FundingLockedDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.FundingLocked_read(ser); - FundingLocked ret_hu_conv = new FundingLocked(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_FundingLockedDecodeErrorZ ret_hu_conv = Result_FundingLockedDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/FundingSigned.java b/src/main/java/org/ldk/structs/FundingSigned.java index d8566044..e4241d92 100644 --- a/src/main/java/org/ldk/structs/FundingSigned.java +++ b/src/main/java/org/ldk/structs/FundingSigned.java @@ -14,13 +14,6 @@ public class FundingSigned extends CommonBase { if (ptr != 0) { bindings.FundingSigned_free(ptr); } } - public FundingSigned clone() { - long ret = bindings.FundingSigned_clone(this.ptr); - FundingSigned ret_hu_conv = new FundingSigned(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_channel_id() { byte[] ret = bindings.FundingSigned_get_channel_id(this.ptr); return ret; @@ -46,15 +39,21 @@ public class FundingSigned extends CommonBase { return ret_hu_conv; } + public FundingSigned clone() { + long ret = bindings.FundingSigned_clone(this.ptr); + FundingSigned ret_hu_conv = new FundingSigned(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.FundingSigned_write(this.ptr); return ret; } - public static FundingSigned constructor_read(byte[] ser) { + public static Result_FundingSignedDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.FundingSigned_read(ser); - FundingSigned ret_hu_conv = new FundingSigned(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_FundingSignedDecodeErrorZ ret_hu_conv = Result_FundingSignedDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/GossipTimestampFilter.java b/src/main/java/org/ldk/structs/GossipTimestampFilter.java index 55458e73..7f935692 100644 --- a/src/main/java/org/ldk/structs/GossipTimestampFilter.java +++ b/src/main/java/org/ldk/structs/GossipTimestampFilter.java @@ -14,13 +14,6 @@ public class GossipTimestampFilter extends CommonBase { if (ptr != 0) { bindings.GossipTimestampFilter_free(ptr); } } - public GossipTimestampFilter clone() { - long ret = bindings.GossipTimestampFilter_clone(this.ptr); - GossipTimestampFilter ret_hu_conv = new GossipTimestampFilter(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_chain_hash() { byte[] ret = bindings.GossipTimestampFilter_get_chain_hash(this.ptr); return ret; @@ -55,6 +48,13 @@ public class GossipTimestampFilter extends CommonBase { return ret_hu_conv; } + public GossipTimestampFilter clone() { + long ret = bindings.GossipTimestampFilter_clone(this.ptr); + GossipTimestampFilter ret_hu_conv = new GossipTimestampFilter(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static Result_GossipTimestampFilterDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.GossipTimestampFilter_read(ser); Result_GossipTimestampFilterDecodeErrorZ ret_hu_conv = Result_GossipTimestampFilterDecodeErrorZ.constr_from_ptr(ret); diff --git a/src/main/java/org/ldk/structs/HTLCOutputInCommitment.java b/src/main/java/org/ldk/structs/HTLCOutputInCommitment.java index daa1c42d..ea8dd2cb 100644 --- a/src/main/java/org/ldk/structs/HTLCOutputInCommitment.java +++ b/src/main/java/org/ldk/structs/HTLCOutputInCommitment.java @@ -14,13 +14,6 @@ public class HTLCOutputInCommitment extends CommonBase { if (ptr != 0) { bindings.HTLCOutputInCommitment_free(ptr); } } - public HTLCOutputInCommitment clone() { - long ret = bindings.HTLCOutputInCommitment_clone(this.ptr); - HTLCOutputInCommitment ret_hu_conv = new HTLCOutputInCommitment(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public boolean get_offered() { boolean ret = bindings.HTLCOutputInCommitment_get_offered(this.ptr); return ret; @@ -57,15 +50,21 @@ public class HTLCOutputInCommitment extends CommonBase { bindings.HTLCOutputInCommitment_set_payment_hash(this.ptr, val); } + public HTLCOutputInCommitment clone() { + long ret = bindings.HTLCOutputInCommitment_clone(this.ptr); + HTLCOutputInCommitment ret_hu_conv = new HTLCOutputInCommitment(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.HTLCOutputInCommitment_write(this.ptr); return ret; } - public static HTLCOutputInCommitment constructor_read(byte[] ser) { + public static Result_HTLCOutputInCommitmentDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.HTLCOutputInCommitment_read(ser); - HTLCOutputInCommitment ret_hu_conv = new HTLCOutputInCommitment(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_HTLCOutputInCommitmentDecodeErrorZ ret_hu_conv = Result_HTLCOutputInCommitmentDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/HTLCUpdate.java b/src/main/java/org/ldk/structs/HTLCUpdate.java index f860f5dd..57f94ec2 100644 --- a/src/main/java/org/ldk/structs/HTLCUpdate.java +++ b/src/main/java/org/ldk/structs/HTLCUpdate.java @@ -26,10 +26,9 @@ public class HTLCUpdate extends CommonBase { return ret; } - public static HTLCUpdate constructor_read(byte[] ser) { + public static Result_HTLCUpdateDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.HTLCUpdate_read(ser); - HTLCUpdate ret_hu_conv = new HTLCUpdate(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_HTLCUpdateDecodeErrorZ ret_hu_conv = Result_HTLCUpdateDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/HolderCommitmentTransaction.java b/src/main/java/org/ldk/structs/HolderCommitmentTransaction.java index 584c9b76..2ca98f51 100644 --- a/src/main/java/org/ldk/structs/HolderCommitmentTransaction.java +++ b/src/main/java/org/ldk/structs/HolderCommitmentTransaction.java @@ -14,13 +14,6 @@ public class HolderCommitmentTransaction extends CommonBase { if (ptr != 0) { bindings.HolderCommitmentTransaction_free(ptr); } } - public HolderCommitmentTransaction clone() { - long ret = bindings.HolderCommitmentTransaction_clone(this.ptr); - HolderCommitmentTransaction ret_hu_conv = new HolderCommitmentTransaction(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_counterparty_sig() { byte[] ret = bindings.HolderCommitmentTransaction_get_counterparty_sig(this.ptr); return ret; @@ -34,15 +27,21 @@ public class HolderCommitmentTransaction extends CommonBase { bindings.HolderCommitmentTransaction_set_counterparty_htlc_sigs(this.ptr, val); } + public HolderCommitmentTransaction clone() { + long ret = bindings.HolderCommitmentTransaction_clone(this.ptr); + HolderCommitmentTransaction ret_hu_conv = new HolderCommitmentTransaction(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.HolderCommitmentTransaction_write(this.ptr); return ret; } - public static HolderCommitmentTransaction constructor_read(byte[] ser) { + public static Result_HolderCommitmentTransactionDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.HolderCommitmentTransaction_read(ser); - HolderCommitmentTransaction ret_hu_conv = new HolderCommitmentTransaction(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_HolderCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_HolderCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/InMemoryChannelKeys.java b/src/main/java/org/ldk/structs/InMemoryChannelKeys.java index 45345a40..fa9ad9d5 100644 --- a/src/main/java/org/ldk/structs/InMemoryChannelKeys.java +++ b/src/main/java/org/ldk/structs/InMemoryChannelKeys.java @@ -14,13 +14,6 @@ public class InMemoryChannelKeys extends CommonBase { if (ptr != 0) { bindings.InMemoryChannelKeys_free(ptr); } } - public InMemoryChannelKeys clone() { - long ret = bindings.InMemoryChannelKeys_clone(this.ptr); - InMemoryChannelKeys ret_hu_conv = new InMemoryChannelKeys(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_funding_key() { byte[] ret = bindings.InMemoryChannelKeys_get_funding_key(this.ptr); return ret; @@ -75,6 +68,13 @@ public class InMemoryChannelKeys extends CommonBase { bindings.InMemoryChannelKeys_set_commitment_seed(this.ptr, val); } + public InMemoryChannelKeys clone() { + long ret = bindings.InMemoryChannelKeys_clone(this.ptr); + InMemoryChannelKeys ret_hu_conv = new InMemoryChannelKeys(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static InMemoryChannelKeys constructor_new(byte[] funding_key, byte[] revocation_base_key, byte[] payment_key, byte[] delayed_payment_base_key, byte[] htlc_base_key, byte[] commitment_seed, long channel_value_satoshis, TwoTuple key_derivation_params) { long ret = bindings.InMemoryChannelKeys_new(funding_key, revocation_base_key, payment_key, delayed_payment_base_key, htlc_base_key, commitment_seed, channel_value_satoshis, bindings.C2Tuple_u64u64Z_new(key_derivation_params.a, key_derivation_params.b)); InMemoryChannelKeys ret_hu_conv = new InMemoryChannelKeys(null, ret); diff --git a/src/main/java/org/ldk/structs/InitFeatures.java b/src/main/java/org/ldk/structs/InitFeatures.java index f4d8a7e8..2ab513ac 100644 --- a/src/main/java/org/ldk/structs/InitFeatures.java +++ b/src/main/java/org/ldk/structs/InitFeatures.java @@ -14,4 +14,36 @@ public class InitFeatures extends CommonBase { if (ptr != 0) { bindings.InitFeatures_free(ptr); } } + public InitFeatures clone() { + long ret = bindings.InitFeatures_clone(this.ptr); + InitFeatures ret_hu_conv = new InitFeatures(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + + public static InitFeatures constructor_empty() { + long ret = bindings.InitFeatures_empty(); + InitFeatures ret_hu_conv = new InitFeatures(null, ret); + ret_hu_conv.ptrs_to.add(ret_hu_conv); + return ret_hu_conv; + } + + public static InitFeatures constructor_known() { + long ret = bindings.InitFeatures_known(); + InitFeatures ret_hu_conv = new InitFeatures(null, ret); + ret_hu_conv.ptrs_to.add(ret_hu_conv); + return ret_hu_conv; + } + + public byte[] write() { + byte[] ret = bindings.InitFeatures_write(this.ptr); + return ret; + } + + public static Result_InitFeaturesDecodeErrorZ constructor_read(byte[] ser) { + long ret = bindings.InitFeatures_read(ser); + Result_InitFeaturesDecodeErrorZ ret_hu_conv = Result_InitFeaturesDecodeErrorZ.constr_from_ptr(ret); + return ret_hu_conv; + } + } diff --git a/src/main/java/org/ldk/structs/KeysInterface.java b/src/main/java/org/ldk/structs/KeysInterface.java index 46148adf..84a27623 100644 --- a/src/main/java/org/ldk/structs/KeysInterface.java +++ b/src/main/java/org/ldk/structs/KeysInterface.java @@ -25,7 +25,7 @@ public class KeysInterface extends CommonBase { byte[] get_shutdown_pubkey(); ChannelKeys get_channel_keys(boolean inbound, long channel_value_satoshis); byte[] get_secure_random_bytes(); - Result_ChanKeySignerDecodeErrorZ read_chan_signer(byte[] reader); + Result_ChannelKeysDecodeErrorZ read_chan_signer(byte[] reader); } private static class LDKKeysInterfaceHolder { KeysInterface held; } public static KeysInterface new_impl(KeysInterfaceInterface arg) { @@ -54,7 +54,7 @@ public class KeysInterface extends CommonBase { return ret; } @Override public long read_chan_signer(byte[] reader) { - Result_ChanKeySignerDecodeErrorZ ret = arg.read_chan_signer(reader); + Result_ChannelKeysDecodeErrorZ ret = arg.read_chan_signer(reader); long result = ret != null ? ret.ptr : 0; return result; } @@ -88,9 +88,9 @@ public class KeysInterface extends CommonBase { return ret; } - public Result_ChanKeySignerDecodeErrorZ read_chan_signer(byte[] reader) { + public Result_ChannelKeysDecodeErrorZ read_chan_signer(byte[] reader) { long ret = bindings.KeysInterface_read_chan_signer(this.ptr, reader); - Result_ChanKeySignerDecodeErrorZ ret_hu_conv = Result_ChanKeySignerDecodeErrorZ.constr_from_ptr(ret); + Result_ChannelKeysDecodeErrorZ ret_hu_conv = Result_ChannelKeysDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/LightningError.java b/src/main/java/org/ldk/structs/LightningError.java index b1793b32..d4138bf4 100644 --- a/src/main/java/org/ldk/structs/LightningError.java +++ b/src/main/java/org/ldk/structs/LightningError.java @@ -14,13 +14,6 @@ public class LightningError extends CommonBase { if (ptr != 0) { bindings.LightningError_free(ptr); } } - public LightningError clone() { - long ret = bindings.LightningError_clone(this.ptr); - LightningError ret_hu_conv = new LightningError(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public String get_err() { String ret = bindings.LightningError_get_err(this.ptr); return ret; @@ -48,4 +41,11 @@ public class LightningError extends CommonBase { return ret_hu_conv; } + public LightningError clone() { + long ret = bindings.LightningError_clone(this.ptr); + LightningError ret_hu_conv = new LightningError(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + } diff --git a/src/main/java/org/ldk/structs/NodeAnnouncement.java b/src/main/java/org/ldk/structs/NodeAnnouncement.java index 26cdd582..2b83385c 100644 --- a/src/main/java/org/ldk/structs/NodeAnnouncement.java +++ b/src/main/java/org/ldk/structs/NodeAnnouncement.java @@ -14,13 +14,6 @@ public class NodeAnnouncement extends CommonBase { if (ptr != 0) { bindings.NodeAnnouncement_free(ptr); } } - public NodeAnnouncement clone() { - long ret = bindings.NodeAnnouncement_clone(this.ptr); - NodeAnnouncement ret_hu_conv = new NodeAnnouncement(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_signature() { byte[] ret = bindings.NodeAnnouncement_get_signature(this.ptr); return ret; @@ -50,15 +43,21 @@ public class NodeAnnouncement extends CommonBase { return ret_hu_conv; } + public NodeAnnouncement clone() { + long ret = bindings.NodeAnnouncement_clone(this.ptr); + NodeAnnouncement ret_hu_conv = new NodeAnnouncement(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.NodeAnnouncement_write(this.ptr); return ret; } - public static NodeAnnouncement constructor_read(byte[] ser) { + public static Result_NodeAnnouncementDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.NodeAnnouncement_read(ser); - NodeAnnouncement ret_hu_conv = new NodeAnnouncement(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_NodeAnnouncementDecodeErrorZ ret_hu_conv = Result_NodeAnnouncementDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/NodeAnnouncementInfo.java b/src/main/java/org/ldk/structs/NodeAnnouncementInfo.java index f59c055e..3c633bbf 100644 --- a/src/main/java/org/ldk/structs/NodeAnnouncementInfo.java +++ b/src/main/java/org/ldk/structs/NodeAnnouncementInfo.java @@ -14,13 +14,6 @@ public class NodeAnnouncementInfo extends CommonBase { if (ptr != 0) { bindings.NodeAnnouncementInfo_free(ptr); } } - public NodeAnnouncementInfo clone() { - long ret = bindings.NodeAnnouncementInfo_clone(this.ptr); - NodeAnnouncementInfo ret_hu_conv = new NodeAnnouncementInfo(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public NodeFeatures get_features() { long ret = bindings.NodeAnnouncementInfo_get_features(this.ptr); NodeFeatures ret_hu_conv = new NodeFeatures(null, ret); @@ -31,14 +24,6 @@ public class NodeAnnouncementInfo extends CommonBase { public void set_features(NodeFeatures val) { bindings.NodeAnnouncementInfo_set_features(this.ptr, val == null ? 0 : val.ptr & ~1); this.ptrs_to.add(val); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, val is reset to null and is now a dummy object. - val.ptr = 0; } public int get_last_update() { @@ -90,19 +75,18 @@ public class NodeAnnouncementInfo extends CommonBase { NodeAnnouncementInfo ret_hu_conv = new NodeAnnouncementInfo(null, ret); ret_hu_conv.ptrs_to.add(ret_hu_conv); ret_hu_conv.ptrs_to.add(features_arg); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid ret_hu_conv being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after ret_hu_conv call, features_arg is reset to null and is now a dummy object. - features_arg.ptr = 0; /* TODO 2 NetAddress */; ret_hu_conv.ptrs_to.add(announcement_message_arg); return ret_hu_conv; } + public NodeAnnouncementInfo clone() { + long ret = bindings.NodeAnnouncementInfo_clone(this.ptr); + NodeAnnouncementInfo ret_hu_conv = new NodeAnnouncementInfo(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.NodeAnnouncementInfo_write(this.ptr); return ret; diff --git a/src/main/java/org/ldk/structs/NodeFeatures.java b/src/main/java/org/ldk/structs/NodeFeatures.java index d1dfb5b4..a32f9680 100644 --- a/src/main/java/org/ldk/structs/NodeFeatures.java +++ b/src/main/java/org/ldk/structs/NodeFeatures.java @@ -14,4 +14,36 @@ public class NodeFeatures extends CommonBase { if (ptr != 0) { bindings.NodeFeatures_free(ptr); } } + public NodeFeatures clone() { + long ret = bindings.NodeFeatures_clone(this.ptr); + NodeFeatures ret_hu_conv = new NodeFeatures(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + + public static NodeFeatures constructor_empty() { + long ret = bindings.NodeFeatures_empty(); + NodeFeatures ret_hu_conv = new NodeFeatures(null, ret); + ret_hu_conv.ptrs_to.add(ret_hu_conv); + return ret_hu_conv; + } + + public static NodeFeatures constructor_known() { + long ret = bindings.NodeFeatures_known(); + NodeFeatures ret_hu_conv = new NodeFeatures(null, ret); + ret_hu_conv.ptrs_to.add(ret_hu_conv); + return ret_hu_conv; + } + + public byte[] write() { + byte[] ret = bindings.NodeFeatures_write(this.ptr); + return ret; + } + + public static Result_NodeFeaturesDecodeErrorZ constructor_read(byte[] ser) { + long ret = bindings.NodeFeatures_read(ser); + Result_NodeFeaturesDecodeErrorZ ret_hu_conv = Result_NodeFeaturesDecodeErrorZ.constr_from_ptr(ret); + return ret_hu_conv; + } + } diff --git a/src/main/java/org/ldk/structs/NodeInfo.java b/src/main/java/org/ldk/structs/NodeInfo.java index ba19c79b..8b983739 100644 --- a/src/main/java/org/ldk/structs/NodeInfo.java +++ b/src/main/java/org/ldk/structs/NodeInfo.java @@ -14,13 +14,6 @@ public class NodeInfo extends CommonBase { if (ptr != 0) { bindings.NodeInfo_free(ptr); } } - public NodeInfo clone() { - long ret = bindings.NodeInfo_clone(this.ptr); - NodeInfo ret_hu_conv = new NodeInfo(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public void set_channels(long[] val) { bindings.NodeInfo_set_channels(this.ptr, val); } @@ -58,6 +51,13 @@ public class NodeInfo extends CommonBase { return ret_hu_conv; } + public NodeInfo clone() { + long ret = bindings.NodeInfo_clone(this.ptr); + NodeInfo ret_hu_conv = new NodeInfo(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.NodeInfo_write(this.ptr); return ret; diff --git a/src/main/java/org/ldk/structs/OpenChannel.java b/src/main/java/org/ldk/structs/OpenChannel.java index 2de4e031..3f2c4190 100644 --- a/src/main/java/org/ldk/structs/OpenChannel.java +++ b/src/main/java/org/ldk/structs/OpenChannel.java @@ -14,13 +14,6 @@ public class OpenChannel extends CommonBase { if (ptr != 0) { bindings.OpenChannel_free(ptr); } } - public OpenChannel clone() { - long ret = bindings.OpenChannel_clone(this.ptr); - OpenChannel ret_hu_conv = new OpenChannel(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_chain_hash() { byte[] ret = bindings.OpenChannel_get_chain_hash(this.ptr); return ret; @@ -183,15 +176,21 @@ public class OpenChannel extends CommonBase { bindings.OpenChannel_set_channel_flags(this.ptr, val); } + public OpenChannel clone() { + long ret = bindings.OpenChannel_clone(this.ptr); + OpenChannel ret_hu_conv = new OpenChannel(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.OpenChannel_write(this.ptr); return ret; } - public static OpenChannel constructor_read(byte[] ser) { + public static Result_OpenChannelDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.OpenChannel_read(ser); - OpenChannel ret_hu_conv = new OpenChannel(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_OpenChannelDecodeErrorZ ret_hu_conv = Result_OpenChannelDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/OutPoint.java b/src/main/java/org/ldk/structs/OutPoint.java index edc0a7f3..d0c7edba 100644 --- a/src/main/java/org/ldk/structs/OutPoint.java +++ b/src/main/java/org/ldk/structs/OutPoint.java @@ -14,13 +14,6 @@ public class OutPoint extends CommonBase { if (ptr != 0) { bindings.OutPoint_free(ptr); } } - public OutPoint clone() { - long ret = bindings.OutPoint_clone(this.ptr); - OutPoint ret_hu_conv = new OutPoint(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_txid() { byte[] ret = bindings.OutPoint_get_txid(this.ptr); return ret; @@ -46,6 +39,13 @@ public class OutPoint extends CommonBase { return ret_hu_conv; } + public OutPoint clone() { + long ret = bindings.OutPoint_clone(this.ptr); + OutPoint ret_hu_conv = new OutPoint(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] to_channel_id() { byte[] ret = bindings.OutPoint_to_channel_id(this.ptr); return ret; @@ -56,10 +56,9 @@ public class OutPoint extends CommonBase { return ret; } - public static OutPoint constructor_read(byte[] ser) { + public static Result_OutPointDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.OutPoint_read(ser); - OutPoint ret_hu_conv = new OutPoint(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_OutPointDecodeErrorZ ret_hu_conv = Result_OutPointDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/PeerHandleError.java b/src/main/java/org/ldk/structs/PeerHandleError.java index b2473028..0bd7604d 100644 --- a/src/main/java/org/ldk/structs/PeerHandleError.java +++ b/src/main/java/org/ldk/structs/PeerHandleError.java @@ -14,13 +14,6 @@ public class PeerHandleError extends CommonBase { if (ptr != 0) { bindings.PeerHandleError_free(ptr); } } - public PeerHandleError clone() { - long ret = bindings.PeerHandleError_clone(this.ptr); - PeerHandleError ret_hu_conv = new PeerHandleError(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public boolean get_no_connection_possible() { boolean ret = bindings.PeerHandleError_get_no_connection_possible(this.ptr); return ret; @@ -37,4 +30,11 @@ public class PeerHandleError extends CommonBase { return ret_hu_conv; } + public PeerHandleError clone() { + long ret = bindings.PeerHandleError_clone(this.ptr); + PeerHandleError ret_hu_conv = new PeerHandleError(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + } diff --git a/src/main/java/org/ldk/structs/Ping.java b/src/main/java/org/ldk/structs/Ping.java index 72815630..0f466fa9 100644 --- a/src/main/java/org/ldk/structs/Ping.java +++ b/src/main/java/org/ldk/structs/Ping.java @@ -14,13 +14,6 @@ public class Ping extends CommonBase { if (ptr != 0) { bindings.Ping_free(ptr); } } - public Ping clone() { - long ret = bindings.Ping_clone(this.ptr); - Ping ret_hu_conv = new Ping(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public short get_ponglen() { short ret = bindings.Ping_get_ponglen(this.ptr); return ret; @@ -46,6 +39,13 @@ public class Ping extends CommonBase { return ret_hu_conv; } + public Ping clone() { + long ret = bindings.Ping_clone(this.ptr); + Ping ret_hu_conv = new Ping(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.Ping_write(this.ptr); return ret; diff --git a/src/main/java/org/ldk/structs/Pong.java b/src/main/java/org/ldk/structs/Pong.java index ef636e28..80530aa7 100644 --- a/src/main/java/org/ldk/structs/Pong.java +++ b/src/main/java/org/ldk/structs/Pong.java @@ -14,13 +14,6 @@ public class Pong extends CommonBase { if (ptr != 0) { bindings.Pong_free(ptr); } } - public Pong clone() { - long ret = bindings.Pong_clone(this.ptr); - Pong ret_hu_conv = new Pong(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public short get_byteslen() { short ret = bindings.Pong_get_byteslen(this.ptr); return ret; @@ -37,6 +30,13 @@ public class Pong extends CommonBase { return ret_hu_conv; } + public Pong clone() { + long ret = bindings.Pong_clone(this.ptr); + Pong ret_hu_conv = new Pong(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.Pong_write(this.ptr); return ret; diff --git a/src/main/java/org/ldk/structs/QueryChannelRange.java b/src/main/java/org/ldk/structs/QueryChannelRange.java index acacd053..2f6f3a12 100644 --- a/src/main/java/org/ldk/structs/QueryChannelRange.java +++ b/src/main/java/org/ldk/structs/QueryChannelRange.java @@ -14,13 +14,6 @@ public class QueryChannelRange extends CommonBase { if (ptr != 0) { bindings.QueryChannelRange_free(ptr); } } - public QueryChannelRange clone() { - long ret = bindings.QueryChannelRange_clone(this.ptr); - QueryChannelRange ret_hu_conv = new QueryChannelRange(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_chain_hash() { byte[] ret = bindings.QueryChannelRange_get_chain_hash(this.ptr); return ret; @@ -55,6 +48,13 @@ public class QueryChannelRange extends CommonBase { return ret_hu_conv; } + public QueryChannelRange clone() { + long ret = bindings.QueryChannelRange_clone(this.ptr); + QueryChannelRange ret_hu_conv = new QueryChannelRange(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static Result_QueryChannelRangeDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.QueryChannelRange_read(ser); Result_QueryChannelRangeDecodeErrorZ ret_hu_conv = Result_QueryChannelRangeDecodeErrorZ.constr_from_ptr(ret); diff --git a/src/main/java/org/ldk/structs/QueryShortChannelIds.java b/src/main/java/org/ldk/structs/QueryShortChannelIds.java index 2c9f57d7..069bc72d 100644 --- a/src/main/java/org/ldk/structs/QueryShortChannelIds.java +++ b/src/main/java/org/ldk/structs/QueryShortChannelIds.java @@ -14,13 +14,6 @@ public class QueryShortChannelIds extends CommonBase { if (ptr != 0) { bindings.QueryShortChannelIds_free(ptr); } } - public QueryShortChannelIds clone() { - long ret = bindings.QueryShortChannelIds_clone(this.ptr); - QueryShortChannelIds ret_hu_conv = new QueryShortChannelIds(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_chain_hash() { byte[] ret = bindings.QueryShortChannelIds_get_chain_hash(this.ptr); return ret; @@ -41,6 +34,13 @@ public class QueryShortChannelIds extends CommonBase { return ret_hu_conv; } + public QueryShortChannelIds clone() { + long ret = bindings.QueryShortChannelIds_clone(this.ptr); + QueryShortChannelIds ret_hu_conv = new QueryShortChannelIds(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static Result_QueryShortChannelIdsDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.QueryShortChannelIds_read(ser); Result_QueryShortChannelIdsDecodeErrorZ ret_hu_conv = Result_QueryShortChannelIdsDecodeErrorZ.constr_from_ptr(ret); diff --git a/src/main/java/org/ldk/structs/ReplyChannelRange.java b/src/main/java/org/ldk/structs/ReplyChannelRange.java index ca7243da..21934785 100644 --- a/src/main/java/org/ldk/structs/ReplyChannelRange.java +++ b/src/main/java/org/ldk/structs/ReplyChannelRange.java @@ -14,13 +14,6 @@ public class ReplyChannelRange extends CommonBase { if (ptr != 0) { bindings.ReplyChannelRange_free(ptr); } } - public ReplyChannelRange clone() { - long ret = bindings.ReplyChannelRange_clone(this.ptr); - ReplyChannelRange ret_hu_conv = new ReplyChannelRange(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_chain_hash() { byte[] ret = bindings.ReplyChannelRange_get_chain_hash(this.ptr); return ret; @@ -48,26 +41,33 @@ public class ReplyChannelRange extends CommonBase { bindings.ReplyChannelRange_set_number_of_blocks(this.ptr, val); } - public boolean get_full_information() { - boolean ret = bindings.ReplyChannelRange_get_full_information(this.ptr); + public boolean get_sync_complete() { + boolean ret = bindings.ReplyChannelRange_get_sync_complete(this.ptr); return ret; } - public void set_full_information(boolean val) { - bindings.ReplyChannelRange_set_full_information(this.ptr, val); + public void set_sync_complete(boolean val) { + bindings.ReplyChannelRange_set_sync_complete(this.ptr, val); } public void set_short_channel_ids(long[] val) { bindings.ReplyChannelRange_set_short_channel_ids(this.ptr, val); } - public static ReplyChannelRange constructor_new(byte[] chain_hash_arg, int first_blocknum_arg, int number_of_blocks_arg, boolean full_information_arg, long[] short_channel_ids_arg) { - long ret = bindings.ReplyChannelRange_new(chain_hash_arg, first_blocknum_arg, number_of_blocks_arg, full_information_arg, short_channel_ids_arg); + public static ReplyChannelRange constructor_new(byte[] chain_hash_arg, int first_blocknum_arg, int number_of_blocks_arg, boolean sync_complete_arg, long[] short_channel_ids_arg) { + long ret = bindings.ReplyChannelRange_new(chain_hash_arg, first_blocknum_arg, number_of_blocks_arg, sync_complete_arg, short_channel_ids_arg); ReplyChannelRange ret_hu_conv = new ReplyChannelRange(null, ret); ret_hu_conv.ptrs_to.add(ret_hu_conv); return ret_hu_conv; } + public ReplyChannelRange clone() { + long ret = bindings.ReplyChannelRange_clone(this.ptr); + ReplyChannelRange ret_hu_conv = new ReplyChannelRange(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static Result_ReplyChannelRangeDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.ReplyChannelRange_read(ser); Result_ReplyChannelRangeDecodeErrorZ ret_hu_conv = Result_ReplyChannelRangeDecodeErrorZ.constr_from_ptr(ret); diff --git a/src/main/java/org/ldk/structs/ReplyShortChannelIdsEnd.java b/src/main/java/org/ldk/structs/ReplyShortChannelIdsEnd.java index a558d5c9..26098810 100644 --- a/src/main/java/org/ldk/structs/ReplyShortChannelIdsEnd.java +++ b/src/main/java/org/ldk/structs/ReplyShortChannelIdsEnd.java @@ -14,13 +14,6 @@ public class ReplyShortChannelIdsEnd extends CommonBase { if (ptr != 0) { bindings.ReplyShortChannelIdsEnd_free(ptr); } } - public ReplyShortChannelIdsEnd clone() { - long ret = bindings.ReplyShortChannelIdsEnd_clone(this.ptr); - ReplyShortChannelIdsEnd ret_hu_conv = new ReplyShortChannelIdsEnd(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_chain_hash() { byte[] ret = bindings.ReplyShortChannelIdsEnd_get_chain_hash(this.ptr); return ret; @@ -46,6 +39,13 @@ public class ReplyShortChannelIdsEnd extends CommonBase { return ret_hu_conv; } + public ReplyShortChannelIdsEnd clone() { + long ret = bindings.ReplyShortChannelIdsEnd_clone(this.ptr); + ReplyShortChannelIdsEnd ret_hu_conv = new ReplyShortChannelIdsEnd(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static Result_ReplyShortChannelIdsEndDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.ReplyShortChannelIdsEnd_read(ser); Result_ReplyShortChannelIdsEndDecodeErrorZ ret_hu_conv = Result_ReplyShortChannelIdsEndDecodeErrorZ.constr_from_ptr(ret); diff --git a/src/main/java/org/ldk/structs/Result_ChanKeySignerDecodeErrorZ.java b/src/main/java/org/ldk/structs/Result_ChanKeySignerDecodeErrorZ.java deleted file mode 100644 index 6b401df8..00000000 --- a/src/main/java/org/ldk/structs/Result_ChanKeySignerDecodeErrorZ.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.ldk.structs; - -import org.ldk.impl.bindings; -import org.ldk.enums.*; -import org.ldk.util.*; -import java.util.Arrays; - -@SuppressWarnings("unchecked") // We correctly assign various generic arrays -public class Result_ChanKeySignerDecodeErrorZ extends CommonBase { - private Result_ChanKeySignerDecodeErrorZ(Object _dummy, long ptr) { super(ptr); } - protected void finalize() throws Throwable { - if (ptr != 0) { bindings.CResult_ChanKeySignerDecodeErrorZ_free(ptr); } super.finalize(); - } - - static Result_ChanKeySignerDecodeErrorZ constr_from_ptr(long ptr) { - if (bindings.LDKCResult_ChanKeySignerDecodeErrorZ_result_ok(ptr)) { - return new Result_ChanKeySignerDecodeErrorZ_OK(null, ptr); - } else { - return new Result_ChanKeySignerDecodeErrorZ_Err(null, ptr); - } - } - public static final class Result_ChanKeySignerDecodeErrorZ_OK extends Result_ChanKeySignerDecodeErrorZ { - public final ChannelKeys res; - private Result_ChanKeySignerDecodeErrorZ_OK(Object _dummy, long ptr) { - super(_dummy, ptr); - long res = bindings.LDKCResult_ChanKeySignerDecodeErrorZ_get_ok(ptr); - ChannelKeys ret_hu_conv = new ChannelKeys(null, res); - ret_hu_conv.ptrs_to.add(this); - this.res = ret_hu_conv; - } - public Result_ChanKeySignerDecodeErrorZ_OK(ChannelKeys res) { - this(null, bindings.CResult_ChanKeySignerDecodeErrorZ_ok(res == null ? 0 : res.ptr)); - this.ptrs_to.add(res); - } - } - - public static final class Result_ChanKeySignerDecodeErrorZ_Err extends Result_ChanKeySignerDecodeErrorZ { - public final DecodeError err; - private Result_ChanKeySignerDecodeErrorZ_Err(Object _dummy, long ptr) { - super(_dummy, ptr); - long err = bindings.LDKCResult_ChanKeySignerDecodeErrorZ_get_err(ptr); - DecodeError err_hu_conv = new DecodeError(null, err); - err_hu_conv.ptrs_to.add(this); - this.err = err_hu_conv; - } - public Result_ChanKeySignerDecodeErrorZ_Err(DecodeError err) { - this(null, bindings.CResult_ChanKeySignerDecodeErrorZ_err(err == null ? 0 : err.ptr & ~1)); - this.ptrs_to.add(err); - } - } -} diff --git a/src/main/java/org/ldk/structs/Result_PublicKeySecpErrorZ.java b/src/main/java/org/ldk/structs/Result_PublicKeySecpErrorZ.java deleted file mode 100644 index 15c27f43..00000000 --- a/src/main/java/org/ldk/structs/Result_PublicKeySecpErrorZ.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.ldk.structs; - -import org.ldk.impl.bindings; -import org.ldk.enums.*; -import org.ldk.util.*; -import java.util.Arrays; - -@SuppressWarnings("unchecked") // We correctly assign various generic arrays -public class Result_PublicKeySecpErrorZ extends CommonBase { - private Result_PublicKeySecpErrorZ(Object _dummy, long ptr) { super(ptr); } - protected void finalize() throws Throwable { - if (ptr != 0) { bindings.CResult_PublicKeySecpErrorZ_free(ptr); } super.finalize(); - } - - static Result_PublicKeySecpErrorZ constr_from_ptr(long ptr) { - if (bindings.LDKCResult_PublicKeySecpErrorZ_result_ok(ptr)) { - return new Result_PublicKeySecpErrorZ_OK(null, ptr); - } else { - return new Result_PublicKeySecpErrorZ_Err(null, ptr); - } - } - public static final class Result_PublicKeySecpErrorZ_OK extends Result_PublicKeySecpErrorZ { - public final byte[] res; - private Result_PublicKeySecpErrorZ_OK(Object _dummy, long ptr) { - super(_dummy, ptr); - this.res = bindings.LDKCResult_PublicKeySecpErrorZ_get_ok(ptr); - } - public Result_PublicKeySecpErrorZ_OK(byte[] res) { - this(null, bindings.CResult_PublicKeySecpErrorZ_ok(res)); - } - } - - public static final class Result_PublicKeySecpErrorZ_Err extends Result_PublicKeySecpErrorZ { - public final LDKSecp256k1Error err; - private Result_PublicKeySecpErrorZ_Err(Object _dummy, long ptr) { - super(_dummy, ptr); - this.err = bindings.LDKCResult_PublicKeySecpErrorZ_get_err(ptr); - } - public Result_PublicKeySecpErrorZ_Err(LDKSecp256k1Error err) { - this(null, bindings.CResult_PublicKeySecpErrorZ_err(err)); - } - } -} diff --git a/src/main/java/org/ldk/structs/Result_SecretKeySecpErrorZ.java b/src/main/java/org/ldk/structs/Result_SecretKeySecpErrorZ.java deleted file mode 100644 index 01744bee..00000000 --- a/src/main/java/org/ldk/structs/Result_SecretKeySecpErrorZ.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.ldk.structs; - -import org.ldk.impl.bindings; -import org.ldk.enums.*; -import org.ldk.util.*; -import java.util.Arrays; - -@SuppressWarnings("unchecked") // We correctly assign various generic arrays -public class Result_SecretKeySecpErrorZ extends CommonBase { - private Result_SecretKeySecpErrorZ(Object _dummy, long ptr) { super(ptr); } - protected void finalize() throws Throwable { - if (ptr != 0) { bindings.CResult_SecretKeySecpErrorZ_free(ptr); } super.finalize(); - } - - static Result_SecretKeySecpErrorZ constr_from_ptr(long ptr) { - if (bindings.LDKCResult_SecretKeySecpErrorZ_result_ok(ptr)) { - return new Result_SecretKeySecpErrorZ_OK(null, ptr); - } else { - return new Result_SecretKeySecpErrorZ_Err(null, ptr); - } - } - public static final class Result_SecretKeySecpErrorZ_OK extends Result_SecretKeySecpErrorZ { - public final byte[] res; - private Result_SecretKeySecpErrorZ_OK(Object _dummy, long ptr) { - super(_dummy, ptr); - this.res = bindings.LDKCResult_SecretKeySecpErrorZ_get_ok(ptr); - } - public Result_SecretKeySecpErrorZ_OK(byte[] res) { - this(null, bindings.CResult_SecretKeySecpErrorZ_ok(res)); - } - } - - public static final class Result_SecretKeySecpErrorZ_Err extends Result_SecretKeySecpErrorZ { - public final LDKSecp256k1Error err; - private Result_SecretKeySecpErrorZ_Err(Object _dummy, long ptr) { - super(_dummy, ptr); - this.err = bindings.LDKCResult_SecretKeySecpErrorZ_get_err(ptr); - } - public Result_SecretKeySecpErrorZ_Err(LDKSecp256k1Error err) { - this(null, bindings.CResult_SecretKeySecpErrorZ_err(err)); - } - } -} diff --git a/src/main/java/org/ldk/structs/Result_TxCreationKeysSecpErrorZ.java b/src/main/java/org/ldk/structs/Result_TxCreationKeysSecpErrorZ.java deleted file mode 100644 index 3ee052d2..00000000 --- a/src/main/java/org/ldk/structs/Result_TxCreationKeysSecpErrorZ.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.ldk.structs; - -import org.ldk.impl.bindings; -import org.ldk.enums.*; -import org.ldk.util.*; -import java.util.Arrays; - -@SuppressWarnings("unchecked") // We correctly assign various generic arrays -public class Result_TxCreationKeysSecpErrorZ extends CommonBase { - private Result_TxCreationKeysSecpErrorZ(Object _dummy, long ptr) { super(ptr); } - protected void finalize() throws Throwable { - if (ptr != 0) { bindings.CResult_TxCreationKeysSecpErrorZ_free(ptr); } super.finalize(); - } - - static Result_TxCreationKeysSecpErrorZ constr_from_ptr(long ptr) { - if (bindings.LDKCResult_TxCreationKeysSecpErrorZ_result_ok(ptr)) { - return new Result_TxCreationKeysSecpErrorZ_OK(null, ptr); - } else { - return new Result_TxCreationKeysSecpErrorZ_Err(null, ptr); - } - } - public static final class Result_TxCreationKeysSecpErrorZ_OK extends Result_TxCreationKeysSecpErrorZ { - public final TxCreationKeys res; - private Result_TxCreationKeysSecpErrorZ_OK(Object _dummy, long ptr) { - super(_dummy, ptr); - long res = bindings.LDKCResult_TxCreationKeysSecpErrorZ_get_ok(ptr); - TxCreationKeys res_hu_conv = new TxCreationKeys(null, res); - res_hu_conv.ptrs_to.add(this); - this.res = res_hu_conv; - } - public Result_TxCreationKeysSecpErrorZ_OK(TxCreationKeys res) { - this(null, bindings.CResult_TxCreationKeysSecpErrorZ_ok(res == null ? 0 : res.ptr & ~1)); - this.ptrs_to.add(res); - } - } - - public static final class Result_TxCreationKeysSecpErrorZ_Err extends Result_TxCreationKeysSecpErrorZ { - public final LDKSecp256k1Error err; - private Result_TxCreationKeysSecpErrorZ_Err(Object _dummy, long ptr) { - super(_dummy, ptr); - this.err = bindings.LDKCResult_TxCreationKeysSecpErrorZ_get_err(ptr); - } - public Result_TxCreationKeysSecpErrorZ_Err(LDKSecp256k1Error err) { - this(null, bindings.CResult_TxCreationKeysSecpErrorZ_err(err)); - } - } -} diff --git a/src/main/java/org/ldk/structs/RevokeAndACK.java b/src/main/java/org/ldk/structs/RevokeAndACK.java index dcf6ddd9..80fe9b59 100644 --- a/src/main/java/org/ldk/structs/RevokeAndACK.java +++ b/src/main/java/org/ldk/structs/RevokeAndACK.java @@ -14,13 +14,6 @@ public class RevokeAndACK extends CommonBase { if (ptr != 0) { bindings.RevokeAndACK_free(ptr); } } - public RevokeAndACK clone() { - long ret = bindings.RevokeAndACK_clone(this.ptr); - RevokeAndACK ret_hu_conv = new RevokeAndACK(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_channel_id() { byte[] ret = bindings.RevokeAndACK_get_channel_id(this.ptr); return ret; @@ -55,15 +48,21 @@ public class RevokeAndACK extends CommonBase { return ret_hu_conv; } + public RevokeAndACK clone() { + long ret = bindings.RevokeAndACK_clone(this.ptr); + RevokeAndACK ret_hu_conv = new RevokeAndACK(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.RevokeAndACK_write(this.ptr); return ret; } - public static RevokeAndACK constructor_read(byte[] ser) { + public static Result_RevokeAndACKDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.RevokeAndACK_read(ser); - RevokeAndACK ret_hu_conv = new RevokeAndACK(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_RevokeAndACKDecodeErrorZ ret_hu_conv = Result_RevokeAndACKDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/Route.java b/src/main/java/org/ldk/structs/Route.java index cb0f6a2b..a5b6a421 100644 --- a/src/main/java/org/ldk/structs/Route.java +++ b/src/main/java/org/ldk/structs/Route.java @@ -14,26 +14,26 @@ public class Route extends CommonBase { if (ptr != 0) { bindings.Route_free(ptr); } } - public Route clone() { - long ret = bindings.Route_clone(this.ptr); - Route ret_hu_conv = new Route(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public void set_paths(RouteHop[][] val) { - bindings.Route_set_paths(this.ptr, (long[][])Arrays.stream(val).map(arr_conv_12 -> Arrays.stream(arr_conv_12).mapToLong(arr_conv_10 -> arr_conv_10 == null ? 0 : arr_conv_10.ptr & ~1).toArray()).toArray()); + bindings.Route_set_paths(this.ptr, Arrays.stream(val).map(arr_conv_12 -> Arrays.stream(arr_conv_12).mapToLong(arr_conv_10 -> arr_conv_10 == null ? 0 : arr_conv_10.ptr & ~1).toArray()).toArray(long[][]::new)); /* TODO 2 RouteHop[] */; } public static Route constructor_new(RouteHop[][] paths_arg) { - long ret = bindings.Route_new((long[][])Arrays.stream(paths_arg).map(arr_conv_12 -> Arrays.stream(arr_conv_12).mapToLong(arr_conv_10 -> arr_conv_10 == null ? 0 : arr_conv_10.ptr & ~1).toArray()).toArray()); + long ret = bindings.Route_new(Arrays.stream(paths_arg).map(arr_conv_12 -> Arrays.stream(arr_conv_12).mapToLong(arr_conv_10 -> arr_conv_10 == null ? 0 : arr_conv_10.ptr & ~1).toArray()).toArray(long[][]::new)); Route ret_hu_conv = new Route(null, ret); ret_hu_conv.ptrs_to.add(ret_hu_conv); /* TODO 2 RouteHop[] */; return ret_hu_conv; } + public Route clone() { + long ret = bindings.Route_clone(this.ptr); + Route ret_hu_conv = new Route(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.Route_write(this.ptr); return ret; diff --git a/src/main/java/org/ldk/structs/RouteHint.java b/src/main/java/org/ldk/structs/RouteHint.java index f543b75a..3b15b767 100644 --- a/src/main/java/org/ldk/structs/RouteHint.java +++ b/src/main/java/org/ldk/structs/RouteHint.java @@ -14,13 +14,6 @@ public class RouteHint extends CommonBase { if (ptr != 0) { bindings.RouteHint_free(ptr); } } - public RouteHint clone() { - long ret = bindings.RouteHint_clone(this.ptr); - RouteHint ret_hu_conv = new RouteHint(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_src_node_id() { byte[] ret = bindings.RouteHint_get_src_node_id(this.ptr); return ret; @@ -77,4 +70,11 @@ public class RouteHint extends CommonBase { return ret_hu_conv; } + public RouteHint clone() { + long ret = bindings.RouteHint_clone(this.ptr); + RouteHint ret_hu_conv = new RouteHint(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + } diff --git a/src/main/java/org/ldk/structs/RouteHop.java b/src/main/java/org/ldk/structs/RouteHop.java index ace10a9b..1e36ed59 100644 --- a/src/main/java/org/ldk/structs/RouteHop.java +++ b/src/main/java/org/ldk/structs/RouteHop.java @@ -14,13 +14,6 @@ public class RouteHop extends CommonBase { if (ptr != 0) { bindings.RouteHop_free(ptr); } } - public RouteHop clone() { - long ret = bindings.RouteHop_clone(this.ptr); - RouteHop ret_hu_conv = new RouteHop(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_pubkey() { byte[] ret = bindings.RouteHop_get_pubkey(this.ptr); return ret; @@ -40,14 +33,6 @@ public class RouteHop extends CommonBase { public void set_node_features(NodeFeatures val) { bindings.RouteHop_set_node_features(this.ptr, val == null ? 0 : val.ptr & ~1); this.ptrs_to.add(val); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, val is reset to null and is now a dummy object. - val.ptr = 0; } public long get_short_channel_id() { @@ -69,14 +54,6 @@ public class RouteHop extends CommonBase { public void set_channel_features(ChannelFeatures val) { bindings.RouteHop_set_channel_features(this.ptr, val == null ? 0 : val.ptr & ~1); this.ptrs_to.add(val); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, val is reset to null and is now a dummy object. - val.ptr = 0; } public long get_fee_msat() { @@ -102,23 +79,14 @@ public class RouteHop extends CommonBase { RouteHop ret_hu_conv = new RouteHop(null, ret); ret_hu_conv.ptrs_to.add(ret_hu_conv); ret_hu_conv.ptrs_to.add(node_features_arg); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid ret_hu_conv being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after ret_hu_conv call, node_features_arg is reset to null and is now a dummy object. - node_features_arg.ptr = 0; ret_hu_conv.ptrs_to.add(channel_features_arg); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid ret_hu_conv being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after ret_hu_conv call, channel_features_arg is reset to null and is now a dummy object. - channel_features_arg.ptr = 0; + return ret_hu_conv; + } + + public RouteHop clone() { + long ret = bindings.RouteHop_clone(this.ptr); + RouteHop ret_hu_conv = new RouteHop(null, ret); + ret_hu_conv.ptrs_to.add(this); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/RoutingFees.java b/src/main/java/org/ldk/structs/RoutingFees.java index c11990a3..da1c5c48 100644 --- a/src/main/java/org/ldk/structs/RoutingFees.java +++ b/src/main/java/org/ldk/structs/RoutingFees.java @@ -14,13 +14,6 @@ public class RoutingFees extends CommonBase { if (ptr != 0) { bindings.RoutingFees_free(ptr); } } - public RoutingFees clone() { - long ret = bindings.RoutingFees_clone(this.ptr); - RoutingFees ret_hu_conv = new RoutingFees(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public int get_base_msat() { int ret = bindings.RoutingFees_get_base_msat(this.ptr); return ret; @@ -46,6 +39,13 @@ public class RoutingFees extends CommonBase { return ret_hu_conv; } + public RoutingFees clone() { + long ret = bindings.RoutingFees_clone(this.ptr); + RoutingFees ret_hu_conv = new RoutingFees(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static Result_RoutingFeesDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.RoutingFees_read(ser); Result_RoutingFeesDecodeErrorZ ret_hu_conv = Result_RoutingFeesDecodeErrorZ.constr_from_ptr(ret); diff --git a/src/main/java/org/ldk/structs/Shutdown.java b/src/main/java/org/ldk/structs/Shutdown.java index 491939cd..ec11fcc0 100644 --- a/src/main/java/org/ldk/structs/Shutdown.java +++ b/src/main/java/org/ldk/structs/Shutdown.java @@ -14,13 +14,6 @@ public class Shutdown extends CommonBase { if (ptr != 0) { bindings.Shutdown_free(ptr); } } - public Shutdown clone() { - long ret = bindings.Shutdown_clone(this.ptr); - Shutdown ret_hu_conv = new Shutdown(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_channel_id() { byte[] ret = bindings.Shutdown_get_channel_id(this.ptr); return ret; @@ -46,15 +39,21 @@ public class Shutdown extends CommonBase { return ret_hu_conv; } + public Shutdown clone() { + long ret = bindings.Shutdown_clone(this.ptr); + Shutdown ret_hu_conv = new Shutdown(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.Shutdown_write(this.ptr); return ret; } - public static Shutdown constructor_read(byte[] ser) { + public static Result_ShutdownDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.Shutdown_read(ser); - Shutdown ret_hu_conv = new Shutdown(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_ShutdownDecodeErrorZ ret_hu_conv = Result_ShutdownDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/TxCreationKeys.java b/src/main/java/org/ldk/structs/TxCreationKeys.java index 05e70350..f063faad 100644 --- a/src/main/java/org/ldk/structs/TxCreationKeys.java +++ b/src/main/java/org/ldk/structs/TxCreationKeys.java @@ -14,13 +14,6 @@ public class TxCreationKeys extends CommonBase { if (ptr != 0) { bindings.TxCreationKeys_free(ptr); } } - public TxCreationKeys clone() { - long ret = bindings.TxCreationKeys_clone(this.ptr); - TxCreationKeys ret_hu_conv = new TxCreationKeys(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_per_commitment_point() { byte[] ret = bindings.TxCreationKeys_get_per_commitment_point(this.ptr); return ret; @@ -73,27 +66,33 @@ public class TxCreationKeys extends CommonBase { return ret_hu_conv; } + public TxCreationKeys clone() { + long ret = bindings.TxCreationKeys_clone(this.ptr); + TxCreationKeys ret_hu_conv = new TxCreationKeys(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.TxCreationKeys_write(this.ptr); return ret; } - public static TxCreationKeys constructor_read(byte[] ser) { + public static Result_TxCreationKeysDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.TxCreationKeys_read(ser); - TxCreationKeys ret_hu_conv = new TxCreationKeys(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_TxCreationKeysDecodeErrorZ ret_hu_conv = Result_TxCreationKeysDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } - public static Result_TxCreationKeysSecpErrorZ constructor_derive_new(byte[] per_commitment_point, byte[] broadcaster_delayed_payment_base, byte[] broadcaster_htlc_base, byte[] countersignatory_revocation_base, byte[] countersignatory_htlc_base) { + public static Result_TxCreationKeysErrorZ constructor_derive_new(byte[] per_commitment_point, byte[] broadcaster_delayed_payment_base, byte[] broadcaster_htlc_base, byte[] countersignatory_revocation_base, byte[] countersignatory_htlc_base) { long ret = bindings.TxCreationKeys_derive_new(per_commitment_point, broadcaster_delayed_payment_base, broadcaster_htlc_base, countersignatory_revocation_base, countersignatory_htlc_base); - Result_TxCreationKeysSecpErrorZ ret_hu_conv = Result_TxCreationKeysSecpErrorZ.constr_from_ptr(ret); + Result_TxCreationKeysErrorZ ret_hu_conv = Result_TxCreationKeysErrorZ.constr_from_ptr(ret); return ret_hu_conv; } - public static Result_TxCreationKeysSecpErrorZ constructor_from_channel_static_keys(byte[] per_commitment_point, ChannelPublicKeys broadcaster_keys, ChannelPublicKeys countersignatory_keys) { + public static Result_TxCreationKeysErrorZ constructor_from_channel_static_keys(byte[] per_commitment_point, ChannelPublicKeys broadcaster_keys, ChannelPublicKeys countersignatory_keys) { long ret = bindings.TxCreationKeys_from_channel_static_keys(per_commitment_point, broadcaster_keys == null ? 0 : broadcaster_keys.ptr & ~1, countersignatory_keys == null ? 0 : countersignatory_keys.ptr & ~1); - Result_TxCreationKeysSecpErrorZ ret_hu_conv = Result_TxCreationKeysSecpErrorZ.constr_from_ptr(ret); + Result_TxCreationKeysErrorZ ret_hu_conv = Result_TxCreationKeysErrorZ.constr_from_ptr(ret); ret_hu_conv.ptrs_to.add(broadcaster_keys); ret_hu_conv.ptrs_to.add(countersignatory_keys); return ret_hu_conv; diff --git a/src/main/java/org/ldk/structs/UnsignedChannelAnnouncement.java b/src/main/java/org/ldk/structs/UnsignedChannelAnnouncement.java index d4fa2aed..3404e76f 100644 --- a/src/main/java/org/ldk/structs/UnsignedChannelAnnouncement.java +++ b/src/main/java/org/ldk/structs/UnsignedChannelAnnouncement.java @@ -14,13 +14,6 @@ public class UnsignedChannelAnnouncement extends CommonBase { if (ptr != 0) { bindings.UnsignedChannelAnnouncement_free(ptr); } } - public UnsignedChannelAnnouncement clone() { - long ret = bindings.UnsignedChannelAnnouncement_clone(this.ptr); - UnsignedChannelAnnouncement ret_hu_conv = new UnsignedChannelAnnouncement(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public ChannelFeatures get_features() { long ret = bindings.UnsignedChannelAnnouncement_get_features(this.ptr); ChannelFeatures ret_hu_conv = new ChannelFeatures(null, ret); @@ -31,14 +24,6 @@ public class UnsignedChannelAnnouncement extends CommonBase { public void set_features(ChannelFeatures val) { bindings.UnsignedChannelAnnouncement_set_features(this.ptr, val == null ? 0 : val.ptr & ~1); this.ptrs_to.add(val); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, val is reset to null and is now a dummy object. - val.ptr = 0; } public byte[] get_chain_hash() { @@ -95,6 +80,13 @@ public class UnsignedChannelAnnouncement extends CommonBase { bindings.UnsignedChannelAnnouncement_set_bitcoin_key_2(this.ptr, val); } + public UnsignedChannelAnnouncement clone() { + long ret = bindings.UnsignedChannelAnnouncement_clone(this.ptr); + UnsignedChannelAnnouncement ret_hu_conv = new UnsignedChannelAnnouncement(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.UnsignedChannelAnnouncement_write(this.ptr); return ret; diff --git a/src/main/java/org/ldk/structs/UnsignedChannelUpdate.java b/src/main/java/org/ldk/structs/UnsignedChannelUpdate.java index 86ad7499..47a7687f 100644 --- a/src/main/java/org/ldk/structs/UnsignedChannelUpdate.java +++ b/src/main/java/org/ldk/structs/UnsignedChannelUpdate.java @@ -14,13 +14,6 @@ public class UnsignedChannelUpdate extends CommonBase { if (ptr != 0) { bindings.UnsignedChannelUpdate_free(ptr); } } - public UnsignedChannelUpdate clone() { - long ret = bindings.UnsignedChannelUpdate_clone(this.ptr); - UnsignedChannelUpdate ret_hu_conv = new UnsignedChannelUpdate(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_chain_hash() { byte[] ret = bindings.UnsignedChannelUpdate_get_chain_hash(this.ptr); return ret; @@ -93,6 +86,13 @@ public class UnsignedChannelUpdate extends CommonBase { bindings.UnsignedChannelUpdate_set_fee_proportional_millionths(this.ptr, val); } + public UnsignedChannelUpdate clone() { + long ret = bindings.UnsignedChannelUpdate_clone(this.ptr); + UnsignedChannelUpdate ret_hu_conv = new UnsignedChannelUpdate(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.UnsignedChannelUpdate_write(this.ptr); return ret; diff --git a/src/main/java/org/ldk/structs/UnsignedNodeAnnouncement.java b/src/main/java/org/ldk/structs/UnsignedNodeAnnouncement.java index 964315ca..94016eb9 100644 --- a/src/main/java/org/ldk/structs/UnsignedNodeAnnouncement.java +++ b/src/main/java/org/ldk/structs/UnsignedNodeAnnouncement.java @@ -14,13 +14,6 @@ public class UnsignedNodeAnnouncement extends CommonBase { if (ptr != 0) { bindings.UnsignedNodeAnnouncement_free(ptr); } } - public UnsignedNodeAnnouncement clone() { - long ret = bindings.UnsignedNodeAnnouncement_clone(this.ptr); - UnsignedNodeAnnouncement ret_hu_conv = new UnsignedNodeAnnouncement(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public NodeFeatures get_features() { long ret = bindings.UnsignedNodeAnnouncement_get_features(this.ptr); NodeFeatures ret_hu_conv = new NodeFeatures(null, ret); @@ -31,14 +24,6 @@ public class UnsignedNodeAnnouncement extends CommonBase { public void set_features(NodeFeatures val) { bindings.UnsignedNodeAnnouncement_set_features(this.ptr, val == null ? 0 : val.ptr & ~1); this.ptrs_to.add(val); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, val is reset to null and is now a dummy object. - val.ptr = 0; } public int get_timestamp() { @@ -82,6 +67,13 @@ public class UnsignedNodeAnnouncement extends CommonBase { /* TODO 2 NetAddress */; } + public UnsignedNodeAnnouncement clone() { + long ret = bindings.UnsignedNodeAnnouncement_clone(this.ptr); + UnsignedNodeAnnouncement ret_hu_conv = new UnsignedNodeAnnouncement(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.UnsignedNodeAnnouncement_write(this.ptr); return ret; diff --git a/src/main/java/org/ldk/structs/UpdateAddHTLC.java b/src/main/java/org/ldk/structs/UpdateAddHTLC.java index 3f6643ce..6e4afd24 100644 --- a/src/main/java/org/ldk/structs/UpdateAddHTLC.java +++ b/src/main/java/org/ldk/structs/UpdateAddHTLC.java @@ -14,13 +14,6 @@ public class UpdateAddHTLC extends CommonBase { if (ptr != 0) { bindings.UpdateAddHTLC_free(ptr); } } - public UpdateAddHTLC clone() { - long ret = bindings.UpdateAddHTLC_clone(this.ptr); - UpdateAddHTLC ret_hu_conv = new UpdateAddHTLC(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_channel_id() { byte[] ret = bindings.UpdateAddHTLC_get_channel_id(this.ptr); return ret; @@ -66,15 +59,21 @@ public class UpdateAddHTLC extends CommonBase { bindings.UpdateAddHTLC_set_cltv_expiry(this.ptr, val); } + public UpdateAddHTLC clone() { + long ret = bindings.UpdateAddHTLC_clone(this.ptr); + UpdateAddHTLC ret_hu_conv = new UpdateAddHTLC(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.UpdateAddHTLC_write(this.ptr); return ret; } - public static UpdateAddHTLC constructor_read(byte[] ser) { + public static Result_UpdateAddHTLCDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.UpdateAddHTLC_read(ser); - UpdateAddHTLC ret_hu_conv = new UpdateAddHTLC(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_UpdateAddHTLCDecodeErrorZ ret_hu_conv = Result_UpdateAddHTLCDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/UpdateFailHTLC.java b/src/main/java/org/ldk/structs/UpdateFailHTLC.java index b341d282..35566615 100644 --- a/src/main/java/org/ldk/structs/UpdateFailHTLC.java +++ b/src/main/java/org/ldk/structs/UpdateFailHTLC.java @@ -14,13 +14,6 @@ public class UpdateFailHTLC extends CommonBase { if (ptr != 0) { bindings.UpdateFailHTLC_free(ptr); } } - public UpdateFailHTLC clone() { - long ret = bindings.UpdateFailHTLC_clone(this.ptr); - UpdateFailHTLC ret_hu_conv = new UpdateFailHTLC(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_channel_id() { byte[] ret = bindings.UpdateFailHTLC_get_channel_id(this.ptr); return ret; @@ -39,15 +32,21 @@ public class UpdateFailHTLC extends CommonBase { bindings.UpdateFailHTLC_set_htlc_id(this.ptr, val); } + public UpdateFailHTLC clone() { + long ret = bindings.UpdateFailHTLC_clone(this.ptr); + UpdateFailHTLC ret_hu_conv = new UpdateFailHTLC(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.UpdateFailHTLC_write(this.ptr); return ret; } - public static UpdateFailHTLC constructor_read(byte[] ser) { + public static Result_UpdateFailHTLCDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.UpdateFailHTLC_read(ser); - UpdateFailHTLC ret_hu_conv = new UpdateFailHTLC(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_UpdateFailHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailHTLCDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/UpdateFailMalformedHTLC.java b/src/main/java/org/ldk/structs/UpdateFailMalformedHTLC.java index 69e17531..0b28fc68 100644 --- a/src/main/java/org/ldk/structs/UpdateFailMalformedHTLC.java +++ b/src/main/java/org/ldk/structs/UpdateFailMalformedHTLC.java @@ -14,13 +14,6 @@ public class UpdateFailMalformedHTLC extends CommonBase { if (ptr != 0) { bindings.UpdateFailMalformedHTLC_free(ptr); } } - public UpdateFailMalformedHTLC clone() { - long ret = bindings.UpdateFailMalformedHTLC_clone(this.ptr); - UpdateFailMalformedHTLC ret_hu_conv = new UpdateFailMalformedHTLC(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_channel_id() { byte[] ret = bindings.UpdateFailMalformedHTLC_get_channel_id(this.ptr); return ret; @@ -48,15 +41,21 @@ public class UpdateFailMalformedHTLC extends CommonBase { bindings.UpdateFailMalformedHTLC_set_failure_code(this.ptr, val); } + public UpdateFailMalformedHTLC clone() { + long ret = bindings.UpdateFailMalformedHTLC_clone(this.ptr); + UpdateFailMalformedHTLC ret_hu_conv = new UpdateFailMalformedHTLC(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.UpdateFailMalformedHTLC_write(this.ptr); return ret; } - public static UpdateFailMalformedHTLC constructor_read(byte[] ser) { + public static Result_UpdateFailMalformedHTLCDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.UpdateFailMalformedHTLC_read(ser); - UpdateFailMalformedHTLC ret_hu_conv = new UpdateFailMalformedHTLC(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_UpdateFailMalformedHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailMalformedHTLCDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/UpdateFee.java b/src/main/java/org/ldk/structs/UpdateFee.java index a939f3f1..fa186fb4 100644 --- a/src/main/java/org/ldk/structs/UpdateFee.java +++ b/src/main/java/org/ldk/structs/UpdateFee.java @@ -14,13 +14,6 @@ public class UpdateFee extends CommonBase { if (ptr != 0) { bindings.UpdateFee_free(ptr); } } - public UpdateFee clone() { - long ret = bindings.UpdateFee_clone(this.ptr); - UpdateFee ret_hu_conv = new UpdateFee(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_channel_id() { byte[] ret = bindings.UpdateFee_get_channel_id(this.ptr); return ret; @@ -46,15 +39,21 @@ public class UpdateFee extends CommonBase { return ret_hu_conv; } + public UpdateFee clone() { + long ret = bindings.UpdateFee_clone(this.ptr); + UpdateFee ret_hu_conv = new UpdateFee(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.UpdateFee_write(this.ptr); return ret; } - public static UpdateFee constructor_read(byte[] ser) { + public static Result_UpdateFeeDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.UpdateFee_read(ser); - UpdateFee ret_hu_conv = new UpdateFee(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_UpdateFeeDecodeErrorZ ret_hu_conv = Result_UpdateFeeDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/UpdateFulfillHTLC.java b/src/main/java/org/ldk/structs/UpdateFulfillHTLC.java index e31af1b6..966392bd 100644 --- a/src/main/java/org/ldk/structs/UpdateFulfillHTLC.java +++ b/src/main/java/org/ldk/structs/UpdateFulfillHTLC.java @@ -14,13 +14,6 @@ public class UpdateFulfillHTLC extends CommonBase { if (ptr != 0) { bindings.UpdateFulfillHTLC_free(ptr); } } - public UpdateFulfillHTLC clone() { - long ret = bindings.UpdateFulfillHTLC_clone(this.ptr); - UpdateFulfillHTLC ret_hu_conv = new UpdateFulfillHTLC(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public byte[] get_channel_id() { byte[] ret = bindings.UpdateFulfillHTLC_get_channel_id(this.ptr); return ret; @@ -55,15 +48,21 @@ public class UpdateFulfillHTLC extends CommonBase { return ret_hu_conv; } + public UpdateFulfillHTLC clone() { + long ret = bindings.UpdateFulfillHTLC_clone(this.ptr); + UpdateFulfillHTLC ret_hu_conv = new UpdateFulfillHTLC(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.UpdateFulfillHTLC_write(this.ptr); return ret; } - public static UpdateFulfillHTLC constructor_read(byte[] ser) { + public static Result_UpdateFulfillHTLCDecodeErrorZ constructor_read(byte[] ser) { long ret = bindings.UpdateFulfillHTLC_read(ser); - UpdateFulfillHTLC ret_hu_conv = new UpdateFulfillHTLC(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_UpdateFulfillHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFulfillHTLCDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/src/main/java/org/ldk/structs/UserConfig.java b/src/main/java/org/ldk/structs/UserConfig.java index ccf01fef..5629008e 100644 --- a/src/main/java/org/ldk/structs/UserConfig.java +++ b/src/main/java/org/ldk/structs/UserConfig.java @@ -14,13 +14,6 @@ public class UserConfig extends CommonBase { if (ptr != 0) { bindings.UserConfig_free(ptr); } } - public UserConfig clone() { - long ret = bindings.UserConfig_clone(this.ptr); - UserConfig ret_hu_conv = new UserConfig(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public ChannelHandshakeConfig get_own_channel_config() { long ret = bindings.UserConfig_get_own_channel_config(this.ptr); ChannelHandshakeConfig ret_hu_conv = new ChannelHandshakeConfig(null, ret); @@ -67,6 +60,13 @@ public class UserConfig extends CommonBase { return ret_hu_conv; } + public UserConfig clone() { + long ret = bindings.UserConfig_clone(this.ptr); + UserConfig ret_hu_conv = new UserConfig(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static UserConfig constructor_default() { long ret = bindings.UserConfig_default(); UserConfig ret_hu_conv = new UserConfig(null, ret); diff --git a/src/main/jni/bindings.c b/src/main/jni/bindings.c index 4de0f334..9cfa668a 100644 --- a/src/main/jni/bindings.c +++ b/src/main/jni/bindings.c @@ -112,15 +112,15 @@ static inline jstring str_ref_to_java(JNIEnv *env, const char* chars, size_t len FREE(err_buf); return err_conv; } -static jclass arr_of_B_clz = NULL; static jclass arr_of_J_clz = NULL; +static jclass arr_of_B_clz = NULL; JNIEXPORT void Java_org_ldk_impl_bindings_init_1class_1cache(JNIEnv * env, jclass clz) { - arr_of_B_clz = (*env)->FindClass(env, "[B"); - CHECK(arr_of_B_clz != NULL); - arr_of_B_clz = (*env)->NewGlobalRef(env, arr_of_B_clz); arr_of_J_clz = (*env)->FindClass(env, "[J"); CHECK(arr_of_J_clz != NULL); arr_of_J_clz = (*env)->NewGlobalRef(env, arr_of_J_clz); + arr_of_B_clz = (*env)->FindClass(env, "[B"); + CHECK(arr_of_B_clz != NULL); + arr_of_B_clz = (*env)->NewGlobalRef(env, arr_of_B_clz); } static inline struct LDKThirtyTwoBytes ThirtyTwoBytes_clone(const struct LDKThirtyTwoBytes *orig) { struct LDKThirtyTwoBytes ret; memcpy(ret.data, orig->data, 32); return ret; } static inline LDKAccessError LDKAccessError_from_java(JNIEnv *env, jclass clz) { @@ -389,234 +389,659 @@ static inline LDKCVec_u8Z CVec_u8Z_clone(const LDKCVec_u8Z *orig) { memcpy(ret.data, orig->data, sizeof(int8_t) * ret.datalen); return ret; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u64u64Z_1new(JNIEnv *env, jclass clz, int64_t a, int64_t b) { - LDKC2Tuple_u64u64Z* ret = MALLOC(sizeof(LDKC2Tuple_u64u64Z), "LDKC2Tuple_u64u64Z"); - ret->a = a; - ret->b = b; - return (long)ret; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SecretKeyErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_SecretKeyErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u64u64Z_1get_1a(JNIEnv *env, jclass clz, int64_t ptr) { - LDKC2Tuple_u64u64Z *tuple = (LDKC2Tuple_u64u64Z*)(ptr & ~1); - return tuple->a; +JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SecretKeyErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_SecretKeyErrorZ *val = (LDKCResult_SecretKeyErrorZ*)(arg & ~1); + CHECK(val->result_ok); + int8_tArray res_arr = (*env)->NewByteArray(env, 32); + (*env)->SetByteArrayRegion(env, res_arr, 0, 32, (*val->contents.result).bytes); + return res_arr; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u64u64Z_1get_1b(JNIEnv *env, jclass clz, int64_t ptr) { - LDKC2Tuple_u64u64Z *tuple = (LDKC2Tuple_u64u64Z*)(ptr & ~1); - return tuple->b; +JNIEXPORT jclass JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SecretKeyErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_SecretKeyErrorZ *val = (LDKCResult_SecretKeyErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + jclass err_conv = LDKSecp256k1Error_to_java(env, (*val->contents.err)); + return err_conv; } -static jclass LDKSpendableOutputDescriptor_StaticOutput_class = NULL; -static jmethodID LDKSpendableOutputDescriptor_StaticOutput_meth = NULL; -static jclass LDKSpendableOutputDescriptor_DynamicOutputP2WSH_class = NULL; -static jmethodID LDKSpendableOutputDescriptor_DynamicOutputP2WSH_meth = NULL; -static jclass LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_class = NULL; -static jmethodID LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_meth = NULL; -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_00024LDKSpendableOutputDescriptor_init (JNIEnv *env, jclass clz) { - LDKSpendableOutputDescriptor_StaticOutput_class = - (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKSpendableOutputDescriptor$StaticOutput;")); - CHECK(LDKSpendableOutputDescriptor_StaticOutput_class != NULL); - LDKSpendableOutputDescriptor_StaticOutput_meth = (*env)->GetMethodID(env, LDKSpendableOutputDescriptor_StaticOutput_class, "", "(JJ)V"); - CHECK(LDKSpendableOutputDescriptor_StaticOutput_meth != NULL); - LDKSpendableOutputDescriptor_DynamicOutputP2WSH_class = - (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKSpendableOutputDescriptor$DynamicOutputP2WSH;")); - CHECK(LDKSpendableOutputDescriptor_DynamicOutputP2WSH_class != NULL); - LDKSpendableOutputDescriptor_DynamicOutputP2WSH_meth = (*env)->GetMethodID(env, LDKSpendableOutputDescriptor_DynamicOutputP2WSH_class, "", "(J[BSJJ[B)V"); - CHECK(LDKSpendableOutputDescriptor_DynamicOutputP2WSH_meth != NULL); - LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_class = - (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKSpendableOutputDescriptor$StaticOutputCounterpartyPayment;")); - CHECK(LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_class != NULL); - LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_meth = (*env)->GetMethodID(env, LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_class, "", "(JJJ)V"); - CHECK(LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_meth != NULL); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PublicKeyErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_PublicKeyErrorZ*)arg)->result_ok; } -JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKSpendableOutputDescriptor_1ref_1from_1ptr(JNIEnv *env, jclass clz, int64_t ptr) { - LDKSpendableOutputDescriptor *obj = (LDKSpendableOutputDescriptor*)ptr; - switch(obj->tag) { - case LDKSpendableOutputDescriptor_StaticOutput: { - LDKOutPoint outpoint_var = obj->static_output.outpoint; - CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long outpoint_ref = (long)outpoint_var.inner & ~1; - long output_ref = ((long)&obj->static_output.output) | 1; - return (*env)->NewObject(env, LDKSpendableOutputDescriptor_StaticOutput_class, LDKSpendableOutputDescriptor_StaticOutput_meth, outpoint_ref, (long)output_ref); - } - case LDKSpendableOutputDescriptor_DynamicOutputP2WSH: { - LDKOutPoint outpoint_var = obj->dynamic_output_p2wsh.outpoint; - CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long outpoint_ref = (long)outpoint_var.inner & ~1; - int8_tArray per_commitment_point_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, per_commitment_point_arr, 0, 33, obj->dynamic_output_p2wsh.per_commitment_point.compressed_form); - long output_ref = ((long)&obj->dynamic_output_p2wsh.output) | 1; - long key_derivation_params_ref = (long)(&obj->dynamic_output_p2wsh.key_derivation_params) | 1; - int8_tArray revocation_pubkey_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, revocation_pubkey_arr, 0, 33, obj->dynamic_output_p2wsh.revocation_pubkey.compressed_form); - return (*env)->NewObject(env, LDKSpendableOutputDescriptor_DynamicOutputP2WSH_class, LDKSpendableOutputDescriptor_DynamicOutputP2WSH_meth, outpoint_ref, per_commitment_point_arr, obj->dynamic_output_p2wsh.to_self_delay, (long)output_ref, key_derivation_params_ref, revocation_pubkey_arr); - } - case LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment: { - LDKOutPoint outpoint_var = obj->static_output_counterparty_payment.outpoint; - CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long outpoint_ref = (long)outpoint_var.inner & ~1; - long output_ref = ((long)&obj->static_output_counterparty_payment.output) | 1; - long key_derivation_params_ref = (long)(&obj->static_output_counterparty_payment.key_derivation_params) | 1; - return (*env)->NewObject(env, LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_class, LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_meth, outpoint_ref, (long)output_ref, key_derivation_params_ref); - } - default: abort(); - } +JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PublicKeyErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_PublicKeyErrorZ *val = (LDKCResult_PublicKeyErrorZ*)(arg & ~1); + CHECK(val->result_ok); + int8_tArray res_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, res_arr, 0, 33, (*val->contents.result).compressed_form); + return res_arr; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1SpendableOutputDescriptorZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { - LDKCVec_SpendableOutputDescriptorZ *ret = MALLOC(sizeof(LDKCVec_SpendableOutputDescriptorZ), "LDKCVec_SpendableOutputDescriptorZ"); - ret->datalen = (*env)->GetArrayLength(env, elems); - if (ret->datalen == 0) { - ret->data = NULL; - } else { - ret->data = MALLOC(sizeof(LDKSpendableOutputDescriptor) * ret->datalen, "LDKCVec_SpendableOutputDescriptorZ Data"); - int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); - for (size_t i = 0; i < ret->datalen; i++) { - int64_t arr_elem = java_elems[i]; - LDKSpendableOutputDescriptor arr_elem_conv = *(LDKSpendableOutputDescriptor*)(((uint64_t)arr_elem) & ~1); - FREE((void*)arr_elem); - ret->data[i] = arr_elem_conv; - } - (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); - } - return (long)ret; +JNIEXPORT jclass JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PublicKeyErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_PublicKeyErrorZ *val = (LDKCResult_PublicKeyErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + jclass err_conv = LDKSecp256k1Error_to_java(env, (*val->contents.err)); + return err_conv; } -static inline LDKCVec_SpendableOutputDescriptorZ CVec_SpendableOutputDescriptorZ_clone(const LDKCVec_SpendableOutputDescriptorZ *orig) { - LDKCVec_SpendableOutputDescriptorZ ret = { .data = MALLOC(sizeof(LDKSpendableOutputDescriptor) * orig->datalen, "LDKCVec_SpendableOutputDescriptorZ clone bytes"), .datalen = orig->datalen }; - for (size_t i = 0; i < ret.datalen; i++) { - ret.data[i] = SpendableOutputDescriptor_clone(&orig->data[i]); - } - return ret; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_TxCreationKeysDecodeErrorZ*)arg)->result_ok; } -static jclass LDKErrorAction_DisconnectPeer_class = NULL; -static jmethodID LDKErrorAction_DisconnectPeer_meth = NULL; -static jclass LDKErrorAction_IgnoreError_class = NULL; -static jmethodID LDKErrorAction_IgnoreError_meth = NULL; -static jclass LDKErrorAction_SendErrorMessage_class = NULL; -static jmethodID LDKErrorAction_SendErrorMessage_meth = NULL; -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_00024LDKErrorAction_init (JNIEnv *env, jclass clz) { - LDKErrorAction_DisconnectPeer_class = - (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKErrorAction$DisconnectPeer;")); - CHECK(LDKErrorAction_DisconnectPeer_class != NULL); - LDKErrorAction_DisconnectPeer_meth = (*env)->GetMethodID(env, LDKErrorAction_DisconnectPeer_class, "", "(J)V"); - CHECK(LDKErrorAction_DisconnectPeer_meth != NULL); - LDKErrorAction_IgnoreError_class = - (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKErrorAction$IgnoreError;")); - CHECK(LDKErrorAction_IgnoreError_class != NULL); - LDKErrorAction_IgnoreError_meth = (*env)->GetMethodID(env, LDKErrorAction_IgnoreError_class, "", "()V"); - CHECK(LDKErrorAction_IgnoreError_meth != NULL); - LDKErrorAction_SendErrorMessage_class = - (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKErrorAction$SendErrorMessage;")); - CHECK(LDKErrorAction_SendErrorMessage_class != NULL); - LDKErrorAction_SendErrorMessage_meth = (*env)->GetMethodID(env, LDKErrorAction_SendErrorMessage_class, "", "(J)V"); - CHECK(LDKErrorAction_SendErrorMessage_meth != NULL); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_TxCreationKeysDecodeErrorZ *val = (LDKCResult_TxCreationKeysDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKTxCreationKeys res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKErrorAction_1ref_1from_1ptr(JNIEnv *env, jclass clz, int64_t ptr) { - LDKErrorAction *obj = (LDKErrorAction*)ptr; - switch(obj->tag) { - case LDKErrorAction_DisconnectPeer: { - LDKErrorMessage msg_var = obj->disconnect_peer.msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner & ~1; - return (*env)->NewObject(env, LDKErrorAction_DisconnectPeer_class, LDKErrorAction_DisconnectPeer_meth, msg_ref); - } - case LDKErrorAction_IgnoreError: { - return (*env)->NewObject(env, LDKErrorAction_IgnoreError_class, LDKErrorAction_IgnoreError_meth); - } - case LDKErrorAction_SendErrorMessage: { - LDKErrorMessage msg_var = obj->send_error_message.msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner & ~1; - return (*env)->NewObject(env, LDKErrorAction_SendErrorMessage_class, LDKErrorAction_SendErrorMessage_meth, msg_ref); - } - default: abort(); - } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_TxCreationKeysDecodeErrorZ *val = (LDKCResult_TxCreationKeysDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; } -static jclass LDKHTLCFailChannelUpdate_ChannelUpdateMessage_class = NULL; -static jmethodID LDKHTLCFailChannelUpdate_ChannelUpdateMessage_meth = NULL; -static jclass LDKHTLCFailChannelUpdate_ChannelClosed_class = NULL; -static jmethodID LDKHTLCFailChannelUpdate_ChannelClosed_meth = NULL; -static jclass LDKHTLCFailChannelUpdate_NodeFailure_class = NULL; -static jmethodID LDKHTLCFailChannelUpdate_NodeFailure_meth = NULL; -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_00024LDKHTLCFailChannelUpdate_init (JNIEnv *env, jclass clz) { - LDKHTLCFailChannelUpdate_ChannelUpdateMessage_class = - (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKHTLCFailChannelUpdate$ChannelUpdateMessage;")); - CHECK(LDKHTLCFailChannelUpdate_ChannelUpdateMessage_class != NULL); - LDKHTLCFailChannelUpdate_ChannelUpdateMessage_meth = (*env)->GetMethodID(env, LDKHTLCFailChannelUpdate_ChannelUpdateMessage_class, "", "(J)V"); - CHECK(LDKHTLCFailChannelUpdate_ChannelUpdateMessage_meth != NULL); - LDKHTLCFailChannelUpdate_ChannelClosed_class = - (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKHTLCFailChannelUpdate$ChannelClosed;")); - CHECK(LDKHTLCFailChannelUpdate_ChannelClosed_class != NULL); - LDKHTLCFailChannelUpdate_ChannelClosed_meth = (*env)->GetMethodID(env, LDKHTLCFailChannelUpdate_ChannelClosed_class, "", "(JZ)V"); - CHECK(LDKHTLCFailChannelUpdate_ChannelClosed_meth != NULL); - LDKHTLCFailChannelUpdate_NodeFailure_class = - (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKHTLCFailChannelUpdate$NodeFailure;")); - CHECK(LDKHTLCFailChannelUpdate_NodeFailure_class != NULL); - LDKHTLCFailChannelUpdate_NodeFailure_meth = (*env)->GetMethodID(env, LDKHTLCFailChannelUpdate_NodeFailure_class, "", "([BZ)V"); - CHECK(LDKHTLCFailChannelUpdate_NodeFailure_meth != NULL); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelPublicKeysDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_ChannelPublicKeysDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKHTLCFailChannelUpdate_1ref_1from_1ptr(JNIEnv *env, jclass clz, int64_t ptr) { - LDKHTLCFailChannelUpdate *obj = (LDKHTLCFailChannelUpdate*)ptr; - switch(obj->tag) { - case LDKHTLCFailChannelUpdate_ChannelUpdateMessage: { - LDKChannelUpdate msg_var = obj->channel_update_message.msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner & ~1; - return (*env)->NewObject(env, LDKHTLCFailChannelUpdate_ChannelUpdateMessage_class, LDKHTLCFailChannelUpdate_ChannelUpdateMessage_meth, msg_ref); - } - case LDKHTLCFailChannelUpdate_ChannelClosed: { - return (*env)->NewObject(env, LDKHTLCFailChannelUpdate_ChannelClosed_class, LDKHTLCFailChannelUpdate_ChannelClosed_meth, obj->channel_closed.short_channel_id, obj->channel_closed.is_permanent); - } - case LDKHTLCFailChannelUpdate_NodeFailure: { - int8_tArray node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, node_id_arr, 0, 33, obj->node_failure.node_id.compressed_form); - return (*env)->NewObject(env, LDKHTLCFailChannelUpdate_NodeFailure_class, LDKHTLCFailChannelUpdate_NodeFailure_meth, node_id_arr, obj->node_failure.is_permanent); - } - default: abort(); - } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelPublicKeysDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelPublicKeysDecodeErrorZ *val = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKChannelPublicKeys res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -static jclass LDKMessageSendEvent_SendAcceptChannel_class = NULL; -static jmethodID LDKMessageSendEvent_SendAcceptChannel_meth = NULL; -static jclass LDKMessageSendEvent_SendOpenChannel_class = NULL; -static jmethodID LDKMessageSendEvent_SendOpenChannel_meth = NULL; -static jclass LDKMessageSendEvent_SendFundingCreated_class = NULL; -static jmethodID LDKMessageSendEvent_SendFundingCreated_meth = NULL; -static jclass LDKMessageSendEvent_SendFundingSigned_class = NULL; -static jmethodID LDKMessageSendEvent_SendFundingSigned_meth = NULL; -static jclass LDKMessageSendEvent_SendFundingLocked_class = NULL; -static jmethodID LDKMessageSendEvent_SendFundingLocked_meth = NULL; -static jclass LDKMessageSendEvent_SendAnnouncementSignatures_class = NULL; -static jmethodID LDKMessageSendEvent_SendAnnouncementSignatures_meth = NULL; -static jclass LDKMessageSendEvent_UpdateHTLCs_class = NULL; -static jmethodID LDKMessageSendEvent_UpdateHTLCs_meth = NULL; -static jclass LDKMessageSendEvent_SendRevokeAndACK_class = NULL; -static jmethodID LDKMessageSendEvent_SendRevokeAndACK_meth = NULL; -static jclass LDKMessageSendEvent_SendClosingSigned_class = NULL; -static jmethodID LDKMessageSendEvent_SendClosingSigned_meth = NULL; -static jclass LDKMessageSendEvent_SendShutdown_class = NULL; -static jmethodID LDKMessageSendEvent_SendShutdown_meth = NULL; -static jclass LDKMessageSendEvent_SendChannelReestablish_class = NULL; -static jmethodID LDKMessageSendEvent_SendChannelReestablish_meth = NULL; -static jclass LDKMessageSendEvent_BroadcastChannelAnnouncement_class = NULL; -static jmethodID LDKMessageSendEvent_BroadcastChannelAnnouncement_meth = NULL; -static jclass LDKMessageSendEvent_BroadcastNodeAnnouncement_class = NULL; -static jmethodID LDKMessageSendEvent_BroadcastNodeAnnouncement_meth = NULL; -static jclass LDKMessageSendEvent_BroadcastChannelUpdate_class = NULL; -static jmethodID LDKMessageSendEvent_BroadcastChannelUpdate_meth = NULL; -static jclass LDKMessageSendEvent_HandleError_class = NULL; -static jmethodID LDKMessageSendEvent_HandleError_meth = NULL; -static jclass LDKMessageSendEvent_PaymentFailureNetworkUpdate_class = NULL; -static jmethodID LDKMessageSendEvent_PaymentFailureNetworkUpdate_meth = NULL; -static jclass LDKMessageSendEvent_SendChannelRangeQuery_class = NULL; -static jmethodID LDKMessageSendEvent_SendChannelRangeQuery_meth = NULL; -static jclass LDKMessageSendEvent_SendShortIdsQuery_class = NULL; -static jmethodID LDKMessageSendEvent_SendShortIdsQuery_meth = NULL; -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_00024LDKMessageSendEvent_init (JNIEnv *env, jclass clz) { - LDKMessageSendEvent_SendAcceptChannel_class = - (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKMessageSendEvent$SendAcceptChannel;")); - CHECK(LDKMessageSendEvent_SendAcceptChannel_class != NULL); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelPublicKeysDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelPublicKeysDecodeErrorZ *val = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_TxCreationKeysErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_TxCreationKeysErrorZ *val = (LDKCResult_TxCreationKeysErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKTxCreationKeys res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT jclass JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_TxCreationKeysErrorZ *val = (LDKCResult_TxCreationKeysErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + jclass err_conv = LDKSecp256k1Error_to_java(env, (*val->contents.err)); + return err_conv; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HTLCOutputInCommitmentDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HTLCOutputInCommitmentDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *val = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKHTLCOutputInCommitment res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HTLCOutputInCommitmentDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *val = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CounterpartyChannelTransactionParametersDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CounterpartyChannelTransactionParametersDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *val = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKCounterpartyChannelTransactionParameters res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CounterpartyChannelTransactionParametersDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *val = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelTransactionParametersDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_ChannelTransactionParametersDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelTransactionParametersDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelTransactionParametersDecodeErrorZ *val = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKChannelTransactionParameters res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelTransactionParametersDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelTransactionParametersDecodeErrorZ *val = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HolderCommitmentTransactionDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HolderCommitmentTransactionDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_HolderCommitmentTransactionDecodeErrorZ *val = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKHolderCommitmentTransaction res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HolderCommitmentTransactionDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_HolderCommitmentTransactionDecodeErrorZ *val = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1BuiltCommitmentTransactionDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1BuiltCommitmentTransactionDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *val = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKBuiltCommitmentTransaction res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1BuiltCommitmentTransactionDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *val = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CommitmentTransactionDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_CommitmentTransactionDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CommitmentTransactionDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_CommitmentTransactionDecodeErrorZ *val = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKCommitmentTransaction res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CommitmentTransactionDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_CommitmentTransactionDecodeErrorZ *val = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TrustedCommitmentTransactionNoneZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_TrustedCommitmentTransactionNoneZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TrustedCommitmentTransactionNoneZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_TrustedCommitmentTransactionNoneZ *val = (LDKCResult_TrustedCommitmentTransactionNoneZ*)(arg & ~1); + CHECK(val->result_ok); + LDKTrustedCommitmentTransaction res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TrustedCommitmentTransactionNoneZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_TrustedCommitmentTransactionNoneZ *val = (LDKCResult_TrustedCommitmentTransactionNoneZ*)(arg & ~1); + CHECK(!val->result_ok); + return *val->contents.err; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1SignatureZNoneZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_CVec_SignatureZNoneZ*)arg)->result_ok; +} +JNIEXPORT jobjectArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1SignatureZNoneZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_CVec_SignatureZNoneZ *val = (LDKCResult_CVec_SignatureZNoneZ*)(arg & ~1); + CHECK(val->result_ok); + LDKCVec_SignatureZ res_var = (*val->contents.result); + jobjectArray res_arr = (*env)->NewObjectArray(env, res_var.datalen, arr_of_B_clz, NULL); + ; + for (size_t i = 0; i < res_var.datalen; i++) { + int8_tArray arr_conv_8_arr = (*env)->NewByteArray(env, 64); + (*env)->SetByteArrayRegion(env, arr_conv_8_arr, 0, 64, res_var.data[i].compact_form); + (*env)->SetObjectArrayElement(env, res_arr, i, arr_conv_8_arr); + } + return res_arr; +} +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1SignatureZNoneZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_CVec_SignatureZNoneZ *val = (LDKCResult_CVec_SignatureZNoneZ*)(arg & ~1); + CHECK(!val->result_ok); + return *val->contents.err; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1u8ZPeerHandleErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_CVec_u8ZPeerHandleErrorZ*)arg)->result_ok; +} +JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1u8ZPeerHandleErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_CVec_u8ZPeerHandleErrorZ *val = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKCVec_u8Z res_var = (*val->contents.result); + int8_tArray res_arr = (*env)->NewByteArray(env, res_var.datalen); + (*env)->SetByteArrayRegion(env, res_arr, 0, res_var.datalen, res_var.data); + return res_arr; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1u8ZPeerHandleErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_CVec_u8ZPeerHandleErrorZ *val = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKPeerHandleError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePeerHandleErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_NonePeerHandleErrorZ*)arg)->result_ok; +} +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePeerHandleErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_NonePeerHandleErrorZ *val = (LDKCResult_NonePeerHandleErrorZ*)(arg & ~1); + CHECK(val->result_ok); + return *val->contents.result; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePeerHandleErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_NonePeerHandleErrorZ *val = (LDKCResult_NonePeerHandleErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKPeerHandleError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolPeerHandleErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_boolPeerHandleErrorZ*)arg)->result_ok; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolPeerHandleErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_boolPeerHandleErrorZ *val = (LDKCResult_boolPeerHandleErrorZ*)(arg & ~1); + CHECK(val->result_ok); + return *val->contents.result; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolPeerHandleErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_boolPeerHandleErrorZ *val = (LDKCResult_boolPeerHandleErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKPeerHandleError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InitFeaturesDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_InitFeaturesDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InitFeaturesDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_InitFeaturesDecodeErrorZ *val = (LDKCResult_InitFeaturesDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKInitFeatures res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InitFeaturesDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_InitFeaturesDecodeErrorZ *val = (LDKCResult_InitFeaturesDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeFeaturesDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_NodeFeaturesDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeFeaturesDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_NodeFeaturesDecodeErrorZ *val = (LDKCResult_NodeFeaturesDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKNodeFeatures res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeFeaturesDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_NodeFeaturesDecodeErrorZ *val = (LDKCResult_NodeFeaturesDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelFeaturesDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_ChannelFeaturesDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelFeaturesDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelFeaturesDecodeErrorZ *val = (LDKCResult_ChannelFeaturesDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKChannelFeatures res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelFeaturesDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelFeaturesDecodeErrorZ *val = (LDKCResult_ChannelFeaturesDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelConfigDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_ChannelConfigDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelConfigDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelConfigDecodeErrorZ *val = (LDKCResult_ChannelConfigDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKChannelConfig res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelConfigDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelConfigDecodeErrorZ *val = (LDKCResult_ChannelConfigDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolLightningErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_boolLightningErrorZ*)arg)->result_ok; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolLightningErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_boolLightningErrorZ *val = (LDKCResult_boolLightningErrorZ*)(arg & ~1); + CHECK(val->result_ok); + return *val->contents.result; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolLightningErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_boolLightningErrorZ *val = (LDKCResult_boolLightningErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKLightningError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1new(JNIEnv *env, jclass clz, int64_t a, int64_t b, int64_t c) { + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ"); + LDKChannelAnnouncement a_conv; + a_conv.inner = (void*)(a & (~1)); + a_conv.is_owned = (a & 1) || (a == 0); + a_conv = ChannelAnnouncement_clone(&a_conv); + ret->a = a_conv; + LDKChannelUpdate b_conv; + b_conv.inner = (void*)(b & (~1)); + b_conv.is_owned = (b & 1) || (b == 0); + b_conv = ChannelUpdate_clone(&b_conv); + ret->b = b_conv; + LDKChannelUpdate c_conv; + c_conv.inner = (void*)(c & (~1)); + c_conv.is_owned = (c & 1) || (c == 0); + c_conv = ChannelUpdate_clone(&c_conv); + ret->c = c_conv; + return (long)ret; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1get_1a(JNIEnv *env, jclass clz, int64_t ptr) { + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *tuple = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(ptr & ~1); + LDKChannelAnnouncement a_var = tuple->a; + CHECK((((long)a_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&a_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long a_ref = (long)a_var.inner & ~1; + return a_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1get_1b(JNIEnv *env, jclass clz, int64_t ptr) { + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *tuple = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(ptr & ~1); + LDKChannelUpdate b_var = tuple->b; + CHECK((((long)b_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&b_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long b_ref = (long)b_var.inner & ~1; + return b_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1get_1c(JNIEnv *env, jclass clz, int64_t ptr) { + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *tuple = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(ptr & ~1); + LDKChannelUpdate c_var = tuple->c; + CHECK((((long)c_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&c_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long c_ref = (long)c_var.inner & ~1; + return c_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { + LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ *ret = MALLOC(sizeof(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ), "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ"); + ret->datalen = (*env)->GetArrayLength(env, elems); + if (ret->datalen == 0) { + ret->data = NULL; + } else { + ret->data = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ) * ret->datalen, "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ Data"); + int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); + for (size_t i = 0; i < ret->datalen; i++) { + int64_t arr_elem = java_elems[i]; + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ arr_elem_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(((uint64_t)arr_elem) & ~1); + FREE((void*)arr_elem); + ret->data[i] = arr_elem_conv; + } + (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); + } + return (long)ret; +} +static inline LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_clone(const LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ *orig) { + LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret = { .data = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ) * orig->datalen, "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ clone bytes"), .datalen = orig->datalen }; + for (size_t i = 0; i < ret.datalen; i++) { + ret.data[i] = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(&orig->data[i]); + } + return ret; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1NodeAnnouncementZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { + LDKCVec_NodeAnnouncementZ *ret = MALLOC(sizeof(LDKCVec_NodeAnnouncementZ), "LDKCVec_NodeAnnouncementZ"); + ret->datalen = (*env)->GetArrayLength(env, elems); + if (ret->datalen == 0) { + ret->data = NULL; + } else { + ret->data = MALLOC(sizeof(LDKNodeAnnouncement) * ret->datalen, "LDKCVec_NodeAnnouncementZ Data"); + int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); + for (size_t i = 0; i < ret->datalen; i++) { + int64_t arr_elem = java_elems[i]; + LDKNodeAnnouncement arr_elem_conv; + arr_elem_conv.inner = (void*)(arr_elem & (~1)); + arr_elem_conv.is_owned = (arr_elem & 1) || (arr_elem == 0); + arr_elem_conv = NodeAnnouncement_clone(&arr_elem_conv); + ret->data[i] = arr_elem_conv; + } + (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); + } + return (long)ret; +} +static inline LDKCVec_NodeAnnouncementZ CVec_NodeAnnouncementZ_clone(const LDKCVec_NodeAnnouncementZ *orig) { + LDKCVec_NodeAnnouncementZ ret = { .data = MALLOC(sizeof(LDKNodeAnnouncement) * orig->datalen, "LDKCVec_NodeAnnouncementZ clone bytes"), .datalen = orig->datalen }; + for (size_t i = 0; i < ret.datalen; i++) { + ret.data[i] = NodeAnnouncement_clone(&orig->data[i]); + } + return ret; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneLightningErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_NoneLightningErrorZ*)arg)->result_ok; +} +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneLightningErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_NoneLightningErrorZ *val = (LDKCResult_NoneLightningErrorZ*)(arg & ~1); + CHECK(val->result_ok); + return *val->contents.result; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneLightningErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_NoneLightningErrorZ *val = (LDKCResult_NoneLightningErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKLightningError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +static jclass LDKErrorAction_DisconnectPeer_class = NULL; +static jmethodID LDKErrorAction_DisconnectPeer_meth = NULL; +static jclass LDKErrorAction_IgnoreError_class = NULL; +static jmethodID LDKErrorAction_IgnoreError_meth = NULL; +static jclass LDKErrorAction_SendErrorMessage_class = NULL; +static jmethodID LDKErrorAction_SendErrorMessage_meth = NULL; +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_00024LDKErrorAction_init (JNIEnv *env, jclass clz) { + LDKErrorAction_DisconnectPeer_class = + (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKErrorAction$DisconnectPeer;")); + CHECK(LDKErrorAction_DisconnectPeer_class != NULL); + LDKErrorAction_DisconnectPeer_meth = (*env)->GetMethodID(env, LDKErrorAction_DisconnectPeer_class, "", "(J)V"); + CHECK(LDKErrorAction_DisconnectPeer_meth != NULL); + LDKErrorAction_IgnoreError_class = + (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKErrorAction$IgnoreError;")); + CHECK(LDKErrorAction_IgnoreError_class != NULL); + LDKErrorAction_IgnoreError_meth = (*env)->GetMethodID(env, LDKErrorAction_IgnoreError_class, "", "()V"); + CHECK(LDKErrorAction_IgnoreError_meth != NULL); + LDKErrorAction_SendErrorMessage_class = + (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKErrorAction$SendErrorMessage;")); + CHECK(LDKErrorAction_SendErrorMessage_class != NULL); + LDKErrorAction_SendErrorMessage_meth = (*env)->GetMethodID(env, LDKErrorAction_SendErrorMessage_class, "", "(J)V"); + CHECK(LDKErrorAction_SendErrorMessage_meth != NULL); +} +JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKErrorAction_1ref_1from_1ptr(JNIEnv *env, jclass clz, int64_t ptr) { + LDKErrorAction *obj = (LDKErrorAction*)ptr; + switch(obj->tag) { + case LDKErrorAction_DisconnectPeer: { + LDKErrorMessage msg_var = obj->disconnect_peer.msg; + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner & ~1; + return (*env)->NewObject(env, LDKErrorAction_DisconnectPeer_class, LDKErrorAction_DisconnectPeer_meth, msg_ref); + } + case LDKErrorAction_IgnoreError: { + return (*env)->NewObject(env, LDKErrorAction_IgnoreError_class, LDKErrorAction_IgnoreError_meth); + } + case LDKErrorAction_SendErrorMessage: { + LDKErrorMessage msg_var = obj->send_error_message.msg; + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner & ~1; + return (*env)->NewObject(env, LDKErrorAction_SendErrorMessage_class, LDKErrorAction_SendErrorMessage_meth, msg_ref); + } + default: abort(); + } +} +static jclass LDKHTLCFailChannelUpdate_ChannelUpdateMessage_class = NULL; +static jmethodID LDKHTLCFailChannelUpdate_ChannelUpdateMessage_meth = NULL; +static jclass LDKHTLCFailChannelUpdate_ChannelClosed_class = NULL; +static jmethodID LDKHTLCFailChannelUpdate_ChannelClosed_meth = NULL; +static jclass LDKHTLCFailChannelUpdate_NodeFailure_class = NULL; +static jmethodID LDKHTLCFailChannelUpdate_NodeFailure_meth = NULL; +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_00024LDKHTLCFailChannelUpdate_init (JNIEnv *env, jclass clz) { + LDKHTLCFailChannelUpdate_ChannelUpdateMessage_class = + (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKHTLCFailChannelUpdate$ChannelUpdateMessage;")); + CHECK(LDKHTLCFailChannelUpdate_ChannelUpdateMessage_class != NULL); + LDKHTLCFailChannelUpdate_ChannelUpdateMessage_meth = (*env)->GetMethodID(env, LDKHTLCFailChannelUpdate_ChannelUpdateMessage_class, "", "(J)V"); + CHECK(LDKHTLCFailChannelUpdate_ChannelUpdateMessage_meth != NULL); + LDKHTLCFailChannelUpdate_ChannelClosed_class = + (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKHTLCFailChannelUpdate$ChannelClosed;")); + CHECK(LDKHTLCFailChannelUpdate_ChannelClosed_class != NULL); + LDKHTLCFailChannelUpdate_ChannelClosed_meth = (*env)->GetMethodID(env, LDKHTLCFailChannelUpdate_ChannelClosed_class, "", "(JZ)V"); + CHECK(LDKHTLCFailChannelUpdate_ChannelClosed_meth != NULL); + LDKHTLCFailChannelUpdate_NodeFailure_class = + (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKHTLCFailChannelUpdate$NodeFailure;")); + CHECK(LDKHTLCFailChannelUpdate_NodeFailure_class != NULL); + LDKHTLCFailChannelUpdate_NodeFailure_meth = (*env)->GetMethodID(env, LDKHTLCFailChannelUpdate_NodeFailure_class, "", "([BZ)V"); + CHECK(LDKHTLCFailChannelUpdate_NodeFailure_meth != NULL); +} +JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKHTLCFailChannelUpdate_1ref_1from_1ptr(JNIEnv *env, jclass clz, int64_t ptr) { + LDKHTLCFailChannelUpdate *obj = (LDKHTLCFailChannelUpdate*)ptr; + switch(obj->tag) { + case LDKHTLCFailChannelUpdate_ChannelUpdateMessage: { + LDKChannelUpdate msg_var = obj->channel_update_message.msg; + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner & ~1; + return (*env)->NewObject(env, LDKHTLCFailChannelUpdate_ChannelUpdateMessage_class, LDKHTLCFailChannelUpdate_ChannelUpdateMessage_meth, msg_ref); + } + case LDKHTLCFailChannelUpdate_ChannelClosed: { + return (*env)->NewObject(env, LDKHTLCFailChannelUpdate_ChannelClosed_class, LDKHTLCFailChannelUpdate_ChannelClosed_meth, obj->channel_closed.short_channel_id, obj->channel_closed.is_permanent); + } + case LDKHTLCFailChannelUpdate_NodeFailure: { + int8_tArray node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, node_id_arr, 0, 33, obj->node_failure.node_id.compressed_form); + return (*env)->NewObject(env, LDKHTLCFailChannelUpdate_NodeFailure_class, LDKHTLCFailChannelUpdate_NodeFailure_meth, node_id_arr, obj->node_failure.is_permanent); + } + default: abort(); + } +} +static jclass LDKMessageSendEvent_SendAcceptChannel_class = NULL; +static jmethodID LDKMessageSendEvent_SendAcceptChannel_meth = NULL; +static jclass LDKMessageSendEvent_SendOpenChannel_class = NULL; +static jmethodID LDKMessageSendEvent_SendOpenChannel_meth = NULL; +static jclass LDKMessageSendEvent_SendFundingCreated_class = NULL; +static jmethodID LDKMessageSendEvent_SendFundingCreated_meth = NULL; +static jclass LDKMessageSendEvent_SendFundingSigned_class = NULL; +static jmethodID LDKMessageSendEvent_SendFundingSigned_meth = NULL; +static jclass LDKMessageSendEvent_SendFundingLocked_class = NULL; +static jmethodID LDKMessageSendEvent_SendFundingLocked_meth = NULL; +static jclass LDKMessageSendEvent_SendAnnouncementSignatures_class = NULL; +static jmethodID LDKMessageSendEvent_SendAnnouncementSignatures_meth = NULL; +static jclass LDKMessageSendEvent_UpdateHTLCs_class = NULL; +static jmethodID LDKMessageSendEvent_UpdateHTLCs_meth = NULL; +static jclass LDKMessageSendEvent_SendRevokeAndACK_class = NULL; +static jmethodID LDKMessageSendEvent_SendRevokeAndACK_meth = NULL; +static jclass LDKMessageSendEvent_SendClosingSigned_class = NULL; +static jmethodID LDKMessageSendEvent_SendClosingSigned_meth = NULL; +static jclass LDKMessageSendEvent_SendShutdown_class = NULL; +static jmethodID LDKMessageSendEvent_SendShutdown_meth = NULL; +static jclass LDKMessageSendEvent_SendChannelReestablish_class = NULL; +static jmethodID LDKMessageSendEvent_SendChannelReestablish_meth = NULL; +static jclass LDKMessageSendEvent_BroadcastChannelAnnouncement_class = NULL; +static jmethodID LDKMessageSendEvent_BroadcastChannelAnnouncement_meth = NULL; +static jclass LDKMessageSendEvent_BroadcastNodeAnnouncement_class = NULL; +static jmethodID LDKMessageSendEvent_BroadcastNodeAnnouncement_meth = NULL; +static jclass LDKMessageSendEvent_BroadcastChannelUpdate_class = NULL; +static jmethodID LDKMessageSendEvent_BroadcastChannelUpdate_meth = NULL; +static jclass LDKMessageSendEvent_HandleError_class = NULL; +static jmethodID LDKMessageSendEvent_HandleError_meth = NULL; +static jclass LDKMessageSendEvent_PaymentFailureNetworkUpdate_class = NULL; +static jmethodID LDKMessageSendEvent_PaymentFailureNetworkUpdate_meth = NULL; +static jclass LDKMessageSendEvent_SendChannelRangeQuery_class = NULL; +static jmethodID LDKMessageSendEvent_SendChannelRangeQuery_meth = NULL; +static jclass LDKMessageSendEvent_SendShortIdsQuery_class = NULL; +static jmethodID LDKMessageSendEvent_SendShortIdsQuery_meth = NULL; +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_00024LDKMessageSendEvent_init (JNIEnv *env, jclass clz) { + LDKMessageSendEvent_SendAcceptChannel_class = + (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKMessageSendEvent$SendAcceptChannel;")); + CHECK(LDKMessageSendEvent_SendAcceptChannel_class != NULL); LDKMessageSendEvent_SendAcceptChannel_meth = (*env)->GetMethodID(env, LDKMessageSendEvent_SendAcceptChannel_class, "", "([BJ)V"); CHECK(LDKMessageSendEvent_SendAcceptChannel_meth != NULL); LDKMessageSendEvent_SendOpenChannel_class = @@ -780,100 +1205,506 @@ JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKMessageSendEvent_1ref_1f long msg_ref = (long)msg_var.inner & ~1; return (*env)->NewObject(env, LDKMessageSendEvent_SendRevokeAndACK_class, LDKMessageSendEvent_SendRevokeAndACK_meth, node_id_arr, msg_ref); } - case LDKMessageSendEvent_SendClosingSigned: { - int8_tArray node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, node_id_arr, 0, 33, obj->send_closing_signed.node_id.compressed_form); - LDKClosingSigned msg_var = obj->send_closing_signed.msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner & ~1; - return (*env)->NewObject(env, LDKMessageSendEvent_SendClosingSigned_class, LDKMessageSendEvent_SendClosingSigned_meth, node_id_arr, msg_ref); + case LDKMessageSendEvent_SendClosingSigned: { + int8_tArray node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, node_id_arr, 0, 33, obj->send_closing_signed.node_id.compressed_form); + LDKClosingSigned msg_var = obj->send_closing_signed.msg; + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner & ~1; + return (*env)->NewObject(env, LDKMessageSendEvent_SendClosingSigned_class, LDKMessageSendEvent_SendClosingSigned_meth, node_id_arr, msg_ref); + } + case LDKMessageSendEvent_SendShutdown: { + int8_tArray node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, node_id_arr, 0, 33, obj->send_shutdown.node_id.compressed_form); + LDKShutdown msg_var = obj->send_shutdown.msg; + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner & ~1; + return (*env)->NewObject(env, LDKMessageSendEvent_SendShutdown_class, LDKMessageSendEvent_SendShutdown_meth, node_id_arr, msg_ref); + } + case LDKMessageSendEvent_SendChannelReestablish: { + int8_tArray node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, node_id_arr, 0, 33, obj->send_channel_reestablish.node_id.compressed_form); + LDKChannelReestablish msg_var = obj->send_channel_reestablish.msg; + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner & ~1; + return (*env)->NewObject(env, LDKMessageSendEvent_SendChannelReestablish_class, LDKMessageSendEvent_SendChannelReestablish_meth, node_id_arr, msg_ref); + } + case LDKMessageSendEvent_BroadcastChannelAnnouncement: { + LDKChannelAnnouncement msg_var = obj->broadcast_channel_announcement.msg; + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner & ~1; + LDKChannelUpdate update_msg_var = obj->broadcast_channel_announcement.update_msg; + CHECK((((long)update_msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&update_msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long update_msg_ref = (long)update_msg_var.inner & ~1; + return (*env)->NewObject(env, LDKMessageSendEvent_BroadcastChannelAnnouncement_class, LDKMessageSendEvent_BroadcastChannelAnnouncement_meth, msg_ref, update_msg_ref); + } + case LDKMessageSendEvent_BroadcastNodeAnnouncement: { + LDKNodeAnnouncement msg_var = obj->broadcast_node_announcement.msg; + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner & ~1; + return (*env)->NewObject(env, LDKMessageSendEvent_BroadcastNodeAnnouncement_class, LDKMessageSendEvent_BroadcastNodeAnnouncement_meth, msg_ref); + } + case LDKMessageSendEvent_BroadcastChannelUpdate: { + LDKChannelUpdate msg_var = obj->broadcast_channel_update.msg; + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner & ~1; + return (*env)->NewObject(env, LDKMessageSendEvent_BroadcastChannelUpdate_class, LDKMessageSendEvent_BroadcastChannelUpdate_meth, msg_ref); + } + case LDKMessageSendEvent_HandleError: { + int8_tArray node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, node_id_arr, 0, 33, obj->handle_error.node_id.compressed_form); + long action_ref = ((long)&obj->handle_error.action) | 1; + return (*env)->NewObject(env, LDKMessageSendEvent_HandleError_class, LDKMessageSendEvent_HandleError_meth, node_id_arr, action_ref); + } + case LDKMessageSendEvent_PaymentFailureNetworkUpdate: { + long update_ref = ((long)&obj->payment_failure_network_update.update) | 1; + return (*env)->NewObject(env, LDKMessageSendEvent_PaymentFailureNetworkUpdate_class, LDKMessageSendEvent_PaymentFailureNetworkUpdate_meth, update_ref); + } + case LDKMessageSendEvent_SendChannelRangeQuery: { + int8_tArray node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, node_id_arr, 0, 33, obj->send_channel_range_query.node_id.compressed_form); + LDKQueryChannelRange msg_var = obj->send_channel_range_query.msg; + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner & ~1; + return (*env)->NewObject(env, LDKMessageSendEvent_SendChannelRangeQuery_class, LDKMessageSendEvent_SendChannelRangeQuery_meth, node_id_arr, msg_ref); + } + case LDKMessageSendEvent_SendShortIdsQuery: { + int8_tArray node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, node_id_arr, 0, 33, obj->send_short_ids_query.node_id.compressed_form); + LDKQueryShortChannelIds msg_var = obj->send_short_ids_query.msg; + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner & ~1; + return (*env)->NewObject(env, LDKMessageSendEvent_SendShortIdsQuery_class, LDKMessageSendEvent_SendShortIdsQuery_meth, node_id_arr, msg_ref); + } + default: abort(); + } +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1MessageSendEventZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { + LDKCVec_MessageSendEventZ *ret = MALLOC(sizeof(LDKCVec_MessageSendEventZ), "LDKCVec_MessageSendEventZ"); + ret->datalen = (*env)->GetArrayLength(env, elems); + if (ret->datalen == 0) { + ret->data = NULL; + } else { + ret->data = MALLOC(sizeof(LDKMessageSendEvent) * ret->datalen, "LDKCVec_MessageSendEventZ Data"); + int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); + for (size_t i = 0; i < ret->datalen; i++) { + int64_t arr_elem = java_elems[i]; + LDKMessageSendEvent arr_elem_conv = *(LDKMessageSendEvent*)(((uint64_t)arr_elem) & ~1); + FREE((void*)arr_elem); + ret->data[i] = arr_elem_conv; + } + (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); + } + return (long)ret; +} +static inline LDKCVec_MessageSendEventZ CVec_MessageSendEventZ_clone(const LDKCVec_MessageSendEventZ *orig) { + LDKCVec_MessageSendEventZ ret = { .data = MALLOC(sizeof(LDKMessageSendEvent) * orig->datalen, "LDKCVec_MessageSendEventZ clone bytes"), .datalen = orig->datalen }; + for (size_t i = 0; i < ret.datalen; i++) { + ret.data[i] = MessageSendEvent_clone(&orig->data[i]); + } + return ret; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1DirectionalChannelInfoDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_DirectionalChannelInfoDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1DirectionalChannelInfoDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_DirectionalChannelInfoDecodeErrorZ *val = (LDKCResult_DirectionalChannelInfoDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKDirectionalChannelInfo res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1DirectionalChannelInfoDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_DirectionalChannelInfoDecodeErrorZ *val = (LDKCResult_DirectionalChannelInfoDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelInfoDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_ChannelInfoDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelInfoDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelInfoDecodeErrorZ *val = (LDKCResult_ChannelInfoDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKChannelInfo res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelInfoDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelInfoDecodeErrorZ *val = (LDKCResult_ChannelInfoDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RoutingFeesDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_RoutingFeesDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RoutingFeesDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_RoutingFeesDecodeErrorZ *val = (LDKCResult_RoutingFeesDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKRoutingFees res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RoutingFeesDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_RoutingFeesDecodeErrorZ *val = (LDKCResult_RoutingFeesDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +static jclass LDKNetAddress_IPv4_class = NULL; +static jmethodID LDKNetAddress_IPv4_meth = NULL; +static jclass LDKNetAddress_IPv6_class = NULL; +static jmethodID LDKNetAddress_IPv6_meth = NULL; +static jclass LDKNetAddress_OnionV2_class = NULL; +static jmethodID LDKNetAddress_OnionV2_meth = NULL; +static jclass LDKNetAddress_OnionV3_class = NULL; +static jmethodID LDKNetAddress_OnionV3_meth = NULL; +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_00024LDKNetAddress_init (JNIEnv *env, jclass clz) { + LDKNetAddress_IPv4_class = + (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKNetAddress$IPv4;")); + CHECK(LDKNetAddress_IPv4_class != NULL); + LDKNetAddress_IPv4_meth = (*env)->GetMethodID(env, LDKNetAddress_IPv4_class, "", "([BS)V"); + CHECK(LDKNetAddress_IPv4_meth != NULL); + LDKNetAddress_IPv6_class = + (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKNetAddress$IPv6;")); + CHECK(LDKNetAddress_IPv6_class != NULL); + LDKNetAddress_IPv6_meth = (*env)->GetMethodID(env, LDKNetAddress_IPv6_class, "", "([BS)V"); + CHECK(LDKNetAddress_IPv6_meth != NULL); + LDKNetAddress_OnionV2_class = + (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKNetAddress$OnionV2;")); + CHECK(LDKNetAddress_OnionV2_class != NULL); + LDKNetAddress_OnionV2_meth = (*env)->GetMethodID(env, LDKNetAddress_OnionV2_class, "", "([BS)V"); + CHECK(LDKNetAddress_OnionV2_meth != NULL); + LDKNetAddress_OnionV3_class = + (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKNetAddress$OnionV3;")); + CHECK(LDKNetAddress_OnionV3_class != NULL); + LDKNetAddress_OnionV3_meth = (*env)->GetMethodID(env, LDKNetAddress_OnionV3_class, "", "([BSBS)V"); + CHECK(LDKNetAddress_OnionV3_meth != NULL); +} +JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKNetAddress_1ref_1from_1ptr(JNIEnv *env, jclass clz, int64_t ptr) { + LDKNetAddress *obj = (LDKNetAddress*)ptr; + switch(obj->tag) { + case LDKNetAddress_IPv4: { + int8_tArray addr_arr = (*env)->NewByteArray(env, 4); + (*env)->SetByteArrayRegion(env, addr_arr, 0, 4, obj->i_pv4.addr.data); + return (*env)->NewObject(env, LDKNetAddress_IPv4_class, LDKNetAddress_IPv4_meth, addr_arr, obj->i_pv4.port); + } + case LDKNetAddress_IPv6: { + int8_tArray addr_arr = (*env)->NewByteArray(env, 16); + (*env)->SetByteArrayRegion(env, addr_arr, 0, 16, obj->i_pv6.addr.data); + return (*env)->NewObject(env, LDKNetAddress_IPv6_class, LDKNetAddress_IPv6_meth, addr_arr, obj->i_pv6.port); } - case LDKMessageSendEvent_SendShutdown: { - int8_tArray node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, node_id_arr, 0, 33, obj->send_shutdown.node_id.compressed_form); - LDKShutdown msg_var = obj->send_shutdown.msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner & ~1; - return (*env)->NewObject(env, LDKMessageSendEvent_SendShutdown_class, LDKMessageSendEvent_SendShutdown_meth, node_id_arr, msg_ref); + case LDKNetAddress_OnionV2: { + int8_tArray addr_arr = (*env)->NewByteArray(env, 10); + (*env)->SetByteArrayRegion(env, addr_arr, 0, 10, obj->onion_v2.addr.data); + return (*env)->NewObject(env, LDKNetAddress_OnionV2_class, LDKNetAddress_OnionV2_meth, addr_arr, obj->onion_v2.port); } - case LDKMessageSendEvent_SendChannelReestablish: { - int8_tArray node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, node_id_arr, 0, 33, obj->send_channel_reestablish.node_id.compressed_form); - LDKChannelReestablish msg_var = obj->send_channel_reestablish.msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner & ~1; - return (*env)->NewObject(env, LDKMessageSendEvent_SendChannelReestablish_class, LDKMessageSendEvent_SendChannelReestablish_meth, node_id_arr, msg_ref); + case LDKNetAddress_OnionV3: { + int8_tArray ed25519_pubkey_arr = (*env)->NewByteArray(env, 32); + (*env)->SetByteArrayRegion(env, ed25519_pubkey_arr, 0, 32, obj->onion_v3.ed25519_pubkey.data); + return (*env)->NewObject(env, LDKNetAddress_OnionV3_class, LDKNetAddress_OnionV3_meth, ed25519_pubkey_arr, obj->onion_v3.checksum, obj->onion_v3.version, obj->onion_v3.port); } - case LDKMessageSendEvent_BroadcastChannelAnnouncement: { - LDKChannelAnnouncement msg_var = obj->broadcast_channel_announcement.msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner & ~1; - LDKChannelUpdate update_msg_var = obj->broadcast_channel_announcement.update_msg; - CHECK((((long)update_msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&update_msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long update_msg_ref = (long)update_msg_var.inner & ~1; - return (*env)->NewObject(env, LDKMessageSendEvent_BroadcastChannelAnnouncement_class, LDKMessageSendEvent_BroadcastChannelAnnouncement_meth, msg_ref, update_msg_ref); + default: abort(); + } +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1NetAddressZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { + LDKCVec_NetAddressZ *ret = MALLOC(sizeof(LDKCVec_NetAddressZ), "LDKCVec_NetAddressZ"); + ret->datalen = (*env)->GetArrayLength(env, elems); + if (ret->datalen == 0) { + ret->data = NULL; + } else { + ret->data = MALLOC(sizeof(LDKNetAddress) * ret->datalen, "LDKCVec_NetAddressZ Data"); + int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); + for (size_t i = 0; i < ret->datalen; i++) { + int64_t arr_elem = java_elems[i]; + LDKNetAddress arr_elem_conv = *(LDKNetAddress*)(((uint64_t)arr_elem) & ~1); + FREE((void*)arr_elem); + ret->data[i] = arr_elem_conv; } - case LDKMessageSendEvent_BroadcastNodeAnnouncement: { - LDKNodeAnnouncement msg_var = obj->broadcast_node_announcement.msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner & ~1; - return (*env)->NewObject(env, LDKMessageSendEvent_BroadcastNodeAnnouncement_class, LDKMessageSendEvent_BroadcastNodeAnnouncement_meth, msg_ref); + (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); + } + return (long)ret; +} +static inline LDKCVec_NetAddressZ CVec_NetAddressZ_clone(const LDKCVec_NetAddressZ *orig) { + LDKCVec_NetAddressZ ret = { .data = MALLOC(sizeof(LDKNetAddress) * orig->datalen, "LDKCVec_NetAddressZ clone bytes"), .datalen = orig->datalen }; + for (size_t i = 0; i < ret.datalen; i++) { + ret.data[i] = NetAddress_clone(&orig->data[i]); + } + return ret; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementInfoDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementInfoDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_NodeAnnouncementInfoDecodeErrorZ *val = (LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKNodeAnnouncementInfo res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementInfoDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_NodeAnnouncementInfoDecodeErrorZ *val = (LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1u64Z_1new(JNIEnv *env, jclass clz, int64_tArray elems) { + LDKCVec_u64Z *ret = MALLOC(sizeof(LDKCVec_u64Z), "LDKCVec_u64Z"); + ret->datalen = (*env)->GetArrayLength(env, elems); + if (ret->datalen == 0) { + ret->data = NULL; + } else { + ret->data = MALLOC(sizeof(uint64_t) * ret->datalen, "LDKCVec_u64Z Data"); + int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); + for (size_t i = 0; i < ret->datalen; i++) { + ret->data[i] = java_elems[i]; } - case LDKMessageSendEvent_BroadcastChannelUpdate: { - LDKChannelUpdate msg_var = obj->broadcast_channel_update.msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner & ~1; - return (*env)->NewObject(env, LDKMessageSendEvent_BroadcastChannelUpdate_class, LDKMessageSendEvent_BroadcastChannelUpdate_meth, msg_ref); + (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); + } + return (long)ret; +} +static inline LDKCVec_u64Z CVec_u64Z_clone(const LDKCVec_u64Z *orig) { + LDKCVec_u64Z ret = { .data = MALLOC(sizeof(int64_t) * orig->datalen, "LDKCVec_u64Z clone bytes"), .datalen = orig->datalen }; + memcpy(ret.data, orig->data, sizeof(int64_t) * ret.datalen); + return ret; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeInfoDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_NodeInfoDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeInfoDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_NodeInfoDecodeErrorZ *val = (LDKCResult_NodeInfoDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKNodeInfo res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeInfoDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_NodeInfoDecodeErrorZ *val = (LDKCResult_NodeInfoDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetworkGraphDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_NetworkGraphDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetworkGraphDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_NetworkGraphDecodeErrorZ *val = (LDKCResult_NetworkGraphDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKNetworkGraph res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetworkGraphDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_NetworkGraphDecodeErrorZ *val = (LDKCResult_NetworkGraphDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1usizeTransactionZ_1new(JNIEnv *env, jclass clz, int64_t a, int8_tArray b) { + LDKC2Tuple_usizeTransactionZ* ret = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ"); + ret->a = a; + LDKTransaction b_ref; + b_ref.datalen = (*env)->GetArrayLength(env, b); + b_ref.data = MALLOC(b_ref.datalen, "LDKTransaction Bytes"); + (*env)->GetByteArrayRegion(env, b, 0, b_ref.datalen, b_ref.data); + b_ref.data_is_owned = false; + ret->b = b_ref; + return (long)ret; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1usizeTransactionZ_1get_1a(JNIEnv *env, jclass clz, int64_t ptr) { + LDKC2Tuple_usizeTransactionZ *tuple = (LDKC2Tuple_usizeTransactionZ*)(ptr & ~1); + return tuple->a; +} +JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1usizeTransactionZ_1get_1b(JNIEnv *env, jclass clz, int64_t ptr) { + LDKC2Tuple_usizeTransactionZ *tuple = (LDKC2Tuple_usizeTransactionZ*)(ptr & ~1); + LDKTransaction b_var = tuple->b; + int8_tArray b_arr = (*env)->NewByteArray(env, b_var.datalen); + (*env)->SetByteArrayRegion(env, b_arr, 0, b_var.datalen, b_var.data); + return b_arr; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1C2Tuple_1usizeTransactionZZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { + LDKCVec_C2Tuple_usizeTransactionZZ *ret = MALLOC(sizeof(LDKCVec_C2Tuple_usizeTransactionZZ), "LDKCVec_C2Tuple_usizeTransactionZZ"); + ret->datalen = (*env)->GetArrayLength(env, elems); + if (ret->datalen == 0) { + ret->data = NULL; + } else { + ret->data = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ) * ret->datalen, "LDKCVec_C2Tuple_usizeTransactionZZ Data"); + int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); + for (size_t i = 0; i < ret->datalen; i++) { + int64_t arr_elem = java_elems[i]; + LDKC2Tuple_usizeTransactionZ arr_elem_conv = *(LDKC2Tuple_usizeTransactionZ*)(((uint64_t)arr_elem) & ~1); + FREE((void*)arr_elem); + ret->data[i] = arr_elem_conv; } - case LDKMessageSendEvent_HandleError: { - int8_tArray node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, node_id_arr, 0, 33, obj->handle_error.node_id.compressed_form); - long action_ref = ((long)&obj->handle_error.action) | 1; - return (*env)->NewObject(env, LDKMessageSendEvent_HandleError_class, LDKMessageSendEvent_HandleError_meth, node_id_arr, action_ref); + (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); + } + return (long)ret; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneChannelMonitorUpdateErrZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_NoneChannelMonitorUpdateErrZ*)arg)->result_ok; +} +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneChannelMonitorUpdateErrZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_NoneChannelMonitorUpdateErrZ *val = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(arg & ~1); + CHECK(val->result_ok); + return *val->contents.result; +} +JNIEXPORT jclass JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneChannelMonitorUpdateErrZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_NoneChannelMonitorUpdateErrZ *val = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(arg & ~1); + CHECK(!val->result_ok); + jclass err_conv = LDKChannelMonitorUpdateErr_to_java(env, (*val->contents.err)); + return err_conv; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1MonitorEventZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { + LDKCVec_MonitorEventZ *ret = MALLOC(sizeof(LDKCVec_MonitorEventZ), "LDKCVec_MonitorEventZ"); + ret->datalen = (*env)->GetArrayLength(env, elems); + if (ret->datalen == 0) { + ret->data = NULL; + } else { + ret->data = MALLOC(sizeof(LDKMonitorEvent) * ret->datalen, "LDKCVec_MonitorEventZ Data"); + int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); + for (size_t i = 0; i < ret->datalen; i++) { + int64_t arr_elem = java_elems[i]; + LDKMonitorEvent arr_elem_conv; + arr_elem_conv.inner = (void*)(arr_elem & (~1)); + arr_elem_conv.is_owned = (arr_elem & 1) || (arr_elem == 0); + arr_elem_conv = MonitorEvent_clone(&arr_elem_conv); + ret->data[i] = arr_elem_conv; } - case LDKMessageSendEvent_PaymentFailureNetworkUpdate: { - long update_ref = ((long)&obj->payment_failure_network_update.update) | 1; - return (*env)->NewObject(env, LDKMessageSendEvent_PaymentFailureNetworkUpdate_class, LDKMessageSendEvent_PaymentFailureNetworkUpdate_meth, update_ref); + (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); + } + return (long)ret; +} +static inline LDKCVec_MonitorEventZ CVec_MonitorEventZ_clone(const LDKCVec_MonitorEventZ *orig) { + LDKCVec_MonitorEventZ ret = { .data = MALLOC(sizeof(LDKMonitorEvent) * orig->datalen, "LDKCVec_MonitorEventZ clone bytes"), .datalen = orig->datalen }; + for (size_t i = 0; i < ret.datalen; i++) { + ret.data[i] = MonitorEvent_clone(&orig->data[i]); + } + return ret; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u64u64Z_1new(JNIEnv *env, jclass clz, int64_t a, int64_t b) { + LDKC2Tuple_u64u64Z* ret = MALLOC(sizeof(LDKC2Tuple_u64u64Z), "LDKC2Tuple_u64u64Z"); + ret->a = a; + ret->b = b; + return (long)ret; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u64u64Z_1get_1a(JNIEnv *env, jclass clz, int64_t ptr) { + LDKC2Tuple_u64u64Z *tuple = (LDKC2Tuple_u64u64Z*)(ptr & ~1); + return tuple->a; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u64u64Z_1get_1b(JNIEnv *env, jclass clz, int64_t ptr) { + LDKC2Tuple_u64u64Z *tuple = (LDKC2Tuple_u64u64Z*)(ptr & ~1); + return tuple->b; +} +static jclass LDKSpendableOutputDescriptor_StaticOutput_class = NULL; +static jmethodID LDKSpendableOutputDescriptor_StaticOutput_meth = NULL; +static jclass LDKSpendableOutputDescriptor_DynamicOutputP2WSH_class = NULL; +static jmethodID LDKSpendableOutputDescriptor_DynamicOutputP2WSH_meth = NULL; +static jclass LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_class = NULL; +static jmethodID LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_meth = NULL; +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_00024LDKSpendableOutputDescriptor_init (JNIEnv *env, jclass clz) { + LDKSpendableOutputDescriptor_StaticOutput_class = + (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKSpendableOutputDescriptor$StaticOutput;")); + CHECK(LDKSpendableOutputDescriptor_StaticOutput_class != NULL); + LDKSpendableOutputDescriptor_StaticOutput_meth = (*env)->GetMethodID(env, LDKSpendableOutputDescriptor_StaticOutput_class, "", "(JJ)V"); + CHECK(LDKSpendableOutputDescriptor_StaticOutput_meth != NULL); + LDKSpendableOutputDescriptor_DynamicOutputP2WSH_class = + (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKSpendableOutputDescriptor$DynamicOutputP2WSH;")); + CHECK(LDKSpendableOutputDescriptor_DynamicOutputP2WSH_class != NULL); + LDKSpendableOutputDescriptor_DynamicOutputP2WSH_meth = (*env)->GetMethodID(env, LDKSpendableOutputDescriptor_DynamicOutputP2WSH_class, "", "(J[BSJJ[B)V"); + CHECK(LDKSpendableOutputDescriptor_DynamicOutputP2WSH_meth != NULL); + LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_class = + (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKSpendableOutputDescriptor$StaticOutputCounterpartyPayment;")); + CHECK(LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_class != NULL); + LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_meth = (*env)->GetMethodID(env, LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_class, "", "(JJJ)V"); + CHECK(LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_meth != NULL); +} +JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKSpendableOutputDescriptor_1ref_1from_1ptr(JNIEnv *env, jclass clz, int64_t ptr) { + LDKSpendableOutputDescriptor *obj = (LDKSpendableOutputDescriptor*)ptr; + switch(obj->tag) { + case LDKSpendableOutputDescriptor_StaticOutput: { + LDKOutPoint outpoint_var = obj->static_output.outpoint; + CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long outpoint_ref = (long)outpoint_var.inner & ~1; + long output_ref = ((long)&obj->static_output.output) | 1; + return (*env)->NewObject(env, LDKSpendableOutputDescriptor_StaticOutput_class, LDKSpendableOutputDescriptor_StaticOutput_meth, outpoint_ref, (long)output_ref); } - case LDKMessageSendEvent_SendChannelRangeQuery: { - int8_tArray node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, node_id_arr, 0, 33, obj->send_channel_range_query.node_id.compressed_form); - LDKQueryChannelRange msg_var = obj->send_channel_range_query.msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner & ~1; - return (*env)->NewObject(env, LDKMessageSendEvent_SendChannelRangeQuery_class, LDKMessageSendEvent_SendChannelRangeQuery_meth, node_id_arr, msg_ref); + case LDKSpendableOutputDescriptor_DynamicOutputP2WSH: { + LDKOutPoint outpoint_var = obj->dynamic_output_p2wsh.outpoint; + CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long outpoint_ref = (long)outpoint_var.inner & ~1; + int8_tArray per_commitment_point_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, per_commitment_point_arr, 0, 33, obj->dynamic_output_p2wsh.per_commitment_point.compressed_form); + long output_ref = ((long)&obj->dynamic_output_p2wsh.output) | 1; + long key_derivation_params_ref = (long)(&obj->dynamic_output_p2wsh.key_derivation_params) | 1; + int8_tArray revocation_pubkey_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, revocation_pubkey_arr, 0, 33, obj->dynamic_output_p2wsh.revocation_pubkey.compressed_form); + return (*env)->NewObject(env, LDKSpendableOutputDescriptor_DynamicOutputP2WSH_class, LDKSpendableOutputDescriptor_DynamicOutputP2WSH_meth, outpoint_ref, per_commitment_point_arr, obj->dynamic_output_p2wsh.to_self_delay, (long)output_ref, key_derivation_params_ref, revocation_pubkey_arr); } - case LDKMessageSendEvent_SendShortIdsQuery: { - int8_tArray node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, node_id_arr, 0, 33, obj->send_short_ids_query.node_id.compressed_form); - LDKQueryShortChannelIds msg_var = obj->send_short_ids_query.msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner & ~1; - return (*env)->NewObject(env, LDKMessageSendEvent_SendShortIdsQuery_class, LDKMessageSendEvent_SendShortIdsQuery_meth, node_id_arr, msg_ref); + case LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment: { + LDKOutPoint outpoint_var = obj->static_output_counterparty_payment.outpoint; + CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long outpoint_ref = (long)outpoint_var.inner & ~1; + long output_ref = ((long)&obj->static_output_counterparty_payment.output) | 1; + long key_derivation_params_ref = (long)(&obj->static_output_counterparty_payment.key_derivation_params) | 1; + return (*env)->NewObject(env, LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_class, LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment_meth, outpoint_ref, (long)output_ref, key_derivation_params_ref); } default: abort(); } } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1MessageSendEventZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { - LDKCVec_MessageSendEventZ *ret = MALLOC(sizeof(LDKCVec_MessageSendEventZ), "LDKCVec_MessageSendEventZ"); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1SpendableOutputDescriptorZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { + LDKCVec_SpendableOutputDescriptorZ *ret = MALLOC(sizeof(LDKCVec_SpendableOutputDescriptorZ), "LDKCVec_SpendableOutputDescriptorZ"); ret->datalen = (*env)->GetArrayLength(env, elems); if (ret->datalen == 0) { ret->data = NULL; } else { - ret->data = MALLOC(sizeof(LDKMessageSendEvent) * ret->datalen, "LDKCVec_MessageSendEventZ Data"); + ret->data = MALLOC(sizeof(LDKSpendableOutputDescriptor) * ret->datalen, "LDKCVec_SpendableOutputDescriptorZ Data"); int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); for (size_t i = 0; i < ret->datalen; i++) { int64_t arr_elem = java_elems[i]; - LDKMessageSendEvent arr_elem_conv = *(LDKMessageSendEvent*)(((uint64_t)arr_elem) & ~1); + LDKSpendableOutputDescriptor arr_elem_conv = *(LDKSpendableOutputDescriptor*)(((uint64_t)arr_elem) & ~1); FREE((void*)arr_elem); ret->data[i] = arr_elem_conv; } @@ -881,10 +1712,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1MessageSendEventZ_ } return (long)ret; } -static inline LDKCVec_MessageSendEventZ CVec_MessageSendEventZ_clone(const LDKCVec_MessageSendEventZ *orig) { - LDKCVec_MessageSendEventZ ret = { .data = MALLOC(sizeof(LDKMessageSendEvent) * orig->datalen, "LDKCVec_MessageSendEventZ clone bytes"), .datalen = orig->datalen }; +static inline LDKCVec_SpendableOutputDescriptorZ CVec_SpendableOutputDescriptorZ_clone(const LDKCVec_SpendableOutputDescriptorZ *orig) { + LDKCVec_SpendableOutputDescriptorZ ret = { .data = MALLOC(sizeof(LDKSpendableOutputDescriptor) * orig->datalen, "LDKCVec_SpendableOutputDescriptorZ clone bytes"), .datalen = orig->datalen }; for (size_t i = 0; i < ret.datalen; i++) { - ret.data[i] = MessageSendEvent_clone(&orig->data[i]); + ret.data[i] = SpendableOutputDescriptor_clone(&orig->data[i]); } return ret; } @@ -1016,86 +1847,26 @@ static inline LDKCVec_EventZ CVec_EventZ_clone(const LDKCVec_EventZ *orig) { } return ret; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1usizeTransactionZ_1new(JNIEnv *env, jclass clz, int64_t a, int8_tArray b) { - LDKC2Tuple_usizeTransactionZ* ret = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ"); - ret->a = a; - LDKTransaction b_ref; - b_ref.datalen = (*env)->GetArrayLength(env, b); - b_ref.data = MALLOC(b_ref.datalen, "LDKTransaction Bytes"); - (*env)->GetByteArrayRegion(env, b, 0, b_ref.datalen, b_ref.data); - b_ref.data_is_owned = false; - ret->b = b_ref; - return (long)ret; -} -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1usizeTransactionZ_1get_1a(JNIEnv *env, jclass clz, int64_t ptr) { - LDKC2Tuple_usizeTransactionZ *tuple = (LDKC2Tuple_usizeTransactionZ*)(ptr & ~1); - return tuple->a; -} -JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1usizeTransactionZ_1get_1b(JNIEnv *env, jclass clz, int64_t ptr) { - LDKC2Tuple_usizeTransactionZ *tuple = (LDKC2Tuple_usizeTransactionZ*)(ptr & ~1); - LDKTransaction b_var = tuple->b; - int8_tArray b_arr = (*env)->NewByteArray(env, b_var.datalen); - (*env)->SetByteArrayRegion(env, b_arr, 0, b_var.datalen, b_var.data); - return b_arr; -} -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1C2Tuple_1usizeTransactionZZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { - LDKCVec_C2Tuple_usizeTransactionZZ *ret = MALLOC(sizeof(LDKCVec_C2Tuple_usizeTransactionZZ), "LDKCVec_C2Tuple_usizeTransactionZZ"); - ret->datalen = (*env)->GetArrayLength(env, elems); - if (ret->datalen == 0) { - ret->data = NULL; - } else { - ret->data = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ) * ret->datalen, "LDKCVec_C2Tuple_usizeTransactionZZ Data"); - int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); - for (size_t i = 0; i < ret->datalen; i++) { - int64_t arr_elem = java_elems[i]; - LDKC2Tuple_usizeTransactionZ arr_elem_conv = *(LDKC2Tuple_usizeTransactionZ*)(((uint64_t)arr_elem) & ~1); - FREE((void*)arr_elem); - ret->data[i] = arr_elem_conv; - } - (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); - } - return (long)ret; -} -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneChannelMonitorUpdateErrZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_NoneChannelMonitorUpdateErrZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1OutPointDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_OutPointDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneChannelMonitorUpdateErrZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_NoneChannelMonitorUpdateErrZ *val = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1OutPointDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_OutPointDecodeErrorZ *val = (LDKCResult_OutPointDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - return *val->contents.result; + LDKOutPoint res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -JNIEXPORT jclass JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneChannelMonitorUpdateErrZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_NoneChannelMonitorUpdateErrZ *val = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1OutPointDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_OutPointDecodeErrorZ *val = (LDKCResult_OutPointDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); - jclass err_conv = LDKChannelMonitorUpdateErr_to_java(env, (*val->contents.err)); - return err_conv; -} -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1MonitorEventZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { - LDKCVec_MonitorEventZ *ret = MALLOC(sizeof(LDKCVec_MonitorEventZ), "LDKCVec_MonitorEventZ"); - ret->datalen = (*env)->GetArrayLength(env, elems); - if (ret->datalen == 0) { - ret->data = NULL; - } else { - ret->data = MALLOC(sizeof(LDKMonitorEvent) * ret->datalen, "LDKCVec_MonitorEventZ Data"); - int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); - for (size_t i = 0; i < ret->datalen; i++) { - int64_t arr_elem = java_elems[i]; - LDKMonitorEvent arr_elem_conv; - arr_elem_conv.inner = (void*)(arr_elem & (~1)); - arr_elem_conv.is_owned = (arr_elem & 1) || (arr_elem == 0); - arr_elem_conv = MonitorEvent_clone(&arr_elem_conv); - ret->data[i] = arr_elem_conv; - } - (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); - } - return (long)ret; -} -static inline LDKCVec_MonitorEventZ CVec_MonitorEventZ_clone(const LDKCVec_MonitorEventZ *orig) { - LDKCVec_MonitorEventZ ret = { .data = MALLOC(sizeof(LDKMonitorEvent) * orig->datalen, "LDKCVec_MonitorEventZ clone bytes"), .datalen = orig->datalen }; - for (size_t i = 0; i < ret.datalen; i++) { - ret.data[i] = MonitorEvent_clone(&orig->data[i]); - } - return ret; + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; } JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelMonitorUpdateDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { return ((LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)arg)->result_ok; @@ -1118,6 +1889,27 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelMonitorU long err_ref = (long)err_var.inner & ~1; return err_ref; } +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HTLCUpdateDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_HTLCUpdateDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HTLCUpdateDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_HTLCUpdateDecodeErrorZ *val = (LDKCResult_HTLCUpdateDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKHTLCUpdate res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HTLCUpdateDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_HTLCUpdateDecodeErrorZ *val = (LDKCResult_HTLCUpdateDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneMonitorUpdateErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { return ((LDKCResult_NoneMonitorUpdateErrorZ*)arg)->result_ok; } @@ -1759,87 +2551,29 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChanne } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelMonitorZ_1get_1a(JNIEnv *env, jclass clz, int64_t ptr) { LDKC2Tuple_BlockHashChannelMonitorZ *tuple = (LDKC2Tuple_BlockHashChannelMonitorZ*)(ptr & ~1); - int8_tArray a_arr = (*env)->NewByteArray(env, 32); - (*env)->SetByteArrayRegion(env, a_arr, 0, 32, tuple->a.data); - return a_arr; -} -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelMonitorZ_1get_1b(JNIEnv *env, jclass clz, int64_t ptr) { - LDKC2Tuple_BlockHashChannelMonitorZ *tuple = (LDKC2Tuple_BlockHashChannelMonitorZ*)(ptr & ~1); - LDKChannelMonitor b_var = tuple->b; - CHECK((((long)b_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&b_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long b_ref = (long)b_var.inner & ~1; - return b_ref; -} -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)arg)->result_ok; -} -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *val = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(arg & ~1); - CHECK(val->result_ok); - long res_ref = (long)(&(*val->contents.result)) | 1; - return res_ref; -} -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *val = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; -} -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SpendableOutputDescriptorDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)arg)->result_ok; -} -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SpendableOutputDescriptorDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_SpendableOutputDescriptorDecodeErrorZ *val = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(arg & ~1); - CHECK(val->result_ok); - long res_ref = ((long)&(*val->contents.result)) | 1; - return res_ref; -} -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SpendableOutputDescriptorDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_SpendableOutputDescriptorDecodeErrorZ *val = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; -} -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChanKeySignerDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_ChanKeySignerDecodeErrorZ*)arg)->result_ok; -} -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChanKeySignerDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_ChanKeySignerDecodeErrorZ *val = (LDKCResult_ChanKeySignerDecodeErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKChannelKeys* ret = MALLOC(sizeof(LDKChannelKeys), "LDKChannelKeys"); - *ret = ChannelKeys_clone(&(*val->contents.result)); - return (long)ret; + int8_tArray a_arr = (*env)->NewByteArray(env, 32); + (*env)->SetByteArrayRegion(env, a_arr, 0, 32, tuple->a.data); + return a_arr; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChanKeySignerDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_ChanKeySignerDecodeErrorZ *val = (LDKCResult_ChanKeySignerDecodeErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelMonitorZ_1get_1b(JNIEnv *env, jclass clz, int64_t ptr) { + LDKC2Tuple_BlockHashChannelMonitorZ *tuple = (LDKC2Tuple_BlockHashChannelMonitorZ*)(ptr & ~1); + LDKChannelMonitor b_var = tuple->b; + CHECK((((long)b_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&b_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long b_ref = (long)b_var.inner & ~1; + return b_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InMemoryChannelKeysDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_InMemoryChannelKeysDecodeErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InMemoryChannelKeysDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_InMemoryChannelKeysDecodeErrorZ *val = (LDKCResult_InMemoryChannelKeysDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *val = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKInMemoryChannelKeys res_var = (*val->contents.result); - CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long res_ref = (long)res_var.inner & ~1; + long res_ref = (long)(&(*val->contents.result)) | 1; return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InMemoryChannelKeysDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_InMemoryChannelKeysDecodeErrorZ *val = (LDKCResult_InMemoryChannelKeysDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *val = (LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -1989,87 +2723,6 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePaymentSend long err_ref = (long)err_var.inner & ~1; return err_ref; } -static jclass LDKNetAddress_IPv4_class = NULL; -static jmethodID LDKNetAddress_IPv4_meth = NULL; -static jclass LDKNetAddress_IPv6_class = NULL; -static jmethodID LDKNetAddress_IPv6_meth = NULL; -static jclass LDKNetAddress_OnionV2_class = NULL; -static jmethodID LDKNetAddress_OnionV2_meth = NULL; -static jclass LDKNetAddress_OnionV3_class = NULL; -static jmethodID LDKNetAddress_OnionV3_meth = NULL; -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_00024LDKNetAddress_init (JNIEnv *env, jclass clz) { - LDKNetAddress_IPv4_class = - (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKNetAddress$IPv4;")); - CHECK(LDKNetAddress_IPv4_class != NULL); - LDKNetAddress_IPv4_meth = (*env)->GetMethodID(env, LDKNetAddress_IPv4_class, "", "([BS)V"); - CHECK(LDKNetAddress_IPv4_meth != NULL); - LDKNetAddress_IPv6_class = - (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKNetAddress$IPv6;")); - CHECK(LDKNetAddress_IPv6_class != NULL); - LDKNetAddress_IPv6_meth = (*env)->GetMethodID(env, LDKNetAddress_IPv6_class, "", "([BS)V"); - CHECK(LDKNetAddress_IPv6_meth != NULL); - LDKNetAddress_OnionV2_class = - (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKNetAddress$OnionV2;")); - CHECK(LDKNetAddress_OnionV2_class != NULL); - LDKNetAddress_OnionV2_meth = (*env)->GetMethodID(env, LDKNetAddress_OnionV2_class, "", "([BS)V"); - CHECK(LDKNetAddress_OnionV2_meth != NULL); - LDKNetAddress_OnionV3_class = - (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKNetAddress$OnionV3;")); - CHECK(LDKNetAddress_OnionV3_class != NULL); - LDKNetAddress_OnionV3_meth = (*env)->GetMethodID(env, LDKNetAddress_OnionV3_class, "", "([BSBS)V"); - CHECK(LDKNetAddress_OnionV3_meth != NULL); -} -JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKNetAddress_1ref_1from_1ptr(JNIEnv *env, jclass clz, int64_t ptr) { - LDKNetAddress *obj = (LDKNetAddress*)ptr; - switch(obj->tag) { - case LDKNetAddress_IPv4: { - int8_tArray addr_arr = (*env)->NewByteArray(env, 4); - (*env)->SetByteArrayRegion(env, addr_arr, 0, 4, obj->i_pv4.addr.data); - return (*env)->NewObject(env, LDKNetAddress_IPv4_class, LDKNetAddress_IPv4_meth, addr_arr, obj->i_pv4.port); - } - case LDKNetAddress_IPv6: { - int8_tArray addr_arr = (*env)->NewByteArray(env, 16); - (*env)->SetByteArrayRegion(env, addr_arr, 0, 16, obj->i_pv6.addr.data); - return (*env)->NewObject(env, LDKNetAddress_IPv6_class, LDKNetAddress_IPv6_meth, addr_arr, obj->i_pv6.port); - } - case LDKNetAddress_OnionV2: { - int8_tArray addr_arr = (*env)->NewByteArray(env, 10); - (*env)->SetByteArrayRegion(env, addr_arr, 0, 10, obj->onion_v2.addr.data); - return (*env)->NewObject(env, LDKNetAddress_OnionV2_class, LDKNetAddress_OnionV2_meth, addr_arr, obj->onion_v2.port); - } - case LDKNetAddress_OnionV3: { - int8_tArray ed25519_pubkey_arr = (*env)->NewByteArray(env, 32); - (*env)->SetByteArrayRegion(env, ed25519_pubkey_arr, 0, 32, obj->onion_v3.ed25519_pubkey.data); - return (*env)->NewObject(env, LDKNetAddress_OnionV3_class, LDKNetAddress_OnionV3_meth, ed25519_pubkey_arr, obj->onion_v3.checksum, obj->onion_v3.version, obj->onion_v3.port); - } - default: abort(); - } -} -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1NetAddressZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { - LDKCVec_NetAddressZ *ret = MALLOC(sizeof(LDKCVec_NetAddressZ), "LDKCVec_NetAddressZ"); - ret->datalen = (*env)->GetArrayLength(env, elems); - if (ret->datalen == 0) { - ret->data = NULL; - } else { - ret->data = MALLOC(sizeof(LDKNetAddress) * ret->datalen, "LDKCVec_NetAddressZ Data"); - int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); - for (size_t i = 0; i < ret->datalen; i++) { - int64_t arr_elem = java_elems[i]; - LDKNetAddress arr_elem_conv = *(LDKNetAddress*)(((uint64_t)arr_elem) & ~1); - FREE((void*)arr_elem); - ret->data[i] = arr_elem_conv; - } - (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); - } - return (long)ret; -} -static inline LDKCVec_NetAddressZ CVec_NetAddressZ_clone(const LDKCVec_NetAddressZ *orig) { - LDKCVec_NetAddressZ ret = { .data = MALLOC(sizeof(LDKNetAddress) * orig->datalen, "LDKCVec_NetAddressZ clone bytes"), .datalen = orig->datalen }; - for (size_t i = 0; i < ret.datalen; i++) { - ret.data[i] = NetAddress_clone(&orig->data[i]); - } - return ret; -} JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1ChannelMonitorZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { LDKCVec_ChannelMonitorZ *ret = MALLOC(sizeof(LDKCVec_ChannelMonitorZ), "LDKCVec_ChannelMonitorZ"); ret->datalen = (*env)->GetArrayLength(env, elems); @@ -2336,6 +2989,25 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_BroadcasterInterface_1broadcas (this_arg_conv->broadcast_transaction)(this_arg_conv->this_arg, tx_ref); } +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelKeysDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_ChannelKeysDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelKeysDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelKeysDecodeErrorZ *val = (LDKCResult_ChannelKeysDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKChannelKeys* ret = MALLOC(sizeof(LDKChannelKeys), "LDKChannelKeys"); + *ret = ChannelKeys_clone(&(*val->contents.result)); + return (long)ret; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelKeysDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelKeysDecodeErrorZ *val = (LDKCResult_ChannelKeysDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} typedef struct LDKKeysInterface_JCalls { atomic_size_t refcnt; JavaVM *vm; @@ -2416,7 +3088,7 @@ LDKThirtyTwoBytes get_secure_random_bytes_jcall(const void* this_arg) { (*env)->GetByteArrayRegion(env, arg, 0, 32, arg_ref.data); return arg_ref; } -LDKCResult_ChanKeySignerDecodeErrorZ read_chan_signer_jcall(const void* this_arg, LDKu8slice reader) { +LDKCResult_ChannelKeysDecodeErrorZ read_chan_signer_jcall(const void* this_arg, LDKu8slice reader) { LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); @@ -2425,9 +3097,9 @@ LDKCResult_ChanKeySignerDecodeErrorZ read_chan_signer_jcall(const void* this_arg (*env)->SetByteArrayRegion(env, reader_arr, 0, reader_var.datalen, reader_var.data); jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - LDKCResult_ChanKeySignerDecodeErrorZ* ret = (LDKCResult_ChanKeySignerDecodeErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->read_chan_signer_meth, reader_arr); - LDKCResult_ChanKeySignerDecodeErrorZ ret_conv = *(LDKCResult_ChanKeySignerDecodeErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_ChanKeySignerDecodeErrorZ_clone((LDKCResult_ChanKeySignerDecodeErrorZ*)ret); + LDKCResult_ChannelKeysDecodeErrorZ* ret = (LDKCResult_ChannelKeysDecodeErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->read_chan_signer_meth, reader_arr); + LDKCResult_ChannelKeysDecodeErrorZ ret_conv = *(LDKCResult_ChannelKeysDecodeErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_ChannelKeysDecodeErrorZ_clone((LDKCResult_ChannelKeysDecodeErrorZ*)ret); return ret_conv; } static void* LDKKeysInterface_JCalls_clone(const void* this_arg) { @@ -2514,7 +3186,7 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_KeysInterface_1read_1chan_1 LDKu8slice reader_ref; reader_ref.datalen = (*env)->GetArrayLength(env, reader); reader_ref.data = (*env)->GetByteArrayElements (env, reader, NULL); - LDKCResult_ChanKeySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChanKeySignerDecodeErrorZ), "LDKCResult_ChanKeySignerDecodeErrorZ"); + LDKCResult_ChannelKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelKeysDecodeErrorZ), "LDKCResult_ChannelKeysDecodeErrorZ"); *ret_conv = (this_arg_conv->read_chan_signer)(this_arg_conv->this_arg, reader_ref); (*env)->ReleaseByteArrayElements(env, reader, (int8_t*)reader_ref.data, 0); return (long)ret_conv; @@ -2625,51 +3297,193 @@ static inline LDKLogger LDKLogger_init (JNIEnv *env, jclass clz, jobject o) { }; return ret; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKLogger_1new(JNIEnv *env, jclass clz, jobject o) { - LDKLogger *res_ptr = MALLOC(sizeof(LDKLogger), "LDKLogger"); - *res_ptr = LDKLogger_init(env, clz, o); - return (long)res_ptr; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKLogger_1new(JNIEnv *env, jclass clz, jobject o) { + LDKLogger *res_ptr = MALLOC(sizeof(LDKLogger), "LDKLogger"); + *res_ptr = LDKLogger_init(env, clz, o); + return (long)res_ptr; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelManagerZ_1new(JNIEnv *env, jclass clz, int8_tArray a, int64_t b) { + LDKC2Tuple_BlockHashChannelManagerZ* ret = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelManagerZ), "LDKC2Tuple_BlockHashChannelManagerZ"); + LDKThirtyTwoBytes a_ref; + CHECK((*env)->GetArrayLength(env, a) == 32); + (*env)->GetByteArrayRegion(env, a, 0, 32, a_ref.data); + ret->a = a_ref; + LDKChannelManager b_conv; + b_conv.inner = (void*)(b & (~1)); + b_conv.is_owned = (b & 1) || (b == 0); + // Warning: we need a move here but no clone is available for LDKChannelManager + ret->b = b_conv; + return (long)ret; +} +JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelManagerZ_1get_1a(JNIEnv *env, jclass clz, int64_t ptr) { + LDKC2Tuple_BlockHashChannelManagerZ *tuple = (LDKC2Tuple_BlockHashChannelManagerZ*)(ptr & ~1); + int8_tArray a_arr = (*env)->NewByteArray(env, 32); + (*env)->SetByteArrayRegion(env, a_arr, 0, 32, tuple->a.data); + return a_arr; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelManagerZ_1get_1b(JNIEnv *env, jclass clz, int64_t ptr) { + LDKC2Tuple_BlockHashChannelManagerZ *tuple = (LDKC2Tuple_BlockHashChannelManagerZ*)(ptr & ~1); + LDKChannelManager b_var = tuple->b; + CHECK((((long)b_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&b_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long b_ref = (long)b_var.inner & ~1; + return b_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *val = (LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + long res_ref = (long)(&(*val->contents.result)) | 1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *val = (LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SpendableOutputDescriptorDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SpendableOutputDescriptorDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_SpendableOutputDescriptorDecodeErrorZ *val = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + long res_ref = ((long)&(*val->contents.result)) | 1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SpendableOutputDescriptorDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_SpendableOutputDescriptorDecodeErrorZ *val = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InMemoryChannelKeysDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_InMemoryChannelKeysDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InMemoryChannelKeysDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_InMemoryChannelKeysDecodeErrorZ *val = (LDKCResult_InMemoryChannelKeysDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKInMemoryChannelKeys res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InMemoryChannelKeysDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_InMemoryChannelKeysDecodeErrorZ *val = (LDKCResult_InMemoryChannelKeysDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1RouteHopZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { + LDKCVec_RouteHopZ *ret = MALLOC(sizeof(LDKCVec_RouteHopZ), "LDKCVec_RouteHopZ"); + ret->datalen = (*env)->GetArrayLength(env, elems); + if (ret->datalen == 0) { + ret->data = NULL; + } else { + ret->data = MALLOC(sizeof(LDKRouteHop) * ret->datalen, "LDKCVec_RouteHopZ Data"); + int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); + for (size_t i = 0; i < ret->datalen; i++) { + int64_t arr_elem = java_elems[i]; + LDKRouteHop arr_elem_conv; + arr_elem_conv.inner = (void*)(arr_elem & (~1)); + arr_elem_conv.is_owned = (arr_elem & 1) || (arr_elem == 0); + arr_elem_conv = RouteHop_clone(&arr_elem_conv); + ret->data[i] = arr_elem_conv; + } + (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); + } + return (long)ret; +} +static inline LDKCVec_RouteHopZ CVec_RouteHopZ_clone(const LDKCVec_RouteHopZ *orig) { + LDKCVec_RouteHopZ ret = { .data = MALLOC(sizeof(LDKRouteHop) * orig->datalen, "LDKCVec_RouteHopZ clone bytes"), .datalen = orig->datalen }; + for (size_t i = 0; i < ret.datalen; i++) { + ret.data[i] = RouteHop_clone(&orig->data[i]); + } + return ret; +} +static inline LDKCVec_CVec_RouteHopZZ CVec_CVec_RouteHopZZ_clone(const LDKCVec_CVec_RouteHopZZ *orig) { + LDKCVec_CVec_RouteHopZZ ret = { .data = MALLOC(sizeof(LDKCVec_RouteHopZ) * orig->datalen, "LDKCVec_CVec_RouteHopZZ clone bytes"), .datalen = orig->datalen }; + for (size_t i = 0; i < ret.datalen; i++) { + ret.data[i] = CVec_RouteHopZ_clone(&orig->data[i]); + } + return ret; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RouteDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_RouteDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RouteDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_RouteDecodeErrorZ *val = (LDKCResult_RouteDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKRoute res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RouteDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_RouteDecodeErrorZ *val = (LDKCResult_RouteDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelManagerZ_1new(JNIEnv *env, jclass clz, int8_tArray a, int64_t b) { - LDKC2Tuple_BlockHashChannelManagerZ* ret = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelManagerZ), "LDKC2Tuple_BlockHashChannelManagerZ"); - LDKThirtyTwoBytes a_ref; - CHECK((*env)->GetArrayLength(env, a) == 32); - (*env)->GetByteArrayRegion(env, a, 0, 32, a_ref.data); - ret->a = a_ref; - LDKChannelManager b_conv; - b_conv.inner = (void*)(b & (~1)); - b_conv.is_owned = (b & 1) || (b == 0); - // Warning: we need a move here but no clone is available for LDKChannelManager - ret->b = b_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1RouteHintZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { + LDKCVec_RouteHintZ *ret = MALLOC(sizeof(LDKCVec_RouteHintZ), "LDKCVec_RouteHintZ"); + ret->datalen = (*env)->GetArrayLength(env, elems); + if (ret->datalen == 0) { + ret->data = NULL; + } else { + ret->data = MALLOC(sizeof(LDKRouteHint) * ret->datalen, "LDKCVec_RouteHintZ Data"); + int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); + for (size_t i = 0; i < ret->datalen; i++) { + int64_t arr_elem = java_elems[i]; + LDKRouteHint arr_elem_conv; + arr_elem_conv.inner = (void*)(arr_elem & (~1)); + arr_elem_conv.is_owned = (arr_elem & 1) || (arr_elem == 0); + arr_elem_conv = RouteHint_clone(&arr_elem_conv); + ret->data[i] = arr_elem_conv; + } + (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); + } return (long)ret; } -JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelManagerZ_1get_1a(JNIEnv *env, jclass clz, int64_t ptr) { - LDKC2Tuple_BlockHashChannelManagerZ *tuple = (LDKC2Tuple_BlockHashChannelManagerZ*)(ptr & ~1); - int8_tArray a_arr = (*env)->NewByteArray(env, 32); - (*env)->SetByteArrayRegion(env, a_arr, 0, 32, tuple->a.data); - return a_arr; -} -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelManagerZ_1get_1b(JNIEnv *env, jclass clz, int64_t ptr) { - LDKC2Tuple_BlockHashChannelManagerZ *tuple = (LDKC2Tuple_BlockHashChannelManagerZ*)(ptr & ~1); - LDKChannelManager b_var = tuple->b; - CHECK((((long)b_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&b_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long b_ref = (long)b_var.inner & ~1; - return b_ref; +static inline LDKCVec_RouteHintZ CVec_RouteHintZ_clone(const LDKCVec_RouteHintZ *orig) { + LDKCVec_RouteHintZ ret = { .data = MALLOC(sizeof(LDKRouteHint) * orig->datalen, "LDKCVec_RouteHintZ clone bytes"), .datalen = orig->datalen }; + for (size_t i = 0; i < ret.datalen; i++) { + ret.data[i] = RouteHint_clone(&orig->data[i]); + } + return ret; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RouteLightningErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_RouteLightningErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *val = (LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RouteLightningErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_RouteLightningErrorZ *val = (LDKCResult_RouteLightningErrorZ*)(arg & ~1); CHECK(val->result_ok); - long res_ref = (long)(&(*val->contents.result)) | 1; + LDKRoute res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *val = (LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RouteLightningErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_RouteLightningErrorZ *val = (LDKCResult_RouteLightningErrorZ*)(arg & ~1); CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); + LDKLightningError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long err_ref = (long)err_var.inner & ~1; @@ -2709,26 +3523,6 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CResult_1NetAdd long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1u64Z_1new(JNIEnv *env, jclass clz, int64_tArray elems) { - LDKCVec_u64Z *ret = MALLOC(sizeof(LDKCVec_u64Z), "LDKCVec_u64Z"); - ret->datalen = (*env)->GetArrayLength(env, elems); - if (ret->datalen == 0) { - ret->data = NULL; - } else { - ret->data = MALLOC(sizeof(uint64_t) * ret->datalen, "LDKCVec_u64Z Data"); - int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); - for (size_t i = 0; i < ret->datalen; i++) { - ret->data[i] = java_elems[i]; - } - (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); - } - return (long)ret; -} -static inline LDKCVec_u64Z CVec_u64Z_clone(const LDKCVec_u64Z *orig) { - LDKCVec_u64Z ret = { .data = MALLOC(sizeof(int64_t) * orig->datalen, "LDKCVec_u64Z clone bytes"), .datalen = orig->datalen }; - memcpy(ret.data, orig->data, sizeof(int64_t) * ret.datalen); - return ret; -} JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1UpdateAddHTLCZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { LDKCVec_UpdateAddHTLCZ *ret = MALLOC(sizeof(LDKCVec_UpdateAddHTLCZ), "LDKCVec_UpdateAddHTLCZ"); ret->datalen = (*env)->GetArrayLength(env, elems); @@ -2837,142 +3631,167 @@ static inline LDKCVec_UpdateFailMalformedHTLCZ CVec_UpdateFailMalformedHTLCZ_clo } return ret; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolLightningErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_boolLightningErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1AcceptChannelDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_AcceptChannelDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolLightningErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_boolLightningErrorZ *val = (LDKCResult_boolLightningErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1AcceptChannelDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_AcceptChannelDecodeErrorZ *val = (LDKCResult_AcceptChannelDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - return *val->contents.result; + LDKAcceptChannel res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolLightningErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_boolLightningErrorZ *val = (LDKCResult_boolLightningErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1AcceptChannelDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_AcceptChannelDecodeErrorZ *val = (LDKCResult_AcceptChannelDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); - LDKLightningError err_var = (*val->contents.err); + LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1new(JNIEnv *env, jclass clz, int64_t a, int64_t b, int64_t c) { - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ"); - LDKChannelAnnouncement a_conv; - a_conv.inner = (void*)(a & (~1)); - a_conv.is_owned = (a & 1) || (a == 0); - a_conv = ChannelAnnouncement_clone(&a_conv); - ret->a = a_conv; - LDKChannelUpdate b_conv; - b_conv.inner = (void*)(b & (~1)); - b_conv.is_owned = (b & 1) || (b == 0); - b_conv = ChannelUpdate_clone(&b_conv); - ret->b = b_conv; - LDKChannelUpdate c_conv; - c_conv.inner = (void*)(c & (~1)); - c_conv.is_owned = (c & 1) || (c == 0); - c_conv = ChannelUpdate_clone(&c_conv); - ret->c = c_conv; - return (long)ret; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1AnnouncementSignaturesDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_AnnouncementSignaturesDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1get_1a(JNIEnv *env, jclass clz, int64_t ptr) { - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *tuple = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(ptr & ~1); - LDKChannelAnnouncement a_var = tuple->a; - CHECK((((long)a_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&a_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long a_ref = (long)a_var.inner & ~1; - return a_ref; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1AnnouncementSignaturesDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_AnnouncementSignaturesDecodeErrorZ *val = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKAnnouncementSignatures res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1get_1b(JNIEnv *env, jclass clz, int64_t ptr) { - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *tuple = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(ptr & ~1); - LDKChannelUpdate b_var = tuple->b; - CHECK((((long)b_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&b_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long b_ref = (long)b_var.inner & ~1; - return b_ref; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1AnnouncementSignaturesDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_AnnouncementSignaturesDecodeErrorZ *val = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKC3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1get_1c(JNIEnv *env, jclass clz, int64_t ptr) { - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *tuple = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(ptr & ~1); - LDKChannelUpdate c_var = tuple->c; - CHECK((((long)c_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&c_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long c_ref = (long)c_var.inner & ~1; - return c_ref; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelReestablishDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_ChannelReestablishDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { - LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ *ret = MALLOC(sizeof(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ), "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ"); - ret->datalen = (*env)->GetArrayLength(env, elems); - if (ret->datalen == 0) { - ret->data = NULL; - } else { - ret->data = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ) * ret->datalen, "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ Data"); - int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); - for (size_t i = 0; i < ret->datalen; i++) { - int64_t arr_elem = java_elems[i]; - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ arr_elem_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(((uint64_t)arr_elem) & ~1); - FREE((void*)arr_elem); - ret->data[i] = arr_elem_conv; - } - (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); - } - return (long)ret; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelReestablishDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelReestablishDecodeErrorZ *val = (LDKCResult_ChannelReestablishDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKChannelReestablish res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1NodeAnnouncementZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { - LDKCVec_NodeAnnouncementZ *ret = MALLOC(sizeof(LDKCVec_NodeAnnouncementZ), "LDKCVec_NodeAnnouncementZ"); - ret->datalen = (*env)->GetArrayLength(env, elems); - if (ret->datalen == 0) { - ret->data = NULL; - } else { - ret->data = MALLOC(sizeof(LDKNodeAnnouncement) * ret->datalen, "LDKCVec_NodeAnnouncementZ Data"); - int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); - for (size_t i = 0; i < ret->datalen; i++) { - int64_t arr_elem = java_elems[i]; - LDKNodeAnnouncement arr_elem_conv; - arr_elem_conv.inner = (void*)(arr_elem & (~1)); - arr_elem_conv.is_owned = (arr_elem & 1) || (arr_elem == 0); - arr_elem_conv = NodeAnnouncement_clone(&arr_elem_conv); - ret->data[i] = arr_elem_conv; - } - (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); - } - return (long)ret; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelReestablishDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelReestablishDecodeErrorZ *val = (LDKCResult_ChannelReestablishDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ClosingSignedDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_ClosingSignedDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ClosingSignedDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ClosingSignedDecodeErrorZ *val = (LDKCResult_ClosingSignedDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKClosingSigned res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ClosingSignedDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ClosingSignedDecodeErrorZ *val = (LDKCResult_ClosingSignedDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CommitmentSignedDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_CommitmentSignedDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CommitmentSignedDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_CommitmentSignedDecodeErrorZ *val = (LDKCResult_CommitmentSignedDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKCommitmentSigned res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CommitmentSignedDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_CommitmentSignedDecodeErrorZ *val = (LDKCResult_CommitmentSignedDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingCreatedDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_FundingCreatedDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingCreatedDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_FundingCreatedDecodeErrorZ *val = (LDKCResult_FundingCreatedDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKFundingCreated res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -static inline LDKCVec_NodeAnnouncementZ CVec_NodeAnnouncementZ_clone(const LDKCVec_NodeAnnouncementZ *orig) { - LDKCVec_NodeAnnouncementZ ret = { .data = MALLOC(sizeof(LDKNodeAnnouncement) * orig->datalen, "LDKCVec_NodeAnnouncementZ clone bytes"), .datalen = orig->datalen }; - for (size_t i = 0; i < ret.datalen; i++) { - ret.data[i] = NodeAnnouncement_clone(&orig->data[i]); - } - return ret; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingCreatedDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_FundingCreatedDecodeErrorZ *val = (LDKCResult_FundingCreatedDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneLightningErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_NoneLightningErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingSignedDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_FundingSignedDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneLightningErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_NoneLightningErrorZ *val = (LDKCResult_NoneLightningErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingSignedDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_FundingSignedDecodeErrorZ *val = (LDKCResult_FundingSignedDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - return *val->contents.result; + LDKFundingSigned res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneLightningErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_NoneLightningErrorZ *val = (LDKCResult_NoneLightningErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingSignedDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_FundingSignedDecodeErrorZ *val = (LDKCResult_FundingSignedDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); - LDKLightningError err_var = (*val->contents.err); + LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelReestablishDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_ChannelReestablishDecodeErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingLockedDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_FundingLockedDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelReestablishDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_ChannelReestablishDecodeErrorZ *val = (LDKCResult_ChannelReestablishDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingLockedDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_FundingLockedDecodeErrorZ *val = (LDKCResult_FundingLockedDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKChannelReestablish res_var = (*val->contents.result); + LDKFundingLocked res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelReestablishDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_ChannelReestablishDecodeErrorZ *val = (LDKCResult_ChannelReestablishDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingLockedDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_FundingLockedDecodeErrorZ *val = (LDKCResult_FundingLockedDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -3001,20 +3820,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InitDecodeError long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PingDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_PingDecodeErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1OpenChannelDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_OpenChannelDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PingDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_PingDecodeErrorZ *val = (LDKCResult_PingDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1OpenChannelDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_OpenChannelDecodeErrorZ *val = (LDKCResult_OpenChannelDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKPing res_var = (*val->contents.result); + LDKOpenChannel res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PingDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_PingDecodeErrorZ *val = (LDKCResult_PingDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1OpenChannelDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_OpenChannelDecodeErrorZ *val = (LDKCResult_OpenChannelDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -3022,20 +3841,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PingDecodeError long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PongDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_PongDecodeErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RevokeAndACKDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_RevokeAndACKDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PongDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_PongDecodeErrorZ *val = (LDKCResult_PongDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RevokeAndACKDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_RevokeAndACKDecodeErrorZ *val = (LDKCResult_RevokeAndACKDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKPong res_var = (*val->contents.result); + LDKRevokeAndACK res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PongDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_PongDecodeErrorZ *val = (LDKCResult_PongDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RevokeAndACKDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_RevokeAndACKDecodeErrorZ *val = (LDKCResult_RevokeAndACKDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -3043,20 +3862,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PongDecodeError long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelAnnouncementDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ShutdownDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_ShutdownDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelAnnouncementDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *val = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ShutdownDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ShutdownDecodeErrorZ *val = (LDKCResult_ShutdownDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKUnsignedChannelAnnouncement res_var = (*val->contents.result); + LDKShutdown res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelAnnouncementDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *val = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ShutdownDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ShutdownDecodeErrorZ *val = (LDKCResult_ShutdownDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -3064,20 +3883,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannel long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelUpdateDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFailHTLCDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_UpdateFailHTLCDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelUpdateDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_UnsignedChannelUpdateDecodeErrorZ *val = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFailHTLCDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_UpdateFailHTLCDecodeErrorZ *val = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKUnsignedChannelUpdate res_var = (*val->contents.result); + LDKUpdateFailHTLC res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelUpdateDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_UnsignedChannelUpdateDecodeErrorZ *val = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFailHTLCDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_UpdateFailHTLCDecodeErrorZ *val = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -3085,20 +3904,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannel long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ErrorMessageDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_ErrorMessageDecodeErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFailMalformedHTLCDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ErrorMessageDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_ErrorMessageDecodeErrorZ *val = (LDKCResult_ErrorMessageDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFailMalformedHTLCDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *val = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKErrorMessage res_var = (*val->contents.result); + LDKUpdateFailMalformedHTLC res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ErrorMessageDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_ErrorMessageDecodeErrorZ *val = (LDKCResult_ErrorMessageDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFailMalformedHTLCDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *val = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -3106,20 +3925,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ErrorMessageDec long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedNodeAnnouncementDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFeeDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_UpdateFeeDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedNodeAnnouncementDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *val = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFeeDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_UpdateFeeDecodeErrorZ *val = (LDKCResult_UpdateFeeDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKUnsignedNodeAnnouncement res_var = (*val->contents.result); + LDKUpdateFee res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedNodeAnnouncementDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *val = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFeeDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_UpdateFeeDecodeErrorZ *val = (LDKCResult_UpdateFeeDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -3127,20 +3946,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedNodeAnn long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryShortChannelIdsDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_QueryShortChannelIdsDecodeErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFulfillHTLCDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryShortChannelIdsDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_QueryShortChannelIdsDecodeErrorZ *val = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFulfillHTLCDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_UpdateFulfillHTLCDecodeErrorZ *val = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKQueryShortChannelIds res_var = (*val->contents.result); + LDKUpdateFulfillHTLC res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryShortChannelIdsDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_QueryShortChannelIdsDecodeErrorZ *val = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFulfillHTLCDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_UpdateFulfillHTLCDecodeErrorZ *val = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -3148,20 +3967,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryShortChann long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyShortChannelIdsEndDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateAddHTLCDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_UpdateAddHTLCDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyShortChannelIdsEndDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *val = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateAddHTLCDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_UpdateAddHTLCDecodeErrorZ *val = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKReplyShortChannelIdsEnd res_var = (*val->contents.result); + LDKUpdateAddHTLC res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyShortChannelIdsEndDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *val = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateAddHTLCDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_UpdateAddHTLCDecodeErrorZ *val = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -3169,20 +3988,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyShortChann long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryChannelRangeDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_QueryChannelRangeDecodeErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PingDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_PingDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryChannelRangeDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_QueryChannelRangeDecodeErrorZ *val = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PingDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_PingDecodeErrorZ *val = (LDKCResult_PingDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKQueryChannelRange res_var = (*val->contents.result); + LDKPing res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryChannelRangeDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_QueryChannelRangeDecodeErrorZ *val = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PingDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_PingDecodeErrorZ *val = (LDKCResult_PingDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -3190,20 +4009,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryChannelRan long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyChannelRangeDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_ReplyChannelRangeDecodeErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PongDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_PongDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyChannelRangeDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_ReplyChannelRangeDecodeErrorZ *val = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PongDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_PongDecodeErrorZ *val = (LDKCResult_PongDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKReplyChannelRange res_var = (*val->contents.result); + LDKPong res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyChannelRangeDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_ReplyChannelRangeDecodeErrorZ *val = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PongDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_PongDecodeErrorZ *val = (LDKCResult_PongDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -3211,20 +4030,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyChannelRan long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1GossipTimestampFilterDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_GossipTimestampFilterDecodeErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelAnnouncementDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1GossipTimestampFilterDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_GossipTimestampFilterDecodeErrorZ *val = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelAnnouncementDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *val = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKGossipTimestampFilter res_var = (*val->contents.result); + LDKUnsignedChannelAnnouncement res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1GossipTimestampFilterDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_GossipTimestampFilterDecodeErrorZ *val = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelAnnouncementDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *val = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -3232,196 +4051,230 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1GossipTimestamp long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1u8ZPeerHandleErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_CVec_u8ZPeerHandleErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelAnnouncementDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_ChannelAnnouncementDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1u8ZPeerHandleErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_CVec_u8ZPeerHandleErrorZ *val = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelAnnouncementDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelAnnouncementDecodeErrorZ *val = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKCVec_u8Z res_var = (*val->contents.result); - int8_tArray res_arr = (*env)->NewByteArray(env, res_var.datalen); - (*env)->SetByteArrayRegion(env, res_arr, 0, res_var.datalen, res_var.data); - return res_arr; + LDKChannelAnnouncement res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1u8ZPeerHandleErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_CVec_u8ZPeerHandleErrorZ *val = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelAnnouncementDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelAnnouncementDecodeErrorZ *val = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); - LDKPeerHandleError err_var = (*val->contents.err); + LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePeerHandleErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_NonePeerHandleErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelUpdateDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePeerHandleErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_NonePeerHandleErrorZ *val = (LDKCResult_NonePeerHandleErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelUpdateDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_UnsignedChannelUpdateDecodeErrorZ *val = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - return *val->contents.result; + LDKUnsignedChannelUpdate res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePeerHandleErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_NonePeerHandleErrorZ *val = (LDKCResult_NonePeerHandleErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelUpdateDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_UnsignedChannelUpdateDecodeErrorZ *val = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); - LDKPeerHandleError err_var = (*val->contents.err); + LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolPeerHandleErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_boolPeerHandleErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelUpdateDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_ChannelUpdateDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolPeerHandleErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_boolPeerHandleErrorZ *val = (LDKCResult_boolPeerHandleErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelUpdateDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelUpdateDecodeErrorZ *val = (LDKCResult_ChannelUpdateDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - return *val->contents.result; + LDKChannelUpdate res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolPeerHandleErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_boolPeerHandleErrorZ *val = (LDKCResult_boolPeerHandleErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelUpdateDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ChannelUpdateDecodeErrorZ *val = (LDKCResult_ChannelUpdateDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); - LDKPeerHandleError err_var = (*val->contents.err); + LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SecretKeySecpErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_SecretKeySecpErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ErrorMessageDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_ErrorMessageDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SecretKeySecpErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_SecretKeySecpErrorZ *val = (LDKCResult_SecretKeySecpErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ErrorMessageDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ErrorMessageDecodeErrorZ *val = (LDKCResult_ErrorMessageDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - int8_tArray res_arr = (*env)->NewByteArray(env, 32); - (*env)->SetByteArrayRegion(env, res_arr, 0, 32, (*val->contents.result).bytes); - return res_arr; + LDKErrorMessage res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -JNIEXPORT jclass JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SecretKeySecpErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_SecretKeySecpErrorZ *val = (LDKCResult_SecretKeySecpErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ErrorMessageDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ErrorMessageDecodeErrorZ *val = (LDKCResult_ErrorMessageDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); - jclass err_conv = LDKSecp256k1Error_to_java(env, (*val->contents.err)); - return err_conv; + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PublicKeySecpErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_PublicKeySecpErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedNodeAnnouncementDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PublicKeySecpErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_PublicKeySecpErrorZ *val = (LDKCResult_PublicKeySecpErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedNodeAnnouncementDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *val = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - int8_tArray res_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, res_arr, 0, 33, (*val->contents.result).compressed_form); - return res_arr; + LDKUnsignedNodeAnnouncement res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -JNIEXPORT jclass JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PublicKeySecpErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_PublicKeySecpErrorZ *val = (LDKCResult_PublicKeySecpErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedNodeAnnouncementDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *val = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); - jclass err_conv = LDKSecp256k1Error_to_java(env, (*val->contents.err)); - return err_conv; + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_NodeAnnouncementDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_NodeAnnouncementDecodeErrorZ *val = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKNodeAnnouncement res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_NodeAnnouncementDecodeErrorZ *val = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryShortChannelIdsDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_QueryShortChannelIdsDecodeErrorZ*)arg)->result_ok; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryShortChannelIdsDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_QueryShortChannelIdsDecodeErrorZ *val = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKQueryShortChannelIds res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryShortChannelIdsDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_QueryShortChannelIdsDecodeErrorZ *val = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysSecpErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_TxCreationKeysSecpErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyShortChannelIdsEndDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysSecpErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_TxCreationKeysSecpErrorZ *val = (LDKCResult_TxCreationKeysSecpErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyShortChannelIdsEndDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *val = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKTxCreationKeys res_var = (*val->contents.result); + LDKReplyShortChannelIdsEnd res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -JNIEXPORT jclass JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysSecpErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_TxCreationKeysSecpErrorZ *val = (LDKCResult_TxCreationKeysSecpErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyShortChannelIdsEndDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *val = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); - jclass err_conv = LDKSecp256k1Error_to_java(env, (*val->contents.err)); - return err_conv; + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TrustedCommitmentTransactionNoneZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_TrustedCommitmentTransactionNoneZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryChannelRangeDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_QueryChannelRangeDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TrustedCommitmentTransactionNoneZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_TrustedCommitmentTransactionNoneZ *val = (LDKCResult_TrustedCommitmentTransactionNoneZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryChannelRangeDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_QueryChannelRangeDecodeErrorZ *val = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKTrustedCommitmentTransaction res_var = (*val->contents.result); + LDKQueryChannelRange res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TrustedCommitmentTransactionNoneZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_TrustedCommitmentTransactionNoneZ *val = (LDKCResult_TrustedCommitmentTransactionNoneZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryChannelRangeDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_QueryChannelRangeDecodeErrorZ *val = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); - return *val->contents.err; + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1SignatureZNoneZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_CVec_SignatureZNoneZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyChannelRangeDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_ReplyChannelRangeDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT jobjectArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1SignatureZNoneZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_CVec_SignatureZNoneZ *val = (LDKCResult_CVec_SignatureZNoneZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyChannelRangeDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ReplyChannelRangeDecodeErrorZ *val = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKCVec_SignatureZ res_var = (*val->contents.result); - jobjectArray res_arr = (*env)->NewObjectArray(env, res_var.datalen, arr_of_B_clz, NULL); - ; - for (size_t i = 0; i < res_var.datalen; i++) { - int8_tArray arr_conv_8_arr = (*env)->NewByteArray(env, 64); - (*env)->SetByteArrayRegion(env, arr_conv_8_arr, 0, 64, res_var.data[i].compact_form); - (*env)->SetObjectArrayElement(env, res_arr, i, arr_conv_8_arr); - } - return res_arr; + LDKReplyChannelRange res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1SignatureZNoneZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_CVec_SignatureZNoneZ *val = (LDKCResult_CVec_SignatureZNoneZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyChannelRangeDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_ReplyChannelRangeDecodeErrorZ *val = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); - return *val->contents.err; -} -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1RouteHopZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { - LDKCVec_RouteHopZ *ret = MALLOC(sizeof(LDKCVec_RouteHopZ), "LDKCVec_RouteHopZ"); - ret->datalen = (*env)->GetArrayLength(env, elems); - if (ret->datalen == 0) { - ret->data = NULL; - } else { - ret->data = MALLOC(sizeof(LDKRouteHop) * ret->datalen, "LDKCVec_RouteHopZ Data"); - int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); - for (size_t i = 0; i < ret->datalen; i++) { - int64_t arr_elem = java_elems[i]; - LDKRouteHop arr_elem_conv; - arr_elem_conv.inner = (void*)(arr_elem & (~1)); - arr_elem_conv.is_owned = (arr_elem & 1) || (arr_elem == 0); - arr_elem_conv = RouteHop_clone(&arr_elem_conv); - ret->data[i] = arr_elem_conv; - } - (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); - } - return (long)ret; -} -static inline LDKCVec_RouteHopZ CVec_RouteHopZ_clone(const LDKCVec_RouteHopZ *orig) { - LDKCVec_RouteHopZ ret = { .data = MALLOC(sizeof(LDKRouteHop) * orig->datalen, "LDKCVec_RouteHopZ clone bytes"), .datalen = orig->datalen }; - for (size_t i = 0; i < ret.datalen; i++) { - ret.data[i] = RouteHop_clone(&orig->data[i]); - } - return ret; -} -static inline LDKCVec_CVec_RouteHopZZ CVec_CVec_RouteHopZZ_clone(const LDKCVec_CVec_RouteHopZZ *orig) { - LDKCVec_CVec_RouteHopZZ ret = { .data = MALLOC(sizeof(LDKCVec_RouteHopZ) * orig->datalen, "LDKCVec_CVec_RouteHopZZ clone bytes"), .datalen = orig->datalen }; - for (size_t i = 0; i < ret.datalen; i++) { - ret.data[i] = CVec_RouteHopZ_clone(&orig->data[i]); - } - return ret; + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RouteDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_RouteDecodeErrorZ*)arg)->result_ok; +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1GossipTimestampFilterDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { + return ((LDKCResult_GossipTimestampFilterDecodeErrorZ*)arg)->result_ok; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RouteDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_RouteDecodeErrorZ *val = (LDKCResult_RouteDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1GossipTimestampFilterDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_GossipTimestampFilterDecodeErrorZ *val = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKRoute res_var = (*val->contents.result); + LDKGossipTimestampFilter res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RouteDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_RouteDecodeErrorZ *val = (LDKCResult_RouteDecodeErrorZ*)(arg & ~1); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1GossipTimestampFilterDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { + LDKCResult_GossipTimestampFilterDecodeErrorZ *val = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -3429,146 +4282,346 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RouteDecodeErro long err_ref = (long)err_var.inner & ~1; return err_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCVec_1RouteHintZ_1new(JNIEnv *env, jclass clz, int64_tArray elems) { - LDKCVec_RouteHintZ *ret = MALLOC(sizeof(LDKCVec_RouteHintZ), "LDKCVec_RouteHintZ"); - ret->datalen = (*env)->GetArrayLength(env, elems); - if (ret->datalen == 0) { - ret->data = NULL; - } else { - ret->data = MALLOC(sizeof(LDKRouteHint) * ret->datalen, "LDKCVec_RouteHintZ Data"); - int64_t *java_elems = (*env)->GetPrimitiveArrayCritical(env, elems, NULL); - for (size_t i = 0; i < ret->datalen; i++) { - int64_t arr_elem = java_elems[i]; - LDKRouteHint arr_elem_conv; - arr_elem_conv.inner = (void*)(arr_elem & (~1)); - arr_elem_conv.is_owned = (arr_elem & 1) || (arr_elem == 0); - arr_elem_conv = RouteHint_clone(&arr_elem_conv); - ret->data[i] = arr_elem_conv; - } - (*env)->ReleasePrimitiveArrayCritical(env, elems, java_elems, 0); +typedef struct LDKMessageSendEventsProvider_JCalls { + atomic_size_t refcnt; + JavaVM *vm; + jweak o; + jmethodID get_and_clear_pending_msg_events_meth; +} LDKMessageSendEventsProvider_JCalls; +static void LDKMessageSendEventsProvider_JCalls_free(void* this_arg) { + LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg; + if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + (*env)->DeleteWeakGlobalRef(env, j_calls->o); + FREE(j_calls); } - return (long)ret; } -static inline LDKCVec_RouteHintZ CVec_RouteHintZ_clone(const LDKCVec_RouteHintZ *orig) { - LDKCVec_RouteHintZ ret = { .data = MALLOC(sizeof(LDKRouteHint) * orig->datalen, "LDKCVec_RouteHintZ clone bytes"), .datalen = orig->datalen }; - for (size_t i = 0; i < ret.datalen; i++) { - ret.data[i] = RouteHint_clone(&orig->data[i]); - } +LDKCVec_MessageSendEventZ get_and_clear_pending_msg_events_jcall(const void* this_arg) { + LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + int64_tArray arg = (*env)->CallObjectMethod(env, obj, j_calls->get_and_clear_pending_msg_events_meth); + LDKCVec_MessageSendEventZ arg_constr; + arg_constr.datalen = (*env)->GetArrayLength(env, arg); + if (arg_constr.datalen > 0) + arg_constr.data = MALLOC(arg_constr.datalen * sizeof(LDKMessageSendEvent), "LDKCVec_MessageSendEventZ Elements"); + else + arg_constr.data = NULL; + int64_t* arg_vals = (*env)->GetLongArrayElements (env, arg, NULL); + for (size_t s = 0; s < arg_constr.datalen; s++) { + int64_t arr_conv_18 = arg_vals[s]; + LDKMessageSendEvent arr_conv_18_conv = *(LDKMessageSendEvent*)(((uint64_t)arr_conv_18) & ~1); + FREE((void*)arr_conv_18); + arg_constr.data[s] = arr_conv_18_conv; + } + (*env)->ReleaseLongArrayElements(env, arg, arg_vals, 0); + return arg_constr; +} +static void* LDKMessageSendEventsProvider_JCalls_clone(const void* this_arg) { + LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg; + atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); + return (void*) this_arg; +} +static inline LDKMessageSendEventsProvider LDKMessageSendEventsProvider_init (JNIEnv *env, jclass clz, jobject o) { + jclass c = (*env)->GetObjectClass(env, o); + CHECK(c != NULL); + LDKMessageSendEventsProvider_JCalls *calls = MALLOC(sizeof(LDKMessageSendEventsProvider_JCalls), "LDKMessageSendEventsProvider_JCalls"); + atomic_init(&calls->refcnt, 1); + DO_ASSERT((*env)->GetJavaVM(env, &calls->vm) == 0); + calls->o = (*env)->NewWeakGlobalRef(env, o); + calls->get_and_clear_pending_msg_events_meth = (*env)->GetMethodID(env, c, "get_and_clear_pending_msg_events", "()[J"); + CHECK(calls->get_and_clear_pending_msg_events_meth != NULL); + + LDKMessageSendEventsProvider ret = { + .this_arg = (void*) calls, + .get_and_clear_pending_msg_events = get_and_clear_pending_msg_events_jcall, + .free = LDKMessageSendEventsProvider_JCalls_free, + }; + return ret; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKMessageSendEventsProvider_1new(JNIEnv *env, jclass clz, jobject o) { + LDKMessageSendEventsProvider *res_ptr = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider"); + *res_ptr = LDKMessageSendEventsProvider_init(env, clz, o); + return (long)res_ptr; +} +JNIEXPORT int64_tArray JNICALL Java_org_ldk_impl_bindings_MessageSendEventsProvider_1get_1and_1clear_1pending_1msg_1events(JNIEnv *env, jclass clz, int64_t this_arg) { + LDKMessageSendEventsProvider* this_arg_conv = (LDKMessageSendEventsProvider*)this_arg; + LDKCVec_MessageSendEventZ ret_var = (this_arg_conv->get_and_clear_pending_msg_events)(this_arg_conv->this_arg); + int64_tArray ret_arr = (*env)->NewLongArray(env, ret_var.datalen); + int64_t *ret_arr_ptr = (*env)->GetPrimitiveArrayCritical(env, ret_arr, NULL); + for (size_t s = 0; s < ret_var.datalen; s++) { + LDKMessageSendEvent *arr_conv_18_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent"); + *arr_conv_18_copy = MessageSendEvent_clone(&ret_var.data[s]); + long arr_conv_18_ref = (long)arr_conv_18_copy; + ret_arr_ptr[s] = arr_conv_18_ref; + } + (*env)->ReleasePrimitiveArrayCritical(env, ret_arr, ret_arr_ptr, 0); + FREE(ret_var.data); + return ret_arr; +} + +typedef struct LDKEventsProvider_JCalls { + atomic_size_t refcnt; + JavaVM *vm; + jweak o; + jmethodID get_and_clear_pending_events_meth; +} LDKEventsProvider_JCalls; +static void LDKEventsProvider_JCalls_free(void* this_arg) { + LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg; + if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + (*env)->DeleteWeakGlobalRef(env, j_calls->o); + FREE(j_calls); + } +} +LDKCVec_EventZ get_and_clear_pending_events_jcall(const void* this_arg) { + LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + int64_tArray arg = (*env)->CallObjectMethod(env, obj, j_calls->get_and_clear_pending_events_meth); + LDKCVec_EventZ arg_constr; + arg_constr.datalen = (*env)->GetArrayLength(env, arg); + if (arg_constr.datalen > 0) + arg_constr.data = MALLOC(arg_constr.datalen * sizeof(LDKEvent), "LDKCVec_EventZ Elements"); + else + arg_constr.data = NULL; + int64_t* arg_vals = (*env)->GetLongArrayElements (env, arg, NULL); + for (size_t h = 0; h < arg_constr.datalen; h++) { + int64_t arr_conv_7 = arg_vals[h]; + LDKEvent arr_conv_7_conv = *(LDKEvent*)(((uint64_t)arr_conv_7) & ~1); + FREE((void*)arr_conv_7); + arg_constr.data[h] = arr_conv_7_conv; + } + (*env)->ReleaseLongArrayElements(env, arg, arg_vals, 0); + return arg_constr; +} +static void* LDKEventsProvider_JCalls_clone(const void* this_arg) { + LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg; + atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); + return (void*) this_arg; +} +static inline LDKEventsProvider LDKEventsProvider_init (JNIEnv *env, jclass clz, jobject o) { + jclass c = (*env)->GetObjectClass(env, o); + CHECK(c != NULL); + LDKEventsProvider_JCalls *calls = MALLOC(sizeof(LDKEventsProvider_JCalls), "LDKEventsProvider_JCalls"); + atomic_init(&calls->refcnt, 1); + DO_ASSERT((*env)->GetJavaVM(env, &calls->vm) == 0); + calls->o = (*env)->NewWeakGlobalRef(env, o); + calls->get_and_clear_pending_events_meth = (*env)->GetMethodID(env, c, "get_and_clear_pending_events", "()[J"); + CHECK(calls->get_and_clear_pending_events_meth != NULL); + + LDKEventsProvider ret = { + .this_arg = (void*) calls, + .get_and_clear_pending_events = get_and_clear_pending_events_jcall, + .free = LDKEventsProvider_JCalls_free, + }; return ret; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RouteLightningErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_RouteLightningErrorZ*)arg)->result_ok; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKEventsProvider_1new(JNIEnv *env, jclass clz, jobject o) { + LDKEventsProvider *res_ptr = MALLOC(sizeof(LDKEventsProvider), "LDKEventsProvider"); + *res_ptr = LDKEventsProvider_init(env, clz, o); + return (long)res_ptr; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RouteLightningErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_RouteLightningErrorZ *val = (LDKCResult_RouteLightningErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKRoute res_var = (*val->contents.result); - CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long res_ref = (long)res_var.inner & ~1; - return res_ref; +JNIEXPORT int64_tArray JNICALL Java_org_ldk_impl_bindings_EventsProvider_1get_1and_1clear_1pending_1events(JNIEnv *env, jclass clz, int64_t this_arg) { + LDKEventsProvider* this_arg_conv = (LDKEventsProvider*)this_arg; + LDKCVec_EventZ ret_var = (this_arg_conv->get_and_clear_pending_events)(this_arg_conv->this_arg); + int64_tArray ret_arr = (*env)->NewLongArray(env, ret_var.datalen); + int64_t *ret_arr_ptr = (*env)->GetPrimitiveArrayCritical(env, ret_arr, NULL); + for (size_t h = 0; h < ret_var.datalen; h++) { + LDKEvent *arr_conv_7_copy = MALLOC(sizeof(LDKEvent), "LDKEvent"); + *arr_conv_7_copy = Event_clone(&ret_var.data[h]); + long arr_conv_7_ref = (long)arr_conv_7_copy; + ret_arr_ptr[h] = arr_conv_7_ref; + } + (*env)->ReleasePrimitiveArrayCritical(env, ret_arr, ret_arr_ptr, 0); + FREE(ret_var.data); + return ret_arr; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RouteLightningErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_RouteLightningErrorZ *val = (LDKCResult_RouteLightningErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKLightningError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; + +typedef struct LDKAccess_JCalls { + atomic_size_t refcnt; + JavaVM *vm; + jweak o; + jmethodID get_utxo_meth; +} LDKAccess_JCalls; +static void LDKAccess_JCalls_free(void* this_arg) { + LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) this_arg; + if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + (*env)->DeleteWeakGlobalRef(env, j_calls->o); + FREE(j_calls); + } } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RoutingFeesDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_RoutingFeesDecodeErrorZ*)arg)->result_ok; +LDKCResult_TxOutAccessErrorZ get_utxo_jcall(const void* this_arg, const uint8_t (* genesis_hash)[32], uint64_t short_channel_id) { + LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + int8_tArray genesis_hash_arr = (*env)->NewByteArray(env, 32); + (*env)->SetByteArrayRegion(env, genesis_hash_arr, 0, 32, *genesis_hash); + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + LDKCResult_TxOutAccessErrorZ* ret = (LDKCResult_TxOutAccessErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->get_utxo_meth, genesis_hash_arr, short_channel_id); + LDKCResult_TxOutAccessErrorZ ret_conv = *(LDKCResult_TxOutAccessErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_TxOutAccessErrorZ_clone((LDKCResult_TxOutAccessErrorZ*)ret); + return ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RoutingFeesDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_RoutingFeesDecodeErrorZ *val = (LDKCResult_RoutingFeesDecodeErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKRoutingFees res_var = (*val->contents.result); - CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long res_ref = (long)res_var.inner & ~1; - return res_ref; +static void* LDKAccess_JCalls_clone(const void* this_arg) { + LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) this_arg; + atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); + return (void*) this_arg; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RoutingFeesDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_RoutingFeesDecodeErrorZ *val = (LDKCResult_RoutingFeesDecodeErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; +static inline LDKAccess LDKAccess_init (JNIEnv *env, jclass clz, jobject o) { + jclass c = (*env)->GetObjectClass(env, o); + CHECK(c != NULL); + LDKAccess_JCalls *calls = MALLOC(sizeof(LDKAccess_JCalls), "LDKAccess_JCalls"); + atomic_init(&calls->refcnt, 1); + DO_ASSERT((*env)->GetJavaVM(env, &calls->vm) == 0); + calls->o = (*env)->NewWeakGlobalRef(env, o); + calls->get_utxo_meth = (*env)->GetMethodID(env, c, "get_utxo", "([BJ)J"); + CHECK(calls->get_utxo_meth != NULL); + + LDKAccess ret = { + .this_arg = (void*) calls, + .get_utxo = get_utxo_jcall, + .free = LDKAccess_JCalls_free, + }; + return ret; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementInfoDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)arg)->result_ok; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKAccess_1new(JNIEnv *env, jclass clz, jobject o) { + LDKAccess *res_ptr = MALLOC(sizeof(LDKAccess), "LDKAccess"); + *res_ptr = LDKAccess_init(env, clz, o); + return (long)res_ptr; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementInfoDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_NodeAnnouncementInfoDecodeErrorZ *val = (LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKNodeAnnouncementInfo res_var = (*val->contents.result); - CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long res_ref = (long)res_var.inner & ~1; - return res_ref; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Access_1get_1utxo(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray genesis_hash, int64_t short_channel_id) { + LDKAccess* this_arg_conv = (LDKAccess*)this_arg; + unsigned char genesis_hash_arr[32]; + CHECK((*env)->GetArrayLength(env, genesis_hash) == 32); + (*env)->GetByteArrayRegion(env, genesis_hash, 0, 32, genesis_hash_arr); + unsigned char (*genesis_hash_ref)[32] = &genesis_hash_arr; + LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ"); + *ret_conv = (this_arg_conv->get_utxo)(this_arg_conv->this_arg, genesis_hash_ref, short_channel_id); + return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementInfoDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_NodeAnnouncementInfoDecodeErrorZ *val = (LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; + +typedef struct LDKFilter_JCalls { + atomic_size_t refcnt; + JavaVM *vm; + jweak o; + jmethodID register_tx_meth; + jmethodID register_output_meth; +} LDKFilter_JCalls; +static void LDKFilter_JCalls_free(void* this_arg) { + LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg; + if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + (*env)->DeleteWeakGlobalRef(env, j_calls->o); + FREE(j_calls); + } } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeInfoDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_NodeInfoDecodeErrorZ*)arg)->result_ok; +void register_tx_jcall(const void* this_arg, const uint8_t (* txid)[32], LDKu8slice script_pubkey) { + LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + int8_tArray txid_arr = (*env)->NewByteArray(env, 32); + (*env)->SetByteArrayRegion(env, txid_arr, 0, 32, *txid); + LDKu8slice script_pubkey_var = script_pubkey; + int8_tArray script_pubkey_arr = (*env)->NewByteArray(env, script_pubkey_var.datalen); + (*env)->SetByteArrayRegion(env, script_pubkey_arr, 0, script_pubkey_var.datalen, script_pubkey_var.data); + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + return (*env)->CallVoidMethod(env, obj, j_calls->register_tx_meth, txid_arr, script_pubkey_arr); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeInfoDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_NodeInfoDecodeErrorZ *val = (LDKCResult_NodeInfoDecodeErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKNodeInfo res_var = (*val->contents.result); - CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long res_ref = (long)res_var.inner & ~1; - return res_ref; +void register_output_jcall(const void* this_arg, const LDKOutPoint * outpoint, LDKu8slice script_pubkey) { + LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + LDKOutPoint outpoint_var = *outpoint; + outpoint_var = OutPoint_clone(outpoint); + CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long outpoint_ref = (long)outpoint_var.inner; + if (outpoint_var.is_owned) { + outpoint_ref |= 1; + } + LDKu8slice script_pubkey_var = script_pubkey; + int8_tArray script_pubkey_arr = (*env)->NewByteArray(env, script_pubkey_var.datalen); + (*env)->SetByteArrayRegion(env, script_pubkey_arr, 0, script_pubkey_var.datalen, script_pubkey_var.data); + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + return (*env)->CallVoidMethod(env, obj, j_calls->register_output_meth, outpoint_ref, script_pubkey_arr); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeInfoDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_NodeInfoDecodeErrorZ *val = (LDKCResult_NodeInfoDecodeErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; +static void* LDKFilter_JCalls_clone(const void* this_arg) { + LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg; + atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); + return (void*) this_arg; } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetworkGraphDecodeErrorZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) { - return ((LDKCResult_NetworkGraphDecodeErrorZ*)arg)->result_ok; +static inline LDKFilter LDKFilter_init (JNIEnv *env, jclass clz, jobject o) { + jclass c = (*env)->GetObjectClass(env, o); + CHECK(c != NULL); + LDKFilter_JCalls *calls = MALLOC(sizeof(LDKFilter_JCalls), "LDKFilter_JCalls"); + atomic_init(&calls->refcnt, 1); + DO_ASSERT((*env)->GetJavaVM(env, &calls->vm) == 0); + calls->o = (*env)->NewWeakGlobalRef(env, o); + calls->register_tx_meth = (*env)->GetMethodID(env, c, "register_tx", "([B[B)V"); + CHECK(calls->register_tx_meth != NULL); + calls->register_output_meth = (*env)->GetMethodID(env, c, "register_output", "(J[B)V"); + CHECK(calls->register_output_meth != NULL); + + LDKFilter ret = { + .this_arg = (void*) calls, + .register_tx = register_tx_jcall, + .register_output = register_output_jcall, + .free = LDKFilter_JCalls_free, + }; + return ret; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetworkGraphDecodeErrorZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_NetworkGraphDecodeErrorZ *val = (LDKCResult_NetworkGraphDecodeErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKNetworkGraph res_var = (*val->contents.result); - CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long res_ref = (long)res_var.inner & ~1; - return res_ref; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKFilter_1new(JNIEnv *env, jclass clz, jobject o) { + LDKFilter *res_ptr = MALLOC(sizeof(LDKFilter), "LDKFilter"); + *res_ptr = LDKFilter_init(env, clz, o); + return (long)res_ptr; +} +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Filter_1register_1tx(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray txid, int8_tArray script_pubkey) { + LDKFilter* this_arg_conv = (LDKFilter*)this_arg; + unsigned char txid_arr[32]; + CHECK((*env)->GetArrayLength(env, txid) == 32); + (*env)->GetByteArrayRegion(env, txid, 0, 32, txid_arr); + unsigned char (*txid_ref)[32] = &txid_arr; + LDKu8slice script_pubkey_ref; + script_pubkey_ref.datalen = (*env)->GetArrayLength(env, script_pubkey); + script_pubkey_ref.data = (*env)->GetByteArrayElements (env, script_pubkey, NULL); + (this_arg_conv->register_tx)(this_arg_conv->this_arg, txid_ref, script_pubkey_ref); + (*env)->ReleaseByteArrayElements(env, script_pubkey, (int8_t*)script_pubkey_ref.data, 0); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetworkGraphDecodeErrorZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) { - LDKCResult_NetworkGraphDecodeErrorZ *val = (LDKCResult_NetworkGraphDecodeErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Filter_1register_1output(JNIEnv *env, jclass clz, int64_t this_arg, int64_t outpoint, int8_tArray script_pubkey) { + LDKFilter* this_arg_conv = (LDKFilter*)this_arg; + LDKOutPoint outpoint_conv; + outpoint_conv.inner = (void*)(outpoint & (~1)); + outpoint_conv.is_owned = false; + LDKu8slice script_pubkey_ref; + script_pubkey_ref.datalen = (*env)->GetArrayLength(env, script_pubkey); + script_pubkey_ref.data = (*env)->GetByteArrayElements (env, script_pubkey, NULL); + (this_arg_conv->register_output)(this_arg_conv->this_arg, &outpoint_conv, script_pubkey_ref); + (*env)->ReleaseByteArrayElements(env, script_pubkey, (int8_t*)script_pubkey_ref.data, 0); } -typedef struct LDKMessageSendEventsProvider_JCalls { + +typedef struct LDKPersist_JCalls { atomic_size_t refcnt; JavaVM *vm; jweak o; - jmethodID get_and_clear_pending_msg_events_meth; -} LDKMessageSendEventsProvider_JCalls; -static void LDKMessageSendEventsProvider_JCalls_free(void* this_arg) { - LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg; + jmethodID persist_new_channel_meth; + jmethodID update_persisted_channel_meth; +} LDKPersist_JCalls; +static void LDKPersist_JCalls_free(void* this_arg) { + LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg; if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); @@ -3576,80 +4629,154 @@ static void LDKMessageSendEventsProvider_JCalls_free(void* this_arg) { FREE(j_calls); } } -LDKCVec_MessageSendEventZ get_and_clear_pending_msg_events_jcall(const void* this_arg) { - LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg; +LDKCResult_NoneChannelMonitorUpdateErrZ persist_new_channel_jcall(const void* this_arg, LDKOutPoint id, const LDKChannelMonitor * data) { + LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + LDKOutPoint id_var = id; + CHECK((((long)id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long id_ref = (long)id_var.inner; + if (id_var.is_owned) { + id_ref |= 1; + } + LDKChannelMonitor data_var = *data; + data_var = ChannelMonitor_clone(data); + CHECK((((long)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long data_ref = (long)data_var.inner; + if (data_var.is_owned) { + data_ref |= 1; + } jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - int64_tArray arg = (*env)->CallObjectMethod(env, obj, j_calls->get_and_clear_pending_msg_events_meth); - LDKCVec_MessageSendEventZ arg_constr; - arg_constr.datalen = (*env)->GetArrayLength(env, arg); - if (arg_constr.datalen > 0) - arg_constr.data = MALLOC(arg_constr.datalen * sizeof(LDKMessageSendEvent), "LDKCVec_MessageSendEventZ Elements"); - else - arg_constr.data = NULL; - int64_t* arg_vals = (*env)->GetLongArrayElements (env, arg, NULL); - for (size_t s = 0; s < arg_constr.datalen; s++) { - int64_t arr_conv_18 = arg_vals[s]; - LDKMessageSendEvent arr_conv_18_conv = *(LDKMessageSendEvent*)(((uint64_t)arr_conv_18) & ~1); - FREE((void*)arr_conv_18); - arg_constr.data[s] = arr_conv_18_conv; + LDKCResult_NoneChannelMonitorUpdateErrZ* ret = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(*env)->CallLongMethod(env, obj, j_calls->persist_new_channel_meth, id_ref, data_ref); + LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone((LDKCResult_NoneChannelMonitorUpdateErrZ*)ret); + return ret_conv; +} +LDKCResult_NoneChannelMonitorUpdateErrZ update_persisted_channel_jcall(const void* this_arg, LDKOutPoint id, const LDKChannelMonitorUpdate * update, const LDKChannelMonitor * data) { + LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + LDKOutPoint id_var = id; + CHECK((((long)id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long id_ref = (long)id_var.inner; + if (id_var.is_owned) { + id_ref |= 1; } - (*env)->ReleaseLongArrayElements(env, arg, arg_vals, 0); - return arg_constr; + LDKChannelMonitorUpdate update_var = *update; + update_var = ChannelMonitorUpdate_clone(update); + CHECK((((long)update_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&update_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long update_ref = (long)update_var.inner; + if (update_var.is_owned) { + update_ref |= 1; + } + LDKChannelMonitor data_var = *data; + data_var = ChannelMonitor_clone(data); + CHECK((((long)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long data_ref = (long)data_var.inner; + if (data_var.is_owned) { + data_ref |= 1; + } + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + LDKCResult_NoneChannelMonitorUpdateErrZ* ret = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(*env)->CallLongMethod(env, obj, j_calls->update_persisted_channel_meth, id_ref, update_ref, data_ref); + LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone((LDKCResult_NoneChannelMonitorUpdateErrZ*)ret); + return ret_conv; } -static void* LDKMessageSendEventsProvider_JCalls_clone(const void* this_arg) { - LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg; +static void* LDKPersist_JCalls_clone(const void* this_arg) { + LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg; atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); return (void*) this_arg; } -static inline LDKMessageSendEventsProvider LDKMessageSendEventsProvider_init (JNIEnv *env, jclass clz, jobject o) { +static inline LDKPersist LDKPersist_init (JNIEnv *env, jclass clz, jobject o) { jclass c = (*env)->GetObjectClass(env, o); CHECK(c != NULL); - LDKMessageSendEventsProvider_JCalls *calls = MALLOC(sizeof(LDKMessageSendEventsProvider_JCalls), "LDKMessageSendEventsProvider_JCalls"); + LDKPersist_JCalls *calls = MALLOC(sizeof(LDKPersist_JCalls), "LDKPersist_JCalls"); atomic_init(&calls->refcnt, 1); DO_ASSERT((*env)->GetJavaVM(env, &calls->vm) == 0); calls->o = (*env)->NewWeakGlobalRef(env, o); - calls->get_and_clear_pending_msg_events_meth = (*env)->GetMethodID(env, c, "get_and_clear_pending_msg_events", "()[J"); - CHECK(calls->get_and_clear_pending_msg_events_meth != NULL); + calls->persist_new_channel_meth = (*env)->GetMethodID(env, c, "persist_new_channel", "(JJ)J"); + CHECK(calls->persist_new_channel_meth != NULL); + calls->update_persisted_channel_meth = (*env)->GetMethodID(env, c, "update_persisted_channel", "(JJJ)J"); + CHECK(calls->update_persisted_channel_meth != NULL); - LDKMessageSendEventsProvider ret = { + LDKPersist ret = { .this_arg = (void*) calls, - .get_and_clear_pending_msg_events = get_and_clear_pending_msg_events_jcall, - .free = LDKMessageSendEventsProvider_JCalls_free, + .persist_new_channel = persist_new_channel_jcall, + .update_persisted_channel = update_persisted_channel_jcall, + .free = LDKPersist_JCalls_free, }; return ret; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKMessageSendEventsProvider_1new(JNIEnv *env, jclass clz, jobject o) { - LDKMessageSendEventsProvider *res_ptr = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider"); - *res_ptr = LDKMessageSendEventsProvider_init(env, clz, o); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKPersist_1new(JNIEnv *env, jclass clz, jobject o) { + LDKPersist *res_ptr = MALLOC(sizeof(LDKPersist), "LDKPersist"); + *res_ptr = LDKPersist_init(env, clz, o); return (long)res_ptr; } -JNIEXPORT int64_tArray JNICALL Java_org_ldk_impl_bindings_MessageSendEventsProvider_1get_1and_1clear_1pending_1msg_1events(JNIEnv *env, jclass clz, int64_t this_arg) { - LDKMessageSendEventsProvider* this_arg_conv = (LDKMessageSendEventsProvider*)this_arg; - LDKCVec_MessageSendEventZ ret_var = (this_arg_conv->get_and_clear_pending_msg_events)(this_arg_conv->this_arg); - int64_tArray ret_arr = (*env)->NewLongArray(env, ret_var.datalen); - int64_t *ret_arr_ptr = (*env)->GetPrimitiveArrayCritical(env, ret_arr, NULL); - for (size_t s = 0; s < ret_var.datalen; s++) { - LDKMessageSendEvent *arr_conv_18_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent"); - *arr_conv_18_copy = MessageSendEvent_clone(&ret_var.data[s]); - long arr_conv_18_ref = (long)arr_conv_18_copy; - ret_arr_ptr[s] = arr_conv_18_ref; - } - (*env)->ReleasePrimitiveArrayCritical(env, ret_arr, ret_arr_ptr, 0); - FREE(ret_var.data); - return ret_arr; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Persist_1persist_1new_1channel(JNIEnv *env, jclass clz, int64_t this_arg, int64_t id, int64_t data) { + LDKPersist* this_arg_conv = (LDKPersist*)this_arg; + LDKOutPoint id_conv; + id_conv.inner = (void*)(id & (~1)); + id_conv.is_owned = (id & 1) || (id == 0); + id_conv = OutPoint_clone(&id_conv); + LDKChannelMonitor data_conv; + data_conv.inner = (void*)(data & (~1)); + data_conv.is_owned = false; + LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ"); + *ret_conv = (this_arg_conv->persist_new_channel)(this_arg_conv->this_arg, id_conv, &data_conv); + return (long)ret_conv; } -typedef struct LDKEventsProvider_JCalls { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Persist_1update_1persisted_1channel(JNIEnv *env, jclass clz, int64_t this_arg, int64_t id, int64_t update, int64_t data) { + LDKPersist* this_arg_conv = (LDKPersist*)this_arg; + LDKOutPoint id_conv; + id_conv.inner = (void*)(id & (~1)); + id_conv.is_owned = (id & 1) || (id == 0); + id_conv = OutPoint_clone(&id_conv); + LDKChannelMonitorUpdate update_conv; + update_conv.inner = (void*)(update & (~1)); + update_conv.is_owned = false; + LDKChannelMonitor data_conv; + data_conv.inner = (void*)(data & (~1)); + data_conv.is_owned = false; + LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ"); + *ret_conv = (this_arg_conv->update_persisted_channel)(this_arg_conv->this_arg, id_conv, &update_conv, &data_conv); + return (long)ret_conv; +} + +typedef struct LDKChannelMessageHandler_JCalls { atomic_size_t refcnt; JavaVM *vm; jweak o; - jmethodID get_and_clear_pending_events_meth; -} LDKEventsProvider_JCalls; -static void LDKEventsProvider_JCalls_free(void* this_arg) { - LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg; + LDKMessageSendEventsProvider_JCalls* MessageSendEventsProvider; + jmethodID handle_open_channel_meth; + jmethodID handle_accept_channel_meth; + jmethodID handle_funding_created_meth; + jmethodID handle_funding_signed_meth; + jmethodID handle_funding_locked_meth; + jmethodID handle_shutdown_meth; + jmethodID handle_closing_signed_meth; + jmethodID handle_update_add_htlc_meth; + jmethodID handle_update_fulfill_htlc_meth; + jmethodID handle_update_fail_htlc_meth; + jmethodID handle_update_fail_malformed_htlc_meth; + jmethodID handle_commitment_signed_meth; + jmethodID handle_revoke_and_ack_meth; + jmethodID handle_update_fee_meth; + jmethodID handle_announcement_signatures_meth; + jmethodID peer_disconnected_meth; + jmethodID peer_connected_meth; + jmethodID handle_channel_reestablish_meth; + jmethodID handle_error_meth; +} LDKChannelMessageHandler_JCalls; +static void LDKChannelMessageHandler_JCalls_free(void* this_arg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); @@ -3657,405 +4784,671 @@ static void LDKEventsProvider_JCalls_free(void* this_arg) { FREE(j_calls); } } -LDKCVec_EventZ get_and_clear_pending_events_jcall(const void* this_arg) { - LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg; +void handle_open_channel_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKInitFeatures their_features, const LDKOpenChannel * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKInitFeatures their_features_var = their_features; + CHECK((((long)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long their_features_ref = (long)their_features_var.inner; + if (their_features_var.is_owned) { + their_features_ref |= 1; + } + LDKOpenChannel msg_var = *msg; + msg_var = OpenChannel_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + return (*env)->CallVoidMethod(env, obj, j_calls->handle_open_channel_meth, their_node_id_arr, their_features_ref, msg_ref); +} +void handle_accept_channel_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKInitFeatures their_features, const LDKAcceptChannel * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKInitFeatures their_features_var = their_features; + CHECK((((long)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long their_features_ref = (long)their_features_var.inner; + if (their_features_var.is_owned) { + their_features_ref |= 1; + } + LDKAcceptChannel msg_var = *msg; + msg_var = AcceptChannel_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + return (*env)->CallVoidMethod(env, obj, j_calls->handle_accept_channel_meth, their_node_id_arr, their_features_ref, msg_ref); +} +void handle_funding_created_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKFundingCreated * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKFundingCreated msg_var = *msg; + msg_var = FundingCreated_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - int64_tArray arg = (*env)->CallObjectMethod(env, obj, j_calls->get_and_clear_pending_events_meth); - LDKCVec_EventZ arg_constr; - arg_constr.datalen = (*env)->GetArrayLength(env, arg); - if (arg_constr.datalen > 0) - arg_constr.data = MALLOC(arg_constr.datalen * sizeof(LDKEvent), "LDKCVec_EventZ Elements"); - else - arg_constr.data = NULL; - int64_t* arg_vals = (*env)->GetLongArrayElements (env, arg, NULL); - for (size_t h = 0; h < arg_constr.datalen; h++) { - int64_t arr_conv_7 = arg_vals[h]; - LDKEvent arr_conv_7_conv = *(LDKEvent*)(((uint64_t)arr_conv_7) & ~1); - FREE((void*)arr_conv_7); - arg_constr.data[h] = arr_conv_7_conv; - } - (*env)->ReleaseLongArrayElements(env, arg, arg_vals, 0); - return arg_constr; -} -static void* LDKEventsProvider_JCalls_clone(const void* this_arg) { - LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg; - atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); - return (void*) this_arg; -} -static inline LDKEventsProvider LDKEventsProvider_init (JNIEnv *env, jclass clz, jobject o) { - jclass c = (*env)->GetObjectClass(env, o); - CHECK(c != NULL); - LDKEventsProvider_JCalls *calls = MALLOC(sizeof(LDKEventsProvider_JCalls), "LDKEventsProvider_JCalls"); - atomic_init(&calls->refcnt, 1); - DO_ASSERT((*env)->GetJavaVM(env, &calls->vm) == 0); - calls->o = (*env)->NewWeakGlobalRef(env, o); - calls->get_and_clear_pending_events_meth = (*env)->GetMethodID(env, c, "get_and_clear_pending_events", "()[J"); - CHECK(calls->get_and_clear_pending_events_meth != NULL); - - LDKEventsProvider ret = { - .this_arg = (void*) calls, - .get_and_clear_pending_events = get_and_clear_pending_events_jcall, - .free = LDKEventsProvider_JCalls_free, - }; - return ret; -} -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKEventsProvider_1new(JNIEnv *env, jclass clz, jobject o) { - LDKEventsProvider *res_ptr = MALLOC(sizeof(LDKEventsProvider), "LDKEventsProvider"); - *res_ptr = LDKEventsProvider_init(env, clz, o); - return (long)res_ptr; + return (*env)->CallVoidMethod(env, obj, j_calls->handle_funding_created_meth, their_node_id_arr, msg_ref); } -JNIEXPORT int64_tArray JNICALL Java_org_ldk_impl_bindings_EventsProvider_1get_1and_1clear_1pending_1events(JNIEnv *env, jclass clz, int64_t this_arg) { - LDKEventsProvider* this_arg_conv = (LDKEventsProvider*)this_arg; - LDKCVec_EventZ ret_var = (this_arg_conv->get_and_clear_pending_events)(this_arg_conv->this_arg); - int64_tArray ret_arr = (*env)->NewLongArray(env, ret_var.datalen); - int64_t *ret_arr_ptr = (*env)->GetPrimitiveArrayCritical(env, ret_arr, NULL); - for (size_t h = 0; h < ret_var.datalen; h++) { - LDKEvent *arr_conv_7_copy = MALLOC(sizeof(LDKEvent), "LDKEvent"); - *arr_conv_7_copy = Event_clone(&ret_var.data[h]); - long arr_conv_7_ref = (long)arr_conv_7_copy; - ret_arr_ptr[h] = arr_conv_7_ref; +void handle_funding_signed_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKFundingSigned * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKFundingSigned msg_var = *msg; + msg_var = FundingSigned_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; } - (*env)->ReleasePrimitiveArrayCritical(env, ret_arr, ret_arr_ptr, 0); - FREE(ret_var.data); - return ret_arr; + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + return (*env)->CallVoidMethod(env, obj, j_calls->handle_funding_signed_meth, their_node_id_arr, msg_ref); } - -typedef struct LDKAccess_JCalls { - atomic_size_t refcnt; - JavaVM *vm; - jweak o; - jmethodID get_utxo_meth; -} LDKAccess_JCalls; -static void LDKAccess_JCalls_free(void* this_arg) { - LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) this_arg; - if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - (*env)->DeleteWeakGlobalRef(env, j_calls->o); - FREE(j_calls); +void handle_funding_locked_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKFundingLocked * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKFundingLocked msg_var = *msg; + msg_var = FundingLocked_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; } + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + return (*env)->CallVoidMethod(env, obj, j_calls->handle_funding_locked_meth, their_node_id_arr, msg_ref); } -LDKCResult_TxOutAccessErrorZ get_utxo_jcall(const void* this_arg, const uint8_t (* genesis_hash)[32], uint64_t short_channel_id) { - LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) this_arg; +void handle_shutdown_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKShutdown * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray genesis_hash_arr = (*env)->NewByteArray(env, 32); - (*env)->SetByteArrayRegion(env, genesis_hash_arr, 0, 32, *genesis_hash); + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKShutdown msg_var = *msg; + msg_var = Shutdown_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - LDKCResult_TxOutAccessErrorZ* ret = (LDKCResult_TxOutAccessErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->get_utxo_meth, genesis_hash_arr, short_channel_id); - LDKCResult_TxOutAccessErrorZ ret_conv = *(LDKCResult_TxOutAccessErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_TxOutAccessErrorZ_clone((LDKCResult_TxOutAccessErrorZ*)ret); - return ret_conv; -} -static void* LDKAccess_JCalls_clone(const void* this_arg) { - LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) this_arg; - atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); - return (void*) this_arg; + return (*env)->CallVoidMethod(env, obj, j_calls->handle_shutdown_meth, their_node_id_arr, msg_ref); } -static inline LDKAccess LDKAccess_init (JNIEnv *env, jclass clz, jobject o) { - jclass c = (*env)->GetObjectClass(env, o); - CHECK(c != NULL); - LDKAccess_JCalls *calls = MALLOC(sizeof(LDKAccess_JCalls), "LDKAccess_JCalls"); - atomic_init(&calls->refcnt, 1); - DO_ASSERT((*env)->GetJavaVM(env, &calls->vm) == 0); - calls->o = (*env)->NewWeakGlobalRef(env, o); - calls->get_utxo_meth = (*env)->GetMethodID(env, c, "get_utxo", "([BJ)J"); - CHECK(calls->get_utxo_meth != NULL); - - LDKAccess ret = { - .this_arg = (void*) calls, - .get_utxo = get_utxo_jcall, - .free = LDKAccess_JCalls_free, - }; - return ret; +void handle_closing_signed_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKClosingSigned * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKClosingSigned msg_var = *msg; + msg_var = ClosingSigned_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + return (*env)->CallVoidMethod(env, obj, j_calls->handle_closing_signed_meth, their_node_id_arr, msg_ref); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKAccess_1new(JNIEnv *env, jclass clz, jobject o) { - LDKAccess *res_ptr = MALLOC(sizeof(LDKAccess), "LDKAccess"); - *res_ptr = LDKAccess_init(env, clz, o); - return (long)res_ptr; +void handle_update_add_htlc_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateAddHTLC * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKUpdateAddHTLC msg_var = *msg; + msg_var = UpdateAddHTLC_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + return (*env)->CallVoidMethod(env, obj, j_calls->handle_update_add_htlc_meth, their_node_id_arr, msg_ref); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Access_1get_1utxo(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray genesis_hash, int64_t short_channel_id) { - LDKAccess* this_arg_conv = (LDKAccess*)this_arg; - unsigned char genesis_hash_arr[32]; - CHECK((*env)->GetArrayLength(env, genesis_hash) == 32); - (*env)->GetByteArrayRegion(env, genesis_hash, 0, 32, genesis_hash_arr); - unsigned char (*genesis_hash_ref)[32] = &genesis_hash_arr; - LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ"); - *ret_conv = (this_arg_conv->get_utxo)(this_arg_conv->this_arg, genesis_hash_ref, short_channel_id); - return (long)ret_conv; +void handle_update_fulfill_htlc_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateFulfillHTLC * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKUpdateFulfillHTLC msg_var = *msg; + msg_var = UpdateFulfillHTLC_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + return (*env)->CallVoidMethod(env, obj, j_calls->handle_update_fulfill_htlc_meth, their_node_id_arr, msg_ref); } - -typedef struct LDKFilter_JCalls { - atomic_size_t refcnt; - JavaVM *vm; - jweak o; - jmethodID register_tx_meth; - jmethodID register_output_meth; -} LDKFilter_JCalls; -static void LDKFilter_JCalls_free(void* this_arg) { - LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg; - if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - (*env)->DeleteWeakGlobalRef(env, j_calls->o); - FREE(j_calls); +void handle_update_fail_htlc_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateFailHTLC * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKUpdateFailHTLC msg_var = *msg; + msg_var = UpdateFailHTLC_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; } + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + return (*env)->CallVoidMethod(env, obj, j_calls->handle_update_fail_htlc_meth, their_node_id_arr, msg_ref); } -void register_tx_jcall(const void* this_arg, const uint8_t (* txid)[32], LDKu8slice script_pubkey) { - LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg; +void handle_update_fail_malformed_htlc_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateFailMalformedHTLC * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray txid_arr = (*env)->NewByteArray(env, 32); - (*env)->SetByteArrayRegion(env, txid_arr, 0, 32, *txid); - LDKu8slice script_pubkey_var = script_pubkey; - int8_tArray script_pubkey_arr = (*env)->NewByteArray(env, script_pubkey_var.datalen); - (*env)->SetByteArrayRegion(env, script_pubkey_arr, 0, script_pubkey_var.datalen, script_pubkey_var.data); + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKUpdateFailMalformedHTLC msg_var = *msg; + msg_var = UpdateFailMalformedHTLC_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->register_tx_meth, txid_arr, script_pubkey_arr); + return (*env)->CallVoidMethod(env, obj, j_calls->handle_update_fail_malformed_htlc_meth, their_node_id_arr, msg_ref); } -void register_output_jcall(const void* this_arg, const LDKOutPoint * outpoint, LDKu8slice script_pubkey) { - LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg; +void handle_commitment_signed_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKCommitmentSigned * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - LDKOutPoint outpoint_var = *outpoint; - outpoint_var = OutPoint_clone(outpoint); - CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long outpoint_ref = (long)outpoint_var.inner; - if (outpoint_var.is_owned) { - outpoint_ref |= 1; + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKCommitmentSigned msg_var = *msg; + msg_var = CommitmentSigned_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; } - LDKu8slice script_pubkey_var = script_pubkey; - int8_tArray script_pubkey_arr = (*env)->NewByteArray(env, script_pubkey_var.datalen); - (*env)->SetByteArrayRegion(env, script_pubkey_arr, 0, script_pubkey_var.datalen, script_pubkey_var.data); jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->register_output_meth, outpoint_ref, script_pubkey_arr); -} -static void* LDKFilter_JCalls_clone(const void* this_arg) { - LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg; - atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); - return (void*) this_arg; + return (*env)->CallVoidMethod(env, obj, j_calls->handle_commitment_signed_meth, their_node_id_arr, msg_ref); } -static inline LDKFilter LDKFilter_init (JNIEnv *env, jclass clz, jobject o) { - jclass c = (*env)->GetObjectClass(env, o); - CHECK(c != NULL); - LDKFilter_JCalls *calls = MALLOC(sizeof(LDKFilter_JCalls), "LDKFilter_JCalls"); - atomic_init(&calls->refcnt, 1); - DO_ASSERT((*env)->GetJavaVM(env, &calls->vm) == 0); - calls->o = (*env)->NewWeakGlobalRef(env, o); - calls->register_tx_meth = (*env)->GetMethodID(env, c, "register_tx", "([B[B)V"); - CHECK(calls->register_tx_meth != NULL); - calls->register_output_meth = (*env)->GetMethodID(env, c, "register_output", "(J[B)V"); - CHECK(calls->register_output_meth != NULL); - - LDKFilter ret = { - .this_arg = (void*) calls, - .register_tx = register_tx_jcall, - .register_output = register_output_jcall, - .free = LDKFilter_JCalls_free, - }; - return ret; +void handle_revoke_and_ack_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKRevokeAndACK * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKRevokeAndACK msg_var = *msg; + msg_var = RevokeAndACK_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + return (*env)->CallVoidMethod(env, obj, j_calls->handle_revoke_and_ack_meth, their_node_id_arr, msg_ref); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKFilter_1new(JNIEnv *env, jclass clz, jobject o) { - LDKFilter *res_ptr = MALLOC(sizeof(LDKFilter), "LDKFilter"); - *res_ptr = LDKFilter_init(env, clz, o); - return (long)res_ptr; +void handle_update_fee_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateFee * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKUpdateFee msg_var = *msg; + msg_var = UpdateFee_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + return (*env)->CallVoidMethod(env, obj, j_calls->handle_update_fee_meth, their_node_id_arr, msg_ref); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Filter_1register_1tx(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray txid, int8_tArray script_pubkey) { - LDKFilter* this_arg_conv = (LDKFilter*)this_arg; - unsigned char txid_arr[32]; - CHECK((*env)->GetArrayLength(env, txid) == 32); - (*env)->GetByteArrayRegion(env, txid, 0, 32, txid_arr); - unsigned char (*txid_ref)[32] = &txid_arr; - LDKu8slice script_pubkey_ref; - script_pubkey_ref.datalen = (*env)->GetArrayLength(env, script_pubkey); - script_pubkey_ref.data = (*env)->GetByteArrayElements (env, script_pubkey, NULL); - (this_arg_conv->register_tx)(this_arg_conv->this_arg, txid_ref, script_pubkey_ref); - (*env)->ReleaseByteArrayElements(env, script_pubkey, (int8_t*)script_pubkey_ref.data, 0); +void handle_announcement_signatures_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKAnnouncementSignatures * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKAnnouncementSignatures msg_var = *msg; + msg_var = AnnouncementSignatures_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + return (*env)->CallVoidMethod(env, obj, j_calls->handle_announcement_signatures_meth, their_node_id_arr, msg_ref); } - -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Filter_1register_1output(JNIEnv *env, jclass clz, int64_t this_arg, int64_t outpoint, int8_tArray script_pubkey) { - LDKFilter* this_arg_conv = (LDKFilter*)this_arg; - LDKOutPoint outpoint_conv; - outpoint_conv.inner = (void*)(outpoint & (~1)); - outpoint_conv.is_owned = false; - LDKu8slice script_pubkey_ref; - script_pubkey_ref.datalen = (*env)->GetArrayLength(env, script_pubkey); - script_pubkey_ref.data = (*env)->GetByteArrayElements (env, script_pubkey, NULL); - (this_arg_conv->register_output)(this_arg_conv->this_arg, &outpoint_conv, script_pubkey_ref); - (*env)->ReleaseByteArrayElements(env, script_pubkey, (int8_t*)script_pubkey_ref.data, 0); +void peer_disconnected_jcall(const void* this_arg, LDKPublicKey their_node_id, bool no_connection_possible) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + return (*env)->CallVoidMethod(env, obj, j_calls->peer_disconnected_meth, their_node_id_arr, no_connection_possible); } - -typedef struct LDKPersist_JCalls { - atomic_size_t refcnt; - JavaVM *vm; - jweak o; - jmethodID persist_new_channel_meth; - jmethodID update_persisted_channel_meth; -} LDKPersist_JCalls; -static void LDKPersist_JCalls_free(void* this_arg) { - LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg; - if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - (*env)->DeleteWeakGlobalRef(env, j_calls->o); - FREE(j_calls); +void peer_connected_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKInit * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKInit msg_var = *msg; + msg_var = Init_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; } + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + return (*env)->CallVoidMethod(env, obj, j_calls->peer_connected_meth, their_node_id_arr, msg_ref); } -LDKCResult_NoneChannelMonitorUpdateErrZ persist_new_channel_jcall(const void* this_arg, LDKOutPoint id, const LDKChannelMonitor * data) { - LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg; +void handle_channel_reestablish_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKChannelReestablish * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - LDKOutPoint id_var = id; - CHECK((((long)id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long id_ref = (long)id_var.inner; - if (id_var.is_owned) { - id_ref |= 1; - } - LDKChannelMonitor data_var = *data; - data_var = ChannelMonitor_clone(data); - CHECK((((long)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long data_ref = (long)data_var.inner; - if (data_var.is_owned) { - data_ref |= 1; + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKChannelReestablish msg_var = *msg; + msg_var = ChannelReestablish_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; } jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - LDKCResult_NoneChannelMonitorUpdateErrZ* ret = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(*env)->CallLongMethod(env, obj, j_calls->persist_new_channel_meth, id_ref, data_ref); - LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone((LDKCResult_NoneChannelMonitorUpdateErrZ*)ret); - return ret_conv; + return (*env)->CallVoidMethod(env, obj, j_calls->handle_channel_reestablish_meth, their_node_id_arr, msg_ref); } -LDKCResult_NoneChannelMonitorUpdateErrZ update_persisted_channel_jcall(const void* this_arg, LDKOutPoint id, const LDKChannelMonitorUpdate * update, const LDKChannelMonitor * data) { - LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg; +void handle_error_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKErrorMessage * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - LDKOutPoint id_var = id; - CHECK((((long)id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long id_ref = (long)id_var.inner; - if (id_var.is_owned) { - id_ref |= 1; - } - LDKChannelMonitorUpdate update_var = *update; - update_var = ChannelMonitorUpdate_clone(update); - CHECK((((long)update_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&update_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long update_ref = (long)update_var.inner; - if (update_var.is_owned) { - update_ref |= 1; - } - LDKChannelMonitor data_var = *data; - data_var = ChannelMonitor_clone(data); - CHECK((((long)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long data_ref = (long)data_var.inner; - if (data_var.is_owned) { - data_ref |= 1; + int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); + LDKErrorMessage msg_var = *msg; + msg_var = ErrorMessage_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; } jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - LDKCResult_NoneChannelMonitorUpdateErrZ* ret = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(*env)->CallLongMethod(env, obj, j_calls->update_persisted_channel_meth, id_ref, update_ref, data_ref); - LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone((LDKCResult_NoneChannelMonitorUpdateErrZ*)ret); - return ret_conv; + return (*env)->CallVoidMethod(env, obj, j_calls->handle_error_meth, their_node_id_arr, msg_ref); } -static void* LDKPersist_JCalls_clone(const void* this_arg) { - LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg; +static void* LDKChannelMessageHandler_JCalls_clone(const void* this_arg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); + atomic_fetch_add_explicit(&j_calls->MessageSendEventsProvider->refcnt, 1, memory_order_release); return (void*) this_arg; } -static inline LDKPersist LDKPersist_init (JNIEnv *env, jclass clz, jobject o) { +static inline LDKChannelMessageHandler LDKChannelMessageHandler_init (JNIEnv *env, jclass clz, jobject o, jobject MessageSendEventsProvider) { jclass c = (*env)->GetObjectClass(env, o); CHECK(c != NULL); - LDKPersist_JCalls *calls = MALLOC(sizeof(LDKPersist_JCalls), "LDKPersist_JCalls"); + LDKChannelMessageHandler_JCalls *calls = MALLOC(sizeof(LDKChannelMessageHandler_JCalls), "LDKChannelMessageHandler_JCalls"); atomic_init(&calls->refcnt, 1); DO_ASSERT((*env)->GetJavaVM(env, &calls->vm) == 0); calls->o = (*env)->NewWeakGlobalRef(env, o); - calls->persist_new_channel_meth = (*env)->GetMethodID(env, c, "persist_new_channel", "(JJ)J"); - CHECK(calls->persist_new_channel_meth != NULL); - calls->update_persisted_channel_meth = (*env)->GetMethodID(env, c, "update_persisted_channel", "(JJJ)J"); - CHECK(calls->update_persisted_channel_meth != NULL); + calls->handle_open_channel_meth = (*env)->GetMethodID(env, c, "handle_open_channel", "([BJJ)V"); + CHECK(calls->handle_open_channel_meth != NULL); + calls->handle_accept_channel_meth = (*env)->GetMethodID(env, c, "handle_accept_channel", "([BJJ)V"); + CHECK(calls->handle_accept_channel_meth != NULL); + calls->handle_funding_created_meth = (*env)->GetMethodID(env, c, "handle_funding_created", "([BJ)V"); + CHECK(calls->handle_funding_created_meth != NULL); + calls->handle_funding_signed_meth = (*env)->GetMethodID(env, c, "handle_funding_signed", "([BJ)V"); + CHECK(calls->handle_funding_signed_meth != NULL); + calls->handle_funding_locked_meth = (*env)->GetMethodID(env, c, "handle_funding_locked", "([BJ)V"); + CHECK(calls->handle_funding_locked_meth != NULL); + calls->handle_shutdown_meth = (*env)->GetMethodID(env, c, "handle_shutdown", "([BJ)V"); + CHECK(calls->handle_shutdown_meth != NULL); + calls->handle_closing_signed_meth = (*env)->GetMethodID(env, c, "handle_closing_signed", "([BJ)V"); + CHECK(calls->handle_closing_signed_meth != NULL); + calls->handle_update_add_htlc_meth = (*env)->GetMethodID(env, c, "handle_update_add_htlc", "([BJ)V"); + CHECK(calls->handle_update_add_htlc_meth != NULL); + calls->handle_update_fulfill_htlc_meth = (*env)->GetMethodID(env, c, "handle_update_fulfill_htlc", "([BJ)V"); + CHECK(calls->handle_update_fulfill_htlc_meth != NULL); + calls->handle_update_fail_htlc_meth = (*env)->GetMethodID(env, c, "handle_update_fail_htlc", "([BJ)V"); + CHECK(calls->handle_update_fail_htlc_meth != NULL); + calls->handle_update_fail_malformed_htlc_meth = (*env)->GetMethodID(env, c, "handle_update_fail_malformed_htlc", "([BJ)V"); + CHECK(calls->handle_update_fail_malformed_htlc_meth != NULL); + calls->handle_commitment_signed_meth = (*env)->GetMethodID(env, c, "handle_commitment_signed", "([BJ)V"); + CHECK(calls->handle_commitment_signed_meth != NULL); + calls->handle_revoke_and_ack_meth = (*env)->GetMethodID(env, c, "handle_revoke_and_ack", "([BJ)V"); + CHECK(calls->handle_revoke_and_ack_meth != NULL); + calls->handle_update_fee_meth = (*env)->GetMethodID(env, c, "handle_update_fee", "([BJ)V"); + CHECK(calls->handle_update_fee_meth != NULL); + calls->handle_announcement_signatures_meth = (*env)->GetMethodID(env, c, "handle_announcement_signatures", "([BJ)V"); + CHECK(calls->handle_announcement_signatures_meth != NULL); + calls->peer_disconnected_meth = (*env)->GetMethodID(env, c, "peer_disconnected", "([BZ)V"); + CHECK(calls->peer_disconnected_meth != NULL); + calls->peer_connected_meth = (*env)->GetMethodID(env, c, "peer_connected", "([BJ)V"); + CHECK(calls->peer_connected_meth != NULL); + calls->handle_channel_reestablish_meth = (*env)->GetMethodID(env, c, "handle_channel_reestablish", "([BJ)V"); + CHECK(calls->handle_channel_reestablish_meth != NULL); + calls->handle_error_meth = (*env)->GetMethodID(env, c, "handle_error", "([BJ)V"); + CHECK(calls->handle_error_meth != NULL); - LDKPersist ret = { + LDKChannelMessageHandler ret = { .this_arg = (void*) calls, - .persist_new_channel = persist_new_channel_jcall, - .update_persisted_channel = update_persisted_channel_jcall, - .free = LDKPersist_JCalls_free, + .handle_open_channel = handle_open_channel_jcall, + .handle_accept_channel = handle_accept_channel_jcall, + .handle_funding_created = handle_funding_created_jcall, + .handle_funding_signed = handle_funding_signed_jcall, + .handle_funding_locked = handle_funding_locked_jcall, + .handle_shutdown = handle_shutdown_jcall, + .handle_closing_signed = handle_closing_signed_jcall, + .handle_update_add_htlc = handle_update_add_htlc_jcall, + .handle_update_fulfill_htlc = handle_update_fulfill_htlc_jcall, + .handle_update_fail_htlc = handle_update_fail_htlc_jcall, + .handle_update_fail_malformed_htlc = handle_update_fail_malformed_htlc_jcall, + .handle_commitment_signed = handle_commitment_signed_jcall, + .handle_revoke_and_ack = handle_revoke_and_ack_jcall, + .handle_update_fee = handle_update_fee_jcall, + .handle_announcement_signatures = handle_announcement_signatures_jcall, + .peer_disconnected = peer_disconnected_jcall, + .peer_connected = peer_connected_jcall, + .handle_channel_reestablish = handle_channel_reestablish_jcall, + .handle_error = handle_error_jcall, + .free = LDKChannelMessageHandler_JCalls_free, + .MessageSendEventsProvider = LDKMessageSendEventsProvider_init(env, clz, MessageSendEventsProvider), }; + calls->MessageSendEventsProvider = ret.MessageSendEventsProvider.this_arg; return ret; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKPersist_1new(JNIEnv *env, jclass clz, jobject o) { - LDKPersist *res_ptr = MALLOC(sizeof(LDKPersist), "LDKPersist"); - *res_ptr = LDKPersist_init(env, clz, o); - return (long)res_ptr; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKChannelMessageHandler_1new(JNIEnv *env, jclass clz, jobject o, jobject MessageSendEventsProvider) { + LDKChannelMessageHandler *res_ptr = MALLOC(sizeof(LDKChannelMessageHandler), "LDKChannelMessageHandler"); + *res_ptr = LDKChannelMessageHandler_init(env, clz, o, MessageSendEventsProvider); + return (long)res_ptr; +} +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1open_1channel(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t their_features, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKInitFeatures their_features_conv; + their_features_conv.inner = (void*)(their_features & (~1)); + their_features_conv.is_owned = (their_features & 1) || (their_features == 0); + their_features_conv = InitFeatures_clone(&their_features_conv); + LDKOpenChannel msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_open_channel)(this_arg_conv->this_arg, their_node_id_ref, their_features_conv, &msg_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1accept_1channel(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t their_features, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKInitFeatures their_features_conv; + their_features_conv.inner = (void*)(their_features & (~1)); + their_features_conv.is_owned = (their_features & 1) || (their_features == 0); + their_features_conv = InitFeatures_clone(&their_features_conv); + LDKAcceptChannel msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_accept_channel)(this_arg_conv->this_arg, their_node_id_ref, their_features_conv, &msg_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1funding_1created(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKFundingCreated msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_funding_created)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1funding_1signed(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKFundingSigned msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_funding_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1funding_1locked(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKFundingLocked msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_funding_locked)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1shutdown(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKShutdown msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_shutdown)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1closing_1signed(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKClosingSigned msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_closing_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1add_1htlc(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKUpdateAddHTLC msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_update_add_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1fulfill_1htlc(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKUpdateFulfillHTLC msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_update_fulfill_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1fail_1htlc(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKUpdateFailHTLC msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_update_fail_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1fail_1malformed_1htlc(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKUpdateFailMalformedHTLC msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_update_fail_malformed_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1commitment_1signed(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKCommitmentSigned msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_commitment_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1revoke_1and_1ack(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKRevokeAndACK msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_revoke_and_ack)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1fee(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKUpdateFee msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_update_fee)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1announcement_1signatures(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKAnnouncementSignatures msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_announcement_signatures)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1peer_1disconnected(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, jboolean no_connection_possible) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + (this_arg_conv->peer_disconnected)(this_arg_conv->this_arg, their_node_id_ref, no_connection_possible); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Persist_1persist_1new_1channel(JNIEnv *env, jclass clz, int64_t this_arg, int64_t id, int64_t data) { - LDKPersist* this_arg_conv = (LDKPersist*)this_arg; - LDKOutPoint id_conv; - id_conv.inner = (void*)(id & (~1)); - id_conv.is_owned = (id & 1) || (id == 0); - id_conv = OutPoint_clone(&id_conv); - LDKChannelMonitor data_conv; - data_conv.inner = (void*)(data & (~1)); - data_conv.is_owned = false; - LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ"); - *ret_conv = (this_arg_conv->persist_new_channel)(this_arg_conv->this_arg, id_conv, &data_conv); - return (long)ret_conv; + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1peer_1connected(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKInit msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->peer_connected)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Persist_1update_1persisted_1channel(JNIEnv *env, jclass clz, int64_t this_arg, int64_t id, int64_t update, int64_t data) { - LDKPersist* this_arg_conv = (LDKPersist*)this_arg; - LDKOutPoint id_conv; - id_conv.inner = (void*)(id & (~1)); - id_conv.is_owned = (id & 1) || (id == 0); - id_conv = OutPoint_clone(&id_conv); - LDKChannelMonitorUpdate update_conv; - update_conv.inner = (void*)(update & (~1)); - update_conv.is_owned = false; - LDKChannelMonitor data_conv; - data_conv.inner = (void*)(data & (~1)); - data_conv.is_owned = false; - LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ"); - *ret_conv = (this_arg_conv->update_persisted_channel)(this_arg_conv->this_arg, id_conv, &update_conv, &data_conv); - return (long)ret_conv; +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1channel_1reestablish(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKChannelReestablish msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_channel_reestablish)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); } -typedef struct LDKChannelMessageHandler_JCalls { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1error(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKErrorMessage msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_error)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +typedef struct LDKRoutingMessageHandler_JCalls { atomic_size_t refcnt; JavaVM *vm; jweak o; LDKMessageSendEventsProvider_JCalls* MessageSendEventsProvider; - jmethodID handle_open_channel_meth; - jmethodID handle_accept_channel_meth; - jmethodID handle_funding_created_meth; - jmethodID handle_funding_signed_meth; - jmethodID handle_funding_locked_meth; - jmethodID handle_shutdown_meth; - jmethodID handle_closing_signed_meth; - jmethodID handle_update_add_htlc_meth; - jmethodID handle_update_fulfill_htlc_meth; - jmethodID handle_update_fail_htlc_meth; - jmethodID handle_update_fail_malformed_htlc_meth; - jmethodID handle_commitment_signed_meth; - jmethodID handle_revoke_and_ack_meth; - jmethodID handle_update_fee_meth; - jmethodID handle_announcement_signatures_meth; - jmethodID peer_disconnected_meth; - jmethodID peer_connected_meth; - jmethodID handle_channel_reestablish_meth; - jmethodID handle_error_meth; -} LDKChannelMessageHandler_JCalls; -static void LDKChannelMessageHandler_JCalls_free(void* this_arg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + jmethodID handle_node_announcement_meth; + jmethodID handle_channel_announcement_meth; + jmethodID handle_channel_update_meth; + jmethodID handle_htlc_fail_channel_update_meth; + jmethodID get_next_channel_announcements_meth; + jmethodID get_next_node_announcements_meth; + jmethodID sync_routing_table_meth; + jmethodID handle_reply_channel_range_meth; + jmethodID handle_reply_short_channel_ids_end_meth; + jmethodID handle_query_channel_range_meth; + jmethodID handle_query_short_channel_ids_meth; +} LDKRoutingMessageHandler_JCalls; +static void LDKRoutingMessageHandler_JCalls_free(void* this_arg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); @@ -4063,21 +5456,12 @@ static void LDKChannelMessageHandler_JCalls_free(void* this_arg) { FREE(j_calls); } } -void handle_open_channel_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKInitFeatures their_features, const LDKOpenChannel * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; +LDKCResult_boolLightningErrorZ handle_node_announcement_jcall(const void* this_arg, const LDKNodeAnnouncement * msg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKInitFeatures their_features_var = their_features; - CHECK((((long)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long their_features_ref = (long)their_features_var.inner; - if (their_features_var.is_owned) { - their_features_ref |= 1; - } - LDKOpenChannel msg_var = *msg; - msg_var = OpenChannel_clone(msg); + LDKNodeAnnouncement msg_var = *msg; + msg_var = NodeAnnouncement_clone(msg); CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long msg_ref = (long)msg_var.inner; @@ -4086,23 +5470,17 @@ void handle_open_channel_jcall(const void* this_arg, LDKPublicKey their_node_id, } jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_open_channel_meth, their_node_id_arr, their_features_ref, msg_ref); + LDKCResult_boolLightningErrorZ* ret = (LDKCResult_boolLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_node_announcement_meth, msg_ref); + LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_boolLightningErrorZ_clone((LDKCResult_boolLightningErrorZ*)ret); + return ret_conv; } -void handle_accept_channel_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKInitFeatures their_features, const LDKAcceptChannel * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; +LDKCResult_boolLightningErrorZ handle_channel_announcement_jcall(const void* this_arg, const LDKChannelAnnouncement * msg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKInitFeatures their_features_var = their_features; - CHECK((((long)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long their_features_ref = (long)their_features_var.inner; - if (their_features_var.is_owned) { - their_features_ref |= 1; - } - LDKAcceptChannel msg_var = *msg; - msg_var = AcceptChannel_clone(msg); + LDKChannelAnnouncement msg_var = *msg; + msg_var = ChannelAnnouncement_clone(msg); CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long msg_ref = (long)msg_var.inner; @@ -4111,16 +5489,17 @@ void handle_accept_channel_jcall(const void* this_arg, LDKPublicKey their_node_i } jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_accept_channel_meth, their_node_id_arr, their_features_ref, msg_ref); + LDKCResult_boolLightningErrorZ* ret = (LDKCResult_boolLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_channel_announcement_meth, msg_ref); + LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_boolLightningErrorZ_clone((LDKCResult_boolLightningErrorZ*)ret); + return ret_conv; } -void handle_funding_created_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKFundingCreated * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; +LDKCResult_boolLightningErrorZ handle_channel_update_jcall(const void* this_arg, const LDKChannelUpdate * msg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKFundingCreated msg_var = *msg; - msg_var = FundingCreated_clone(msg); + LDKChannelUpdate msg_var = *msg; + msg_var = ChannelUpdate_clone(msg); CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long msg_ref = (long)msg_var.inner; @@ -4129,34 +5508,95 @@ void handle_funding_created_jcall(const void* this_arg, LDKPublicKey their_node_ } jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_funding_created_meth, their_node_id_arr, msg_ref); + LDKCResult_boolLightningErrorZ* ret = (LDKCResult_boolLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_channel_update_meth, msg_ref); + LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_boolLightningErrorZ_clone((LDKCResult_boolLightningErrorZ*)ret); + return ret_conv; } -void handle_funding_signed_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKFundingSigned * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; +void handle_htlc_fail_channel_update_jcall(const void* this_arg, const LDKHTLCFailChannelUpdate * update) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + long ret_update = (long)update; + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + return (*env)->CallVoidMethod(env, obj, j_calls->handle_htlc_fail_channel_update_meth, ret_update); +} +LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcements_jcall(const void* this_arg, uint64_t starting_point, uint8_t batch_amount) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + int64_tArray arg = (*env)->CallObjectMethod(env, obj, j_calls->get_next_channel_announcements_meth, starting_point, batch_amount); + LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ arg_constr; + arg_constr.datalen = (*env)->GetArrayLength(env, arg); + if (arg_constr.datalen > 0) + arg_constr.data = MALLOC(arg_constr.datalen * sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ Elements"); + else + arg_constr.data = NULL; + int64_t* arg_vals = (*env)->GetLongArrayElements (env, arg, NULL); + for (size_t l = 0; l < arg_constr.datalen; l++) { + int64_t arr_conv_63 = arg_vals[l]; + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ arr_conv_63_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(((uint64_t)arr_conv_63) & ~1); + FREE((void*)arr_conv_63); + arg_constr.data[l] = arr_conv_63_conv; + } + (*env)->ReleaseLongArrayElements(env, arg, arg_vals, 0); + return arg_constr; +} +LDKCVec_NodeAnnouncementZ get_next_node_announcements_jcall(const void* this_arg, LDKPublicKey starting_point, uint8_t batch_amount) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + int8_tArray starting_point_arr = (*env)->NewByteArray(env, 33); + (*env)->SetByteArrayRegion(env, starting_point_arr, 0, 33, starting_point.compressed_form); + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + int64_tArray arg = (*env)->CallObjectMethod(env, obj, j_calls->get_next_node_announcements_meth, starting_point_arr, batch_amount); + LDKCVec_NodeAnnouncementZ arg_constr; + arg_constr.datalen = (*env)->GetArrayLength(env, arg); + if (arg_constr.datalen > 0) + arg_constr.data = MALLOC(arg_constr.datalen * sizeof(LDKNodeAnnouncement), "LDKCVec_NodeAnnouncementZ Elements"); + else + arg_constr.data = NULL; + int64_t* arg_vals = (*env)->GetLongArrayElements (env, arg, NULL); + for (size_t s = 0; s < arg_constr.datalen; s++) { + int64_t arr_conv_18 = arg_vals[s]; + LDKNodeAnnouncement arr_conv_18_conv; + arr_conv_18_conv.inner = (void*)(arr_conv_18 & (~1)); + arr_conv_18_conv.is_owned = (arr_conv_18 & 1) || (arr_conv_18 == 0); + arr_conv_18_conv = NodeAnnouncement_clone(&arr_conv_18_conv); + arg_constr.data[s] = arr_conv_18_conv; + } + (*env)->ReleaseLongArrayElements(env, arg, arg_vals, 0); + return arg_constr; +} +void sync_routing_table_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKInit * init) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKFundingSigned msg_var = *msg; - msg_var = FundingSigned_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; + LDKInit init_var = *init; + init_var = Init_clone(init); + CHECK((((long)init_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&init_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long init_ref = (long)init_var.inner; + if (init_var.is_owned) { + init_ref |= 1; } jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_funding_signed_meth, their_node_id_arr, msg_ref); + return (*env)->CallVoidMethod(env, obj, j_calls->sync_routing_table_meth, their_node_id_arr, init_ref); } -void handle_funding_locked_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKFundingLocked * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; +LDKCResult_NoneLightningErrorZ handle_reply_channel_range_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKReplyChannelRange msg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKFundingLocked msg_var = *msg; - msg_var = FundingLocked_clone(msg); + LDKReplyChannelRange msg_var = msg; CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long msg_ref = (long)msg_var.inner; @@ -4165,16 +5605,18 @@ void handle_funding_locked_jcall(const void* this_arg, LDKPublicKey their_node_i } jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_funding_locked_meth, their_node_id_arr, msg_ref); + LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_reply_channel_range_meth, their_node_id_arr, msg_ref); + LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)ret); + return ret_conv; } -void handle_shutdown_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKShutdown * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; +LDKCResult_NoneLightningErrorZ handle_reply_short_channel_ids_end_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKReplyShortChannelIdsEnd msg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKShutdown msg_var = *msg; - msg_var = Shutdown_clone(msg); + LDKReplyShortChannelIdsEnd msg_var = msg; CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long msg_ref = (long)msg_var.inner; @@ -4183,16 +5625,18 @@ void handle_shutdown_jcall(const void* this_arg, LDKPublicKey their_node_id, con } jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_shutdown_meth, their_node_id_arr, msg_ref); + LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_reply_short_channel_ids_end_meth, their_node_id_arr, msg_ref); + LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)ret); + return ret_conv; } -void handle_closing_signed_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKClosingSigned * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; +LDKCResult_NoneLightningErrorZ handle_query_channel_range_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKQueryChannelRange msg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKClosingSigned msg_var = *msg; - msg_var = ClosingSigned_clone(msg); + LDKQueryChannelRange msg_var = msg; CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long msg_ref = (long)msg_var.inner; @@ -4201,16 +5645,18 @@ void handle_closing_signed_jcall(const void* this_arg, LDKPublicKey their_node_i } jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_closing_signed_meth, their_node_id_arr, msg_ref); + LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_query_channel_range_meth, their_node_id_arr, msg_ref); + LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)ret); + return ret_conv; } -void handle_update_add_htlc_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateAddHTLC * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; +LDKCResult_NoneLightningErrorZ handle_query_short_channel_ids_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKQueryShortChannelIds msg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKUpdateAddHTLC msg_var = *msg; - msg_var = UpdateAddHTLC_clone(msg); + LDKQueryShortChannelIds msg_var = msg; CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long msg_ref = (long)msg_var.inner; @@ -4219,1132 +5665,1372 @@ void handle_update_add_htlc_jcall(const void* this_arg, LDKPublicKey their_node_ } jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_update_add_htlc_meth, their_node_id_arr, msg_ref); + LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_query_short_channel_ids_meth, their_node_id_arr, msg_ref); + LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)ret); + return ret_conv; +} +static void* LDKRoutingMessageHandler_JCalls_clone(const void* this_arg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; + atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); + atomic_fetch_add_explicit(&j_calls->MessageSendEventsProvider->refcnt, 1, memory_order_release); + return (void*) this_arg; +} +static inline LDKRoutingMessageHandler LDKRoutingMessageHandler_init (JNIEnv *env, jclass clz, jobject o, jobject MessageSendEventsProvider) { + jclass c = (*env)->GetObjectClass(env, o); + CHECK(c != NULL); + LDKRoutingMessageHandler_JCalls *calls = MALLOC(sizeof(LDKRoutingMessageHandler_JCalls), "LDKRoutingMessageHandler_JCalls"); + atomic_init(&calls->refcnt, 1); + DO_ASSERT((*env)->GetJavaVM(env, &calls->vm) == 0); + calls->o = (*env)->NewWeakGlobalRef(env, o); + calls->handle_node_announcement_meth = (*env)->GetMethodID(env, c, "handle_node_announcement", "(J)J"); + CHECK(calls->handle_node_announcement_meth != NULL); + calls->handle_channel_announcement_meth = (*env)->GetMethodID(env, c, "handle_channel_announcement", "(J)J"); + CHECK(calls->handle_channel_announcement_meth != NULL); + calls->handle_channel_update_meth = (*env)->GetMethodID(env, c, "handle_channel_update", "(J)J"); + CHECK(calls->handle_channel_update_meth != NULL); + calls->handle_htlc_fail_channel_update_meth = (*env)->GetMethodID(env, c, "handle_htlc_fail_channel_update", "(J)V"); + CHECK(calls->handle_htlc_fail_channel_update_meth != NULL); + calls->get_next_channel_announcements_meth = (*env)->GetMethodID(env, c, "get_next_channel_announcements", "(JB)[J"); + CHECK(calls->get_next_channel_announcements_meth != NULL); + calls->get_next_node_announcements_meth = (*env)->GetMethodID(env, c, "get_next_node_announcements", "([BB)[J"); + CHECK(calls->get_next_node_announcements_meth != NULL); + calls->sync_routing_table_meth = (*env)->GetMethodID(env, c, "sync_routing_table", "([BJ)V"); + CHECK(calls->sync_routing_table_meth != NULL); + calls->handle_reply_channel_range_meth = (*env)->GetMethodID(env, c, "handle_reply_channel_range", "([BJ)J"); + CHECK(calls->handle_reply_channel_range_meth != NULL); + calls->handle_reply_short_channel_ids_end_meth = (*env)->GetMethodID(env, c, "handle_reply_short_channel_ids_end", "([BJ)J"); + CHECK(calls->handle_reply_short_channel_ids_end_meth != NULL); + calls->handle_query_channel_range_meth = (*env)->GetMethodID(env, c, "handle_query_channel_range", "([BJ)J"); + CHECK(calls->handle_query_channel_range_meth != NULL); + calls->handle_query_short_channel_ids_meth = (*env)->GetMethodID(env, c, "handle_query_short_channel_ids", "([BJ)J"); + CHECK(calls->handle_query_short_channel_ids_meth != NULL); + + LDKRoutingMessageHandler ret = { + .this_arg = (void*) calls, + .handle_node_announcement = handle_node_announcement_jcall, + .handle_channel_announcement = handle_channel_announcement_jcall, + .handle_channel_update = handle_channel_update_jcall, + .handle_htlc_fail_channel_update = handle_htlc_fail_channel_update_jcall, + .get_next_channel_announcements = get_next_channel_announcements_jcall, + .get_next_node_announcements = get_next_node_announcements_jcall, + .sync_routing_table = sync_routing_table_jcall, + .handle_reply_channel_range = handle_reply_channel_range_jcall, + .handle_reply_short_channel_ids_end = handle_reply_short_channel_ids_end_jcall, + .handle_query_channel_range = handle_query_channel_range_jcall, + .handle_query_short_channel_ids = handle_query_short_channel_ids_jcall, + .free = LDKRoutingMessageHandler_JCalls_free, + .MessageSendEventsProvider = LDKMessageSendEventsProvider_init(env, clz, MessageSendEventsProvider), + }; + calls->MessageSendEventsProvider = ret.MessageSendEventsProvider.this_arg; + return ret; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKRoutingMessageHandler_1new(JNIEnv *env, jclass clz, jobject o, jobject MessageSendEventsProvider) { + LDKRoutingMessageHandler *res_ptr = MALLOC(sizeof(LDKRoutingMessageHandler), "LDKRoutingMessageHandler"); + *res_ptr = LDKRoutingMessageHandler_init(env, clz, o, MessageSendEventsProvider); + return (long)res_ptr; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1node_1announcement(JNIEnv *env, jclass clz, int64_t this_arg, int64_t msg) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKNodeAnnouncement msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); + *ret_conv = (this_arg_conv->handle_node_announcement)(this_arg_conv->this_arg, &msg_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1channel_1announcement(JNIEnv *env, jclass clz, int64_t this_arg, int64_t msg) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKChannelAnnouncement msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); + *ret_conv = (this_arg_conv->handle_channel_announcement)(this_arg_conv->this_arg, &msg_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1channel_1update(JNIEnv *env, jclass clz, int64_t this_arg, int64_t msg) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKChannelUpdate msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); + *ret_conv = (this_arg_conv->handle_channel_update)(this_arg_conv->this_arg, &msg_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1htlc_1fail_1channel_1update(JNIEnv *env, jclass clz, int64_t this_arg, int64_t update) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKHTLCFailChannelUpdate* update_conv = (LDKHTLCFailChannelUpdate*)update; + (this_arg_conv->handle_htlc_fail_channel_update)(this_arg_conv->this_arg, update_conv); +} + +JNIEXPORT int64_tArray JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1get_1next_1channel_1announcements(JNIEnv *env, jclass clz, int64_t this_arg, int64_t starting_point, int8_t batch_amount) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret_var = (this_arg_conv->get_next_channel_announcements)(this_arg_conv->this_arg, starting_point, batch_amount); + int64_tArray ret_arr = (*env)->NewLongArray(env, ret_var.datalen); + int64_t *ret_arr_ptr = (*env)->GetPrimitiveArrayCritical(env, ret_arr, NULL); + for (size_t l = 0; l < ret_var.datalen; l++) { + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* arr_conv_63_ref = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ"); + *arr_conv_63_ref = ret_var.data[l]; + ret_arr_ptr[l] = (long)arr_conv_63_ref; + } + (*env)->ReleasePrimitiveArrayCritical(env, ret_arr, ret_arr_ptr, 0); + FREE(ret_var.data); + return ret_arr; +} + +JNIEXPORT int64_tArray JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1get_1next_1node_1announcements(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray starting_point, int8_t batch_amount) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKPublicKey starting_point_ref; + CHECK((*env)->GetArrayLength(env, starting_point) == 33); + (*env)->GetByteArrayRegion(env, starting_point, 0, 33, starting_point_ref.compressed_form); + LDKCVec_NodeAnnouncementZ ret_var = (this_arg_conv->get_next_node_announcements)(this_arg_conv->this_arg, starting_point_ref, batch_amount); + int64_tArray ret_arr = (*env)->NewLongArray(env, ret_var.datalen); + int64_t *ret_arr_ptr = (*env)->GetPrimitiveArrayCritical(env, ret_arr, NULL); + for (size_t s = 0; s < ret_var.datalen; s++) { + LDKNodeAnnouncement arr_conv_18_var = ret_var.data[s]; + CHECK((((long)arr_conv_18_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&arr_conv_18_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long arr_conv_18_ref = (long)arr_conv_18_var.inner; + if (arr_conv_18_var.is_owned) { + arr_conv_18_ref |= 1; + } + ret_arr_ptr[s] = arr_conv_18_ref; + } + (*env)->ReleasePrimitiveArrayCritical(env, ret_arr, ret_arr_ptr, 0); + FREE(ret_var.data); + return ret_arr; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1sync_1routing_1table(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t init) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKInit init_conv; + init_conv.inner = (void*)(init & (~1)); + init_conv.is_owned = false; + (this_arg_conv->sync_routing_table)(this_arg_conv->this_arg, their_node_id_ref, &init_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1reply_1channel_1range(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKReplyChannelRange msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = (msg & 1) || (msg == 0); + msg_conv = ReplyChannelRange_clone(&msg_conv); + LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); + *ret_conv = (this_arg_conv->handle_reply_channel_range)(this_arg_conv->this_arg, their_node_id_ref, msg_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1reply_1short_1channel_1ids_1end(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKReplyShortChannelIdsEnd msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = (msg & 1) || (msg == 0); + msg_conv = ReplyShortChannelIdsEnd_clone(&msg_conv); + LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); + *ret_conv = (this_arg_conv->handle_reply_short_channel_ids_end)(this_arg_conv->this_arg, their_node_id_ref, msg_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1query_1channel_1range(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKQueryChannelRange msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = (msg & 1) || (msg == 0); + msg_conv = QueryChannelRange_clone(&msg_conv); + LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); + *ret_conv = (this_arg_conv->handle_query_channel_range)(this_arg_conv->this_arg, their_node_id_ref, msg_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1query_1short_1channel_1ids(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK((*env)->GetArrayLength(env, their_node_id) == 33); + (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); + LDKQueryShortChannelIds msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = (msg & 1) || (msg == 0); + msg_conv = QueryShortChannelIds_clone(&msg_conv); + LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); + *ret_conv = (this_arg_conv->handle_query_short_channel_ids)(this_arg_conv->this_arg, their_node_id_ref, msg_conv); + return (long)ret_conv; +} + +typedef struct LDKSocketDescriptor_JCalls { + atomic_size_t refcnt; + JavaVM *vm; + jweak o; + jmethodID send_data_meth; + jmethodID disconnect_socket_meth; + jmethodID eq_meth; + jmethodID hash_meth; +} LDKSocketDescriptor_JCalls; +static void LDKSocketDescriptor_JCalls_free(void* this_arg) { + LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; + if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + (*env)->DeleteWeakGlobalRef(env, j_calls->o); + FREE(j_calls); + } +} +uintptr_t send_data_jcall(void* this_arg, LDKu8slice data, bool resume_read) { + LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; + JNIEnv *env; + DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); + LDKu8slice data_var = data; + int8_tArray data_arr = (*env)->NewByteArray(env, data_var.datalen); + (*env)->SetByteArrayRegion(env, data_arr, 0, data_var.datalen, data_var.data); + jobject obj = (*env)->NewLocalRef(env, j_calls->o); + CHECK(obj != NULL); + return (*env)->CallLongMethod(env, obj, j_calls->send_data_meth, data_arr, resume_read); } -void handle_update_fulfill_htlc_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateFulfillHTLC * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; +void disconnect_socket_jcall(void* this_arg) { + LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKUpdateFulfillHTLC msg_var = *msg; - msg_var = UpdateFulfillHTLC_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_update_fulfill_htlc_meth, their_node_id_arr, msg_ref); + return (*env)->CallVoidMethod(env, obj, j_calls->disconnect_socket_meth); } -void handle_update_fail_htlc_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateFailHTLC * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; +bool eq_jcall(const void* this_arg, const LDKSocketDescriptor * other_arg) { + LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKUpdateFailHTLC msg_var = *msg; - msg_var = UpdateFailHTLC_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } + LDKSocketDescriptor *other_arg_clone = MALLOC(sizeof(LDKSocketDescriptor), "LDKSocketDescriptor"); + *other_arg_clone = SocketDescriptor_clone(other_arg); jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_update_fail_htlc_meth, their_node_id_arr, msg_ref); + return (*env)->CallBooleanMethod(env, obj, j_calls->eq_meth, (long)other_arg_clone); } -void handle_update_fail_malformed_htlc_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateFailMalformedHTLC * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; +uint64_t hash_jcall(const void* this_arg) { + LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; JNIEnv *env; DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKUpdateFailMalformedHTLC msg_var = *msg; - msg_var = UpdateFailMalformedHTLC_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } jobject obj = (*env)->NewLocalRef(env, j_calls->o); CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_update_fail_malformed_htlc_meth, their_node_id_arr, msg_ref); + return (*env)->CallLongMethod(env, obj, j_calls->hash_meth); +} +static void* LDKSocketDescriptor_JCalls_clone(const void* this_arg) { + LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; + atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); + return (void*) this_arg; +} +static inline LDKSocketDescriptor LDKSocketDescriptor_init (JNIEnv *env, jclass clz, jobject o) { + jclass c = (*env)->GetObjectClass(env, o); + CHECK(c != NULL); + LDKSocketDescriptor_JCalls *calls = MALLOC(sizeof(LDKSocketDescriptor_JCalls), "LDKSocketDescriptor_JCalls"); + atomic_init(&calls->refcnt, 1); + DO_ASSERT((*env)->GetJavaVM(env, &calls->vm) == 0); + calls->o = (*env)->NewWeakGlobalRef(env, o); + calls->send_data_meth = (*env)->GetMethodID(env, c, "send_data", "([BZ)J"); + CHECK(calls->send_data_meth != NULL); + calls->disconnect_socket_meth = (*env)->GetMethodID(env, c, "disconnect_socket", "()V"); + CHECK(calls->disconnect_socket_meth != NULL); + calls->eq_meth = (*env)->GetMethodID(env, c, "eq", "(J)Z"); + CHECK(calls->eq_meth != NULL); + calls->hash_meth = (*env)->GetMethodID(env, c, "hash", "()J"); + CHECK(calls->hash_meth != NULL); + + LDKSocketDescriptor ret = { + .this_arg = (void*) calls, + .send_data = send_data_jcall, + .disconnect_socket = disconnect_socket_jcall, + .eq = eq_jcall, + .hash = hash_jcall, + .clone = LDKSocketDescriptor_JCalls_clone, + .free = LDKSocketDescriptor_JCalls_free, + }; + return ret; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKSocketDescriptor_1new(JNIEnv *env, jclass clz, jobject o) { + LDKSocketDescriptor *res_ptr = MALLOC(sizeof(LDKSocketDescriptor), "LDKSocketDescriptor"); + *res_ptr = LDKSocketDescriptor_init(env, clz, o); + return (long)res_ptr; +} +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_SocketDescriptor_1send_1data(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray data, jboolean resume_read) { + LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg; + LDKu8slice data_ref; + data_ref.datalen = (*env)->GetArrayLength(env, data); + data_ref.data = (*env)->GetByteArrayElements (env, data, NULL); + int64_t ret_val = (this_arg_conv->send_data)(this_arg_conv->this_arg, data_ref, resume_read); + (*env)->ReleaseByteArrayElements(env, data, (int8_t*)data_ref.data, 0); + return ret_val; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_SocketDescriptor_1disconnect_1socket(JNIEnv *env, jclass clz, int64_t this_arg) { + LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg; + (this_arg_conv->disconnect_socket)(this_arg_conv->this_arg); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_SocketDescriptor_1hash(JNIEnv *env, jclass clz, int64_t this_arg) { + LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg; + int64_t ret_val = (this_arg_conv->hash)(this_arg_conv->this_arg); + return ret_val; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Transaction_1free(JNIEnv *env, jclass clz, int8_tArray _res) { + LDKTransaction _res_ref; + _res_ref.datalen = (*env)->GetArrayLength(env, _res); + _res_ref.data = MALLOC(_res_ref.datalen, "LDKTransaction Bytes"); + (*env)->GetByteArrayRegion(env, _res, 0, _res_ref.datalen, _res_ref.data); + _res_ref.data_is_owned = true; + Transaction_free(_res_ref); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxOut_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKTxOut _res_conv = *(LDKTxOut*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + TxOut_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_TxOut_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKTxOut* orig_conv = (LDKTxOut*)(orig & ~1); + LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut"); + *ret_ref = TxOut_clone(orig_conv); + return (long)ret_ref; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1SecretKeyErrorZ_1ok(JNIEnv *env, jclass clz, int8_tArray o) { + LDKSecretKey o_ref; + CHECK((*env)->GetArrayLength(env, o) == 32); + (*env)->GetByteArrayRegion(env, o, 0, 32, o_ref.bytes); + LDKCResult_SecretKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeyErrorZ), "LDKCResult_SecretKeyErrorZ"); + *ret_conv = CResult_SecretKeyErrorZ_ok(o_ref); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1SecretKeyErrorZ_1err(JNIEnv *env, jclass clz, jclass e) { + LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_java(env, e); + LDKCResult_SecretKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeyErrorZ), "LDKCResult_SecretKeyErrorZ"); + *ret_conv = CResult_SecretKeyErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1SecretKeyErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_SecretKeyErrorZ _res_conv = *(LDKCResult_SecretKeyErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_SecretKeyErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PublicKeyErrorZ_1ok(JNIEnv *env, jclass clz, int8_tArray o) { + LDKPublicKey o_ref; + CHECK((*env)->GetArrayLength(env, o) == 33); + (*env)->GetByteArrayRegion(env, o, 0, 33, o_ref.compressed_form); + LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ"); + *ret_conv = CResult_PublicKeyErrorZ_ok(o_ref); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PublicKeyErrorZ_1err(JNIEnv *env, jclass clz, jclass e) { + LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_java(env, e); + LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ"); + *ret_conv = CResult_PublicKeyErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1PublicKeyErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_PublicKeyErrorZ _res_conv = *(LDKCResult_PublicKeyErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_PublicKeyErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKTxCreationKeys o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = TxCreationKeys_clone(&o_conv); + LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ"); + *ret_conv = CResult_TxCreationKeysDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ"); + *ret_conv = CResult_TxCreationKeysDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_TxCreationKeysDecodeErrorZ _res_conv = *(LDKCResult_TxCreationKeysDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_TxCreationKeysDecodeErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_TxCreationKeysDecodeErrorZ* orig_conv = (LDKCResult_TxCreationKeysDecodeErrorZ*)(orig & ~1); + LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ"); + *ret_conv = CResult_TxCreationKeysDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelPublicKeysDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKChannelPublicKeys o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = ChannelPublicKeys_clone(&o_conv); + LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ"); + *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelPublicKeysDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ"); + *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelPublicKeysDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_ChannelPublicKeysDecodeErrorZ _res_conv = *(LDKCResult_ChannelPublicKeysDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_ChannelPublicKeysDecodeErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelPublicKeysDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_ChannelPublicKeysDecodeErrorZ* orig_conv = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(orig & ~1); + LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ"); + *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKTxCreationKeys o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = TxCreationKeys_clone(&o_conv); + LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ"); + *ret_conv = CResult_TxCreationKeysErrorZ_ok(o_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysErrorZ_1err(JNIEnv *env, jclass clz, jclass e) { + LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_java(env, e); + LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ"); + *ret_conv = CResult_TxCreationKeysErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_TxCreationKeysErrorZ _res_conv = *(LDKCResult_TxCreationKeysErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_TxCreationKeysErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1HTLCOutputInCommitmentDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKHTLCOutputInCommitment o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = HTLCOutputInCommitment_clone(&o_conv); + LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ"); + *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1HTLCOutputInCommitmentDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ"); + *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1HTLCOutputInCommitmentDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_HTLCOutputInCommitmentDecodeErrorZ _res_conv = *(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_HTLCOutputInCommitmentDecodeErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1HTLCOutputInCommitmentDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* orig_conv = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(orig & ~1); + LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ"); + *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CounterpartyChannelTransactionParametersDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKCounterpartyChannelTransactionParameters o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = CounterpartyChannelTransactionParameters_clone(&o_conv); + LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ"); + *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CounterpartyChannelTransactionParametersDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ"); + *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -void handle_commitment_signed_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKCommitmentSigned * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKCommitmentSigned msg_var = *msg; - msg_var = CommitmentSigned_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_commitment_signed_meth, their_node_id_arr, msg_ref); + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CounterpartyChannelTransactionParametersDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ _res_conv = *(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(_res_conv); } -void handle_revoke_and_ack_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKRevokeAndACK * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKRevokeAndACK msg_var = *msg; - msg_var = RevokeAndACK_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_revoke_and_ack_meth, their_node_id_arr, msg_ref); + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CounterpartyChannelTransactionParametersDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* orig_conv = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(orig & ~1); + LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ"); + *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -void handle_update_fee_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateFee * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKUpdateFee msg_var = *msg; - msg_var = UpdateFee_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_update_fee_meth, their_node_id_arr, msg_ref); + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelTransactionParametersDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKChannelTransactionParameters o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = ChannelTransactionParameters_clone(&o_conv); + LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ"); + *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -void handle_announcement_signatures_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKAnnouncementSignatures * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKAnnouncementSignatures msg_var = *msg; - msg_var = AnnouncementSignatures_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_announcement_signatures_meth, their_node_id_arr, msg_ref); + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelTransactionParametersDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ"); + *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -void peer_disconnected_jcall(const void* this_arg, LDKPublicKey their_node_id, bool no_connection_possible) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->peer_disconnected_meth, their_node_id_arr, no_connection_possible); + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelTransactionParametersDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_ChannelTransactionParametersDecodeErrorZ _res_conv = *(LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_ChannelTransactionParametersDecodeErrorZ_free(_res_conv); } -void peer_connected_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKInit * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKInit msg_var = *msg; - msg_var = Init_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->peer_connected_meth, their_node_id_arr, msg_ref); + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelTransactionParametersDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_ChannelTransactionParametersDecodeErrorZ* orig_conv = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(orig & ~1); + LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ"); + *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -void handle_channel_reestablish_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKChannelReestablish * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKChannelReestablish msg_var = *msg; - msg_var = ChannelReestablish_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1SignatureZ_1free(JNIEnv *env, jclass clz, jobjectArray _res) { + LDKCVec_SignatureZ _res_constr; + _res_constr.datalen = (*env)->GetArrayLength(env, _res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements"); + else + _res_constr.data = NULL; + for (size_t i = 0; i < _res_constr.datalen; i++) { + int8_tArray arr_conv_8 = (*env)->GetObjectArrayElement(env, _res, i); + LDKSignature arr_conv_8_ref; + CHECK((*env)->GetArrayLength(env, arr_conv_8) == 64); + (*env)->GetByteArrayRegion(env, arr_conv_8, 0, 64, arr_conv_8_ref.compact_form); + _res_constr.data[i] = arr_conv_8_ref; } - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_channel_reestablish_meth, their_node_id_arr, msg_ref); + CVec_SignatureZ_free(_res_constr); } -void handle_error_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKErrorMessage * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKErrorMessage msg_var = *msg; - msg_var = ErrorMessage_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_error_meth, their_node_id_arr, msg_ref); + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1HolderCommitmentTransactionDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKHolderCommitmentTransaction o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = HolderCommitmentTransaction_clone(&o_conv); + LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -static void* LDKChannelMessageHandler_JCalls_clone(const void* this_arg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); - atomic_fetch_add_explicit(&j_calls->MessageSendEventsProvider->refcnt, 1, memory_order_release); - return (void*) this_arg; + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1HolderCommitmentTransactionDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -static inline LDKChannelMessageHandler LDKChannelMessageHandler_init (JNIEnv *env, jclass clz, jobject o, jobject MessageSendEventsProvider) { - jclass c = (*env)->GetObjectClass(env, o); - CHECK(c != NULL); - LDKChannelMessageHandler_JCalls *calls = MALLOC(sizeof(LDKChannelMessageHandler_JCalls), "LDKChannelMessageHandler_JCalls"); - atomic_init(&calls->refcnt, 1); - DO_ASSERT((*env)->GetJavaVM(env, &calls->vm) == 0); - calls->o = (*env)->NewWeakGlobalRef(env, o); - calls->handle_open_channel_meth = (*env)->GetMethodID(env, c, "handle_open_channel", "([BJJ)V"); - CHECK(calls->handle_open_channel_meth != NULL); - calls->handle_accept_channel_meth = (*env)->GetMethodID(env, c, "handle_accept_channel", "([BJJ)V"); - CHECK(calls->handle_accept_channel_meth != NULL); - calls->handle_funding_created_meth = (*env)->GetMethodID(env, c, "handle_funding_created", "([BJ)V"); - CHECK(calls->handle_funding_created_meth != NULL); - calls->handle_funding_signed_meth = (*env)->GetMethodID(env, c, "handle_funding_signed", "([BJ)V"); - CHECK(calls->handle_funding_signed_meth != NULL); - calls->handle_funding_locked_meth = (*env)->GetMethodID(env, c, "handle_funding_locked", "([BJ)V"); - CHECK(calls->handle_funding_locked_meth != NULL); - calls->handle_shutdown_meth = (*env)->GetMethodID(env, c, "handle_shutdown", "([BJ)V"); - CHECK(calls->handle_shutdown_meth != NULL); - calls->handle_closing_signed_meth = (*env)->GetMethodID(env, c, "handle_closing_signed", "([BJ)V"); - CHECK(calls->handle_closing_signed_meth != NULL); - calls->handle_update_add_htlc_meth = (*env)->GetMethodID(env, c, "handle_update_add_htlc", "([BJ)V"); - CHECK(calls->handle_update_add_htlc_meth != NULL); - calls->handle_update_fulfill_htlc_meth = (*env)->GetMethodID(env, c, "handle_update_fulfill_htlc", "([BJ)V"); - CHECK(calls->handle_update_fulfill_htlc_meth != NULL); - calls->handle_update_fail_htlc_meth = (*env)->GetMethodID(env, c, "handle_update_fail_htlc", "([BJ)V"); - CHECK(calls->handle_update_fail_htlc_meth != NULL); - calls->handle_update_fail_malformed_htlc_meth = (*env)->GetMethodID(env, c, "handle_update_fail_malformed_htlc", "([BJ)V"); - CHECK(calls->handle_update_fail_malformed_htlc_meth != NULL); - calls->handle_commitment_signed_meth = (*env)->GetMethodID(env, c, "handle_commitment_signed", "([BJ)V"); - CHECK(calls->handle_commitment_signed_meth != NULL); - calls->handle_revoke_and_ack_meth = (*env)->GetMethodID(env, c, "handle_revoke_and_ack", "([BJ)V"); - CHECK(calls->handle_revoke_and_ack_meth != NULL); - calls->handle_update_fee_meth = (*env)->GetMethodID(env, c, "handle_update_fee", "([BJ)V"); - CHECK(calls->handle_update_fee_meth != NULL); - calls->handle_announcement_signatures_meth = (*env)->GetMethodID(env, c, "handle_announcement_signatures", "([BJ)V"); - CHECK(calls->handle_announcement_signatures_meth != NULL); - calls->peer_disconnected_meth = (*env)->GetMethodID(env, c, "peer_disconnected", "([BZ)V"); - CHECK(calls->peer_disconnected_meth != NULL); - calls->peer_connected_meth = (*env)->GetMethodID(env, c, "peer_connected", "([BJ)V"); - CHECK(calls->peer_connected_meth != NULL); - calls->handle_channel_reestablish_meth = (*env)->GetMethodID(env, c, "handle_channel_reestablish", "([BJ)V"); - CHECK(calls->handle_channel_reestablish_meth != NULL); - calls->handle_error_meth = (*env)->GetMethodID(env, c, "handle_error", "([BJ)V"); - CHECK(calls->handle_error_meth != NULL); - LDKChannelMessageHandler ret = { - .this_arg = (void*) calls, - .handle_open_channel = handle_open_channel_jcall, - .handle_accept_channel = handle_accept_channel_jcall, - .handle_funding_created = handle_funding_created_jcall, - .handle_funding_signed = handle_funding_signed_jcall, - .handle_funding_locked = handle_funding_locked_jcall, - .handle_shutdown = handle_shutdown_jcall, - .handle_closing_signed = handle_closing_signed_jcall, - .handle_update_add_htlc = handle_update_add_htlc_jcall, - .handle_update_fulfill_htlc = handle_update_fulfill_htlc_jcall, - .handle_update_fail_htlc = handle_update_fail_htlc_jcall, - .handle_update_fail_malformed_htlc = handle_update_fail_malformed_htlc_jcall, - .handle_commitment_signed = handle_commitment_signed_jcall, - .handle_revoke_and_ack = handle_revoke_and_ack_jcall, - .handle_update_fee = handle_update_fee_jcall, - .handle_announcement_signatures = handle_announcement_signatures_jcall, - .peer_disconnected = peer_disconnected_jcall, - .peer_connected = peer_connected_jcall, - .handle_channel_reestablish = handle_channel_reestablish_jcall, - .handle_error = handle_error_jcall, - .free = LDKChannelMessageHandler_JCalls_free, - .MessageSendEventsProvider = LDKMessageSendEventsProvider_init(env, clz, MessageSendEventsProvider), - }; - calls->MessageSendEventsProvider = ret.MessageSendEventsProvider.this_arg; - return ret; +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1HolderCommitmentTransactionDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_HolderCommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_HolderCommitmentTransactionDecodeErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1HolderCommitmentTransactionDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_HolderCommitmentTransactionDecodeErrorZ* orig_conv = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(orig & ~1); + LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1BuiltCommitmentTransactionDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKBuiltCommitmentTransaction o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = BuiltCommitmentTransaction_clone(&o_conv); + LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKChannelMessageHandler_1new(JNIEnv *env, jclass clz, jobject o, jobject MessageSendEventsProvider) { - LDKChannelMessageHandler *res_ptr = MALLOC(sizeof(LDKChannelMessageHandler), "LDKChannelMessageHandler"); - *res_ptr = LDKChannelMessageHandler_init(env, clz, o, MessageSendEventsProvider); - return (long)res_ptr; + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1BuiltCommitmentTransactionDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1open_1channel(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t their_features, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKInitFeatures their_features_conv; - their_features_conv.inner = (void*)(their_features & (~1)); - their_features_conv.is_owned = (their_features & 1) || (their_features == 0); - // Warning: we need a move here but no clone is available for LDKInitFeatures - LDKOpenChannel msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_open_channel)(this_arg_conv->this_arg, their_node_id_ref, their_features_conv, &msg_conv); + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1BuiltCommitmentTransactionDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_BuiltCommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_BuiltCommitmentTransactionDecodeErrorZ_free(_res_conv); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1accept_1channel(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t their_features, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKInitFeatures their_features_conv; - their_features_conv.inner = (void*)(their_features & (~1)); - their_features_conv.is_owned = (their_features & 1) || (their_features == 0); - // Warning: we need a move here but no clone is available for LDKInitFeatures - LDKAcceptChannel msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_accept_channel)(this_arg_conv->this_arg, their_node_id_ref, their_features_conv, &msg_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1BuiltCommitmentTransactionDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* orig_conv = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(orig & ~1); + LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1funding_1created(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKFundingCreated msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_funding_created)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CommitmentTransactionDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKCommitmentTransaction o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = CommitmentTransaction_clone(&o_conv); + LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1funding_1signed(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKFundingSigned msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_funding_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CommitmentTransactionDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1funding_1locked(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKFundingLocked msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_funding_locked)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CommitmentTransactionDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_CommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_CommitmentTransactionDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_CommitmentTransactionDecodeErrorZ_free(_res_conv); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1shutdown(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKShutdown msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_shutdown)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CommitmentTransactionDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_CommitmentTransactionDecodeErrorZ* orig_conv = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(orig & ~1); + LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1closing_1signed(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKClosingSigned msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_closing_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1TrustedCommitmentTransactionNoneZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKTrustedCommitmentTransaction o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + // Warning: we need a move here but no clone is available for LDKTrustedCommitmentTransaction + LDKCResult_TrustedCommitmentTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ), "LDKCResult_TrustedCommitmentTransactionNoneZ"); + *ret_conv = CResult_TrustedCommitmentTransactionNoneZ_ok(o_conv); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1add_1htlc(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKUpdateAddHTLC msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_update_add_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1TrustedCommitmentTransactionNoneZ_1err(JNIEnv *env, jclass clz) { + LDKCResult_TrustedCommitmentTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ), "LDKCResult_TrustedCommitmentTransactionNoneZ"); + *ret_conv = CResult_TrustedCommitmentTransactionNoneZ_err(); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1fulfill_1htlc(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKUpdateFulfillHTLC msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_update_fulfill_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1TrustedCommitmentTransactionNoneZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_TrustedCommitmentTransactionNoneZ _res_conv = *(LDKCResult_TrustedCommitmentTransactionNoneZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_TrustedCommitmentTransactionNoneZ_free(_res_conv); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1fail_1htlc(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKUpdateFailHTLC msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_update_fail_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1ok(JNIEnv *env, jclass clz, jobjectArray o) { + LDKCVec_SignatureZ o_constr; + o_constr.datalen = (*env)->GetArrayLength(env, o); + if (o_constr.datalen > 0) + o_constr.data = MALLOC(o_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements"); + else + o_constr.data = NULL; + for (size_t i = 0; i < o_constr.datalen; i++) { + int8_tArray arr_conv_8 = (*env)->GetObjectArrayElement(env, o, i); + LDKSignature arr_conv_8_ref; + CHECK((*env)->GetArrayLength(env, arr_conv_8) == 64); + (*env)->GetByteArrayRegion(env, arr_conv_8, 0, 64, arr_conv_8_ref.compact_form); + o_constr.data[i] = arr_conv_8_ref; + } + LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ"); + *ret_conv = CResult_CVec_SignatureZNoneZ_ok(o_constr); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1fail_1malformed_1htlc(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKUpdateFailMalformedHTLC msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_update_fail_malformed_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1err(JNIEnv *env, jclass clz) { + LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ"); + *ret_conv = CResult_CVec_SignatureZNoneZ_err(); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1commitment_1signed(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKCommitmentSigned msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_commitment_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_CVec_SignatureZNoneZ _res_conv = *(LDKCResult_CVec_SignatureZNoneZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_CVec_SignatureZNoneZ_free(_res_conv); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1revoke_1and_1ack(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKRevokeAndACK msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_revoke_and_ack)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_CVec_SignatureZNoneZ* orig_conv = (LDKCResult_CVec_SignatureZNoneZ*)(orig & ~1); + LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ"); + *ret_conv = CResult_CVec_SignatureZNoneZ_clone(orig_conv); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1fee(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKUpdateFee msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_update_fee)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1PublicKeyZ_1free(JNIEnv *env, jclass clz, jobjectArray _res) { + LDKCVec_PublicKeyZ _res_constr; + _res_constr.datalen = (*env)->GetArrayLength(env, _res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKPublicKey), "LDKCVec_PublicKeyZ Elements"); + else + _res_constr.data = NULL; + for (size_t i = 0; i < _res_constr.datalen; i++) { + int8_tArray arr_conv_8 = (*env)->GetObjectArrayElement(env, _res, i); + LDKPublicKey arr_conv_8_ref; + CHECK((*env)->GetArrayLength(env, arr_conv_8) == 33); + (*env)->GetByteArrayRegion(env, arr_conv_8, 0, 33, arr_conv_8_ref.compressed_form); + _res_constr.data[i] = arr_conv_8_ref; + } + CVec_PublicKeyZ_free(_res_constr); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1announcement_1signatures(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKAnnouncementSignatures msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_announcement_signatures)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1u8Z_1free(JNIEnv *env, jclass clz, int8_tArray _res) { + LDKCVec_u8Z _res_ref; + _res_ref.datalen = (*env)->GetArrayLength(env, _res); + _res_ref.data = MALLOC(_res_ref.datalen, "LDKCVec_u8Z Bytes"); + (*env)->GetByteArrayRegion(env, _res, 0, _res_ref.datalen, _res_ref.data); + CVec_u8Z_free(_res_ref); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1ok(JNIEnv *env, jclass clz, int8_tArray o) { + LDKCVec_u8Z o_ref; + o_ref.datalen = (*env)->GetArrayLength(env, o); + o_ref.data = MALLOC(o_ref.datalen, "LDKCVec_u8Z Bytes"); + (*env)->GetByteArrayRegion(env, o, 0, o_ref.datalen, o_ref.data); + LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ"); + *ret_conv = CResult_CVec_u8ZPeerHandleErrorZ_ok(o_ref); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKPeerHandleError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = PeerHandleError_clone(&e_conv); + LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ"); + *ret_conv = CResult_CVec_u8ZPeerHandleErrorZ_err(e_conv); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1peer_1disconnected(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, jboolean no_connection_possible) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - (this_arg_conv->peer_disconnected)(this_arg_conv->this_arg, their_node_id_ref, no_connection_possible); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_CVec_u8ZPeerHandleErrorZ _res_conv = *(LDKCResult_CVec_u8ZPeerHandleErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_CVec_u8ZPeerHandleErrorZ_free(_res_conv); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1peer_1connected(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKInit msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->peer_connected)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_CVec_u8ZPeerHandleErrorZ* orig_conv = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(orig & ~1); + LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ"); + *ret_conv = CResult_CVec_u8ZPeerHandleErrorZ_clone(orig_conv); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1channel_1reestablish(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKChannelReestablish msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_channel_reestablish)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1ok(JNIEnv *env, jclass clz) { + LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ"); + *ret_conv = CResult_NonePeerHandleErrorZ_ok(); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1error(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKErrorMessage msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_error)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKPeerHandleError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = PeerHandleError_clone(&e_conv); + LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ"); + *ret_conv = CResult_NonePeerHandleErrorZ_err(e_conv); + return (long)ret_conv; } -typedef struct LDKRoutingMessageHandler_JCalls { - atomic_size_t refcnt; - JavaVM *vm; - jweak o; - LDKMessageSendEventsProvider_JCalls* MessageSendEventsProvider; - jmethodID handle_node_announcement_meth; - jmethodID handle_channel_announcement_meth; - jmethodID handle_channel_update_meth; - jmethodID handle_htlc_fail_channel_update_meth; - jmethodID get_next_channel_announcements_meth; - jmethodID get_next_node_announcements_meth; - jmethodID sync_routing_table_meth; - jmethodID handle_reply_channel_range_meth; - jmethodID handle_reply_short_channel_ids_end_meth; - jmethodID handle_query_channel_range_meth; - jmethodID handle_query_short_channel_ids_meth; -} LDKRoutingMessageHandler_JCalls; -static void LDKRoutingMessageHandler_JCalls_free(void* this_arg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - (*env)->DeleteWeakGlobalRef(env, j_calls->o); - FREE(j_calls); - } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_NonePeerHandleErrorZ _res_conv = *(LDKCResult_NonePeerHandleErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_NonePeerHandleErrorZ_free(_res_conv); } -LDKCResult_boolLightningErrorZ handle_node_announcement_jcall(const void* this_arg, const LDKNodeAnnouncement * msg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - LDKNodeAnnouncement msg_var = *msg; - msg_var = NodeAnnouncement_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - LDKCResult_boolLightningErrorZ* ret = (LDKCResult_boolLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_node_announcement_meth, msg_ref); - LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_boolLightningErrorZ_clone((LDKCResult_boolLightningErrorZ*)ret); - return ret_conv; + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_NonePeerHandleErrorZ* orig_conv = (LDKCResult_NonePeerHandleErrorZ*)(orig & ~1); + LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ"); + *ret_conv = CResult_NonePeerHandleErrorZ_clone(orig_conv); + return (long)ret_conv; } -LDKCResult_boolLightningErrorZ handle_channel_announcement_jcall(const void* this_arg, const LDKChannelAnnouncement * msg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - LDKChannelAnnouncement msg_var = *msg; - msg_var = ChannelAnnouncement_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - LDKCResult_boolLightningErrorZ* ret = (LDKCResult_boolLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_channel_announcement_meth, msg_ref); - LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_boolLightningErrorZ_clone((LDKCResult_boolLightningErrorZ*)ret); - return ret_conv; + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1ok(JNIEnv *env, jclass clz, jboolean o) { + LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ"); + *ret_conv = CResult_boolPeerHandleErrorZ_ok(o); + return (long)ret_conv; } -LDKCResult_boolLightningErrorZ handle_channel_update_jcall(const void* this_arg, const LDKChannelUpdate * msg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - LDKChannelUpdate msg_var = *msg; - msg_var = ChannelUpdate_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - LDKCResult_boolLightningErrorZ* ret = (LDKCResult_boolLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_channel_update_meth, msg_ref); - LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_boolLightningErrorZ_clone((LDKCResult_boolLightningErrorZ*)ret); - return ret_conv; + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKPeerHandleError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = PeerHandleError_clone(&e_conv); + LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ"); + *ret_conv = CResult_boolPeerHandleErrorZ_err(e_conv); + return (long)ret_conv; } -void handle_htlc_fail_channel_update_jcall(const void* this_arg, const LDKHTLCFailChannelUpdate * update) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - long ret_update = (long)update; - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->handle_htlc_fail_channel_update_meth, ret_update); + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_boolPeerHandleErrorZ _res_conv = *(LDKCResult_boolPeerHandleErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_boolPeerHandleErrorZ_free(_res_conv); } -LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcements_jcall(const void* this_arg, uint64_t starting_point, uint8_t batch_amount) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - int64_tArray arg = (*env)->CallObjectMethod(env, obj, j_calls->get_next_channel_announcements_meth, starting_point, batch_amount); - LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ arg_constr; - arg_constr.datalen = (*env)->GetArrayLength(env, arg); - if (arg_constr.datalen > 0) - arg_constr.data = MALLOC(arg_constr.datalen * sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ Elements"); - else - arg_constr.data = NULL; - int64_t* arg_vals = (*env)->GetLongArrayElements (env, arg, NULL); - for (size_t l = 0; l < arg_constr.datalen; l++) { - int64_t arr_conv_63 = arg_vals[l]; - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ arr_conv_63_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(((uint64_t)arr_conv_63) & ~1); - FREE((void*)arr_conv_63); - arg_constr.data[l] = arr_conv_63_conv; - } - (*env)->ReleaseLongArrayElements(env, arg, arg_vals, 0); - return arg_constr; + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_boolPeerHandleErrorZ* orig_conv = (LDKCResult_boolPeerHandleErrorZ*)(orig & ~1); + LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ"); + *ret_conv = CResult_boolPeerHandleErrorZ_clone(orig_conv); + return (long)ret_conv; } -LDKCVec_NodeAnnouncementZ get_next_node_announcements_jcall(const void* this_arg, LDKPublicKey starting_point, uint8_t batch_amount) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray starting_point_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, starting_point_arr, 0, 33, starting_point.compressed_form); - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - int64_tArray arg = (*env)->CallObjectMethod(env, obj, j_calls->get_next_node_announcements_meth, starting_point_arr, batch_amount); - LDKCVec_NodeAnnouncementZ arg_constr; - arg_constr.datalen = (*env)->GetArrayLength(env, arg); - if (arg_constr.datalen > 0) - arg_constr.data = MALLOC(arg_constr.datalen * sizeof(LDKNodeAnnouncement), "LDKCVec_NodeAnnouncementZ Elements"); - else - arg_constr.data = NULL; - int64_t* arg_vals = (*env)->GetLongArrayElements (env, arg, NULL); - for (size_t s = 0; s < arg_constr.datalen; s++) { - int64_t arr_conv_18 = arg_vals[s]; - LDKNodeAnnouncement arr_conv_18_conv; - arr_conv_18_conv.inner = (void*)(arr_conv_18 & (~1)); - arr_conv_18_conv.is_owned = (arr_conv_18 & 1) || (arr_conv_18 == 0); - arr_conv_18_conv = NodeAnnouncement_clone(&arr_conv_18_conv); - arg_constr.data[s] = arr_conv_18_conv; - } - (*env)->ReleaseLongArrayElements(env, arg, arg_vals, 0); - return arg_constr; + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1InitFeaturesDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKInitFeatures o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = InitFeatures_clone(&o_conv); + LDKCResult_InitFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitFeaturesDecodeErrorZ), "LDKCResult_InitFeaturesDecodeErrorZ"); + *ret_conv = CResult_InitFeaturesDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -void sync_routing_table_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKInit * init) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKInit init_var = *init; - init_var = Init_clone(init); - CHECK((((long)init_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&init_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long init_ref = (long)init_var.inner; - if (init_var.is_owned) { - init_ref |= 1; - } - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->sync_routing_table_meth, their_node_id_arr, init_ref); + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1InitFeaturesDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_InitFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitFeaturesDecodeErrorZ), "LDKCResult_InitFeaturesDecodeErrorZ"); + *ret_conv = CResult_InitFeaturesDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1InitFeaturesDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_InitFeaturesDecodeErrorZ _res_conv = *(LDKCResult_InitFeaturesDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_InitFeaturesDecodeErrorZ_free(_res_conv); } -LDKCResult_NoneLightningErrorZ handle_reply_channel_range_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKReplyChannelRange msg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKReplyChannelRange msg_var = msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_reply_channel_range_meth, their_node_id_arr, msg_ref); - LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)ret); - return ret_conv; + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NodeFeaturesDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKNodeFeatures o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = NodeFeatures_clone(&o_conv); + LDKCResult_NodeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeFeaturesDecodeErrorZ), "LDKCResult_NodeFeaturesDecodeErrorZ"); + *ret_conv = CResult_NodeFeaturesDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -LDKCResult_NoneLightningErrorZ handle_reply_short_channel_ids_end_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKReplyShortChannelIdsEnd msg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKReplyShortChannelIdsEnd msg_var = msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_reply_short_channel_ids_end_meth, their_node_id_arr, msg_ref); - LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)ret); - return ret_conv; + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NodeFeaturesDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_NodeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeFeaturesDecodeErrorZ), "LDKCResult_NodeFeaturesDecodeErrorZ"); + *ret_conv = CResult_NodeFeaturesDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -LDKCResult_NoneLightningErrorZ handle_query_channel_range_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKQueryChannelRange msg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKQueryChannelRange msg_var = msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_query_channel_range_meth, their_node_id_arr, msg_ref); - LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)ret); - return ret_conv; + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NodeFeaturesDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_NodeFeaturesDecodeErrorZ _res_conv = *(LDKCResult_NodeFeaturesDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_NodeFeaturesDecodeErrorZ_free(_res_conv); } -LDKCResult_NoneLightningErrorZ handle_query_short_channel_ids_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKQueryShortChannelIds msg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - int8_tArray their_node_id_arr = (*env)->NewByteArray(env, 33); - (*env)->SetByteArrayRegion(env, their_node_id_arr, 0, 33, their_node_id.compressed_form); - LDKQueryShortChannelIds msg_var = msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_query_short_channel_ids_meth, their_node_id_arr, msg_ref); - LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)ret); - return ret_conv; + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelFeaturesDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKChannelFeatures o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = ChannelFeatures_clone(&o_conv); + LDKCResult_ChannelFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ), "LDKCResult_ChannelFeaturesDecodeErrorZ"); + *ret_conv = CResult_ChannelFeaturesDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -static void* LDKRoutingMessageHandler_JCalls_clone(const void* this_arg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); - atomic_fetch_add_explicit(&j_calls->MessageSendEventsProvider->refcnt, 1, memory_order_release); - return (void*) this_arg; + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelFeaturesDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ChannelFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ), "LDKCResult_ChannelFeaturesDecodeErrorZ"); + *ret_conv = CResult_ChannelFeaturesDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -static inline LDKRoutingMessageHandler LDKRoutingMessageHandler_init (JNIEnv *env, jclass clz, jobject o, jobject MessageSendEventsProvider) { - jclass c = (*env)->GetObjectClass(env, o); - CHECK(c != NULL); - LDKRoutingMessageHandler_JCalls *calls = MALLOC(sizeof(LDKRoutingMessageHandler_JCalls), "LDKRoutingMessageHandler_JCalls"); - atomic_init(&calls->refcnt, 1); - DO_ASSERT((*env)->GetJavaVM(env, &calls->vm) == 0); - calls->o = (*env)->NewWeakGlobalRef(env, o); - calls->handle_node_announcement_meth = (*env)->GetMethodID(env, c, "handle_node_announcement", "(J)J"); - CHECK(calls->handle_node_announcement_meth != NULL); - calls->handle_channel_announcement_meth = (*env)->GetMethodID(env, c, "handle_channel_announcement", "(J)J"); - CHECK(calls->handle_channel_announcement_meth != NULL); - calls->handle_channel_update_meth = (*env)->GetMethodID(env, c, "handle_channel_update", "(J)J"); - CHECK(calls->handle_channel_update_meth != NULL); - calls->handle_htlc_fail_channel_update_meth = (*env)->GetMethodID(env, c, "handle_htlc_fail_channel_update", "(J)V"); - CHECK(calls->handle_htlc_fail_channel_update_meth != NULL); - calls->get_next_channel_announcements_meth = (*env)->GetMethodID(env, c, "get_next_channel_announcements", "(JB)[J"); - CHECK(calls->get_next_channel_announcements_meth != NULL); - calls->get_next_node_announcements_meth = (*env)->GetMethodID(env, c, "get_next_node_announcements", "([BB)[J"); - CHECK(calls->get_next_node_announcements_meth != NULL); - calls->sync_routing_table_meth = (*env)->GetMethodID(env, c, "sync_routing_table", "([BJ)V"); - CHECK(calls->sync_routing_table_meth != NULL); - calls->handle_reply_channel_range_meth = (*env)->GetMethodID(env, c, "handle_reply_channel_range", "([BJ)J"); - CHECK(calls->handle_reply_channel_range_meth != NULL); - calls->handle_reply_short_channel_ids_end_meth = (*env)->GetMethodID(env, c, "handle_reply_short_channel_ids_end", "([BJ)J"); - CHECK(calls->handle_reply_short_channel_ids_end_meth != NULL); - calls->handle_query_channel_range_meth = (*env)->GetMethodID(env, c, "handle_query_channel_range", "([BJ)J"); - CHECK(calls->handle_query_channel_range_meth != NULL); - calls->handle_query_short_channel_ids_meth = (*env)->GetMethodID(env, c, "handle_query_short_channel_ids", "([BJ)J"); - CHECK(calls->handle_query_short_channel_ids_meth != NULL); - LDKRoutingMessageHandler ret = { - .this_arg = (void*) calls, - .handle_node_announcement = handle_node_announcement_jcall, - .handle_channel_announcement = handle_channel_announcement_jcall, - .handle_channel_update = handle_channel_update_jcall, - .handle_htlc_fail_channel_update = handle_htlc_fail_channel_update_jcall, - .get_next_channel_announcements = get_next_channel_announcements_jcall, - .get_next_node_announcements = get_next_node_announcements_jcall, - .sync_routing_table = sync_routing_table_jcall, - .handle_reply_channel_range = handle_reply_channel_range_jcall, - .handle_reply_short_channel_ids_end = handle_reply_short_channel_ids_end_jcall, - .handle_query_channel_range = handle_query_channel_range_jcall, - .handle_query_short_channel_ids = handle_query_short_channel_ids_jcall, - .free = LDKRoutingMessageHandler_JCalls_free, - .MessageSendEventsProvider = LDKMessageSendEventsProvider_init(env, clz, MessageSendEventsProvider), - }; - calls->MessageSendEventsProvider = ret.MessageSendEventsProvider.this_arg; - return ret; +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelFeaturesDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_ChannelFeaturesDecodeErrorZ _res_conv = *(LDKCResult_ChannelFeaturesDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_ChannelFeaturesDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKRoutingMessageHandler_1new(JNIEnv *env, jclass clz, jobject o, jobject MessageSendEventsProvider) { - LDKRoutingMessageHandler *res_ptr = MALLOC(sizeof(LDKRoutingMessageHandler), "LDKRoutingMessageHandler"); - *res_ptr = LDKRoutingMessageHandler_init(env, clz, o, MessageSendEventsProvider); - return (long)res_ptr; + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelConfigDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKChannelConfig o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = ChannelConfig_clone(&o_conv); + LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ"); + *ret_conv = CResult_ChannelConfigDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1node_1announcement(JNIEnv *env, jclass clz, int64_t this_arg, int64_t msg) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKNodeAnnouncement msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelConfigDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ"); + *ret_conv = CResult_ChannelConfigDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelConfigDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_ChannelConfigDecodeErrorZ _res_conv = *(LDKCResult_ChannelConfigDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_ChannelConfigDecodeErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelConfigDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_ChannelConfigDecodeErrorZ* orig_conv = (LDKCResult_ChannelConfigDecodeErrorZ*)(orig & ~1); + LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ"); + *ret_conv = CResult_ChannelConfigDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1ok(JNIEnv *env, jclass clz, jboolean o) { LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); - *ret_conv = (this_arg_conv->handle_node_announcement)(this_arg_conv->this_arg, &msg_conv); + *ret_conv = CResult_boolLightningErrorZ_ok(o); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1channel_1announcement(JNIEnv *env, jclass clz, int64_t this_arg, int64_t msg) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKChannelAnnouncement msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKLightningError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = LightningError_clone(&e_conv); LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); - *ret_conv = (this_arg_conv->handle_channel_announcement)(this_arg_conv->this_arg, &msg_conv); + *ret_conv = CResult_boolLightningErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1channel_1update(JNIEnv *env, jclass clz, int64_t this_arg, int64_t msg) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKChannelUpdate msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_boolLightningErrorZ _res_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_boolLightningErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_boolLightningErrorZ* orig_conv = (LDKCResult_boolLightningErrorZ*)(orig & ~1); LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); - *ret_conv = (this_arg_conv->handle_channel_update)(this_arg_conv->this_arg, &msg_conv); + *ret_conv = CResult_boolLightningErrorZ_clone(orig_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1htlc_1fail_1channel_1update(JNIEnv *env, jclass clz, int64_t this_arg, int64_t update) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKHTLCFailChannelUpdate* update_conv = (LDKHTLCFailChannelUpdate*)update; - (this_arg_conv->handle_htlc_fail_channel_update)(this_arg_conv->this_arg, update_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* orig_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(orig & ~1); + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_ref = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ"); + *ret_ref = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(orig_conv); + return (long)ret_ref; } -JNIEXPORT int64_tArray JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1get_1next_1channel_1announcements(JNIEnv *env, jclass clz, int64_t this_arg, int64_t starting_point, int8_t batch_amount) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret_var = (this_arg_conv->get_next_channel_announcements)(this_arg_conv->this_arg, starting_point, batch_amount); - int64_tArray ret_arr = (*env)->NewLongArray(env, ret_var.datalen); - int64_t *ret_arr_ptr = (*env)->GetPrimitiveArrayCritical(env, ret_arr, NULL); - for (size_t l = 0; l < ret_var.datalen; l++) { - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* arr_conv_63_ref = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ"); - *arr_conv_63_ref = ret_var.data[l]; - ret_arr_ptr[l] = (long)arr_conv_63_ref; - } - (*env)->ReleasePrimitiveArrayCritical(env, ret_arr, ret_arr_ptr, 0); - FREE(ret_var.data); - return ret_arr; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1new(JNIEnv *env, jclass clz, int64_t a, int64_t b, int64_t c) { + LDKChannelAnnouncement a_conv; + a_conv.inner = (void*)(a & (~1)); + a_conv.is_owned = (a & 1) || (a == 0); + a_conv = ChannelAnnouncement_clone(&a_conv); + LDKChannelUpdate b_conv; + b_conv.inner = (void*)(b & (~1)); + b_conv.is_owned = (b & 1) || (b == 0); + b_conv = ChannelUpdate_clone(&b_conv); + LDKChannelUpdate c_conv; + c_conv.inner = (void*)(c & (~1)); + c_conv.is_owned = (c & 1) || (c == 0); + c_conv = ChannelUpdate_clone(&c_conv); + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_ref = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ"); + *ret_ref = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(a_conv, b_conv, c_conv); + return (long)ret_ref; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(_res_conv); } -JNIEXPORT int64_tArray JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1get_1next_1node_1announcements(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray starting_point, int8_t batch_amount) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKPublicKey starting_point_ref; - CHECK((*env)->GetArrayLength(env, starting_point) == 33); - (*env)->GetByteArrayRegion(env, starting_point, 0, 33, starting_point_ref.compressed_form); - LDKCVec_NodeAnnouncementZ ret_var = (this_arg_conv->get_next_node_announcements)(this_arg_conv->this_arg, starting_point_ref, batch_amount); - int64_tArray ret_arr = (*env)->NewLongArray(env, ret_var.datalen); - int64_t *ret_arr_ptr = (*env)->GetPrimitiveArrayCritical(env, ret_arr, NULL); - for (size_t s = 0; s < ret_var.datalen; s++) { - LDKNodeAnnouncement arr_conv_18_var = ret_var.data[s]; - CHECK((((long)arr_conv_18_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&arr_conv_18_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long arr_conv_18_ref = (long)arr_conv_18_var.inner; - if (arr_conv_18_var.is_owned) { - arr_conv_18_ref |= 1; - } - ret_arr_ptr[s] = arr_conv_18_ref; +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { + LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res_constr; + _res_constr.datalen = (*env)->GetArrayLength(env, _res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ Elements"); + else + _res_constr.data = NULL; + int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); + for (size_t l = 0; l < _res_constr.datalen; l++) { + int64_t arr_conv_63 = _res_vals[l]; + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ arr_conv_63_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(((uint64_t)arr_conv_63) & ~1); + FREE((void*)arr_conv_63); + _res_constr.data[l] = arr_conv_63_conv; } - (*env)->ReleasePrimitiveArrayCritical(env, ret_arr, ret_arr_ptr, 0); - FREE(ret_var.data); - return ret_arr; + (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); + CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(_res_constr); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1sync_1routing_1table(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t init) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKInit init_conv; - init_conv.inner = (void*)(init & (~1)); - init_conv.is_owned = false; - (this_arg_conv->sync_routing_table)(this_arg_conv->this_arg, their_node_id_ref, &init_conv); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1NodeAnnouncementZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { + LDKCVec_NodeAnnouncementZ _res_constr; + _res_constr.datalen = (*env)->GetArrayLength(env, _res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKNodeAnnouncement), "LDKCVec_NodeAnnouncementZ Elements"); + else + _res_constr.data = NULL; + int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); + for (size_t s = 0; s < _res_constr.datalen; s++) { + int64_t arr_conv_18 = _res_vals[s]; + LDKNodeAnnouncement arr_conv_18_conv; + arr_conv_18_conv.inner = (void*)(arr_conv_18 & (~1)); + arr_conv_18_conv.is_owned = (arr_conv_18 & 1) || (arr_conv_18 == 0); + _res_constr.data[s] = arr_conv_18_conv; + } + (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); + CVec_NodeAnnouncementZ_free(_res_constr); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1reply_1channel_1range(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKReplyChannelRange msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = (msg & 1) || (msg == 0); - msg_conv = ReplyChannelRange_clone(&msg_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NoneLightningErrorZ_1ok(JNIEnv *env, jclass clz) { LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); - *ret_conv = (this_arg_conv->handle_reply_channel_range)(this_arg_conv->this_arg, their_node_id_ref, msg_conv); + *ret_conv = CResult_NoneLightningErrorZ_ok(); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1reply_1short_1channel_1ids_1end(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKReplyShortChannelIdsEnd msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = (msg & 1) || (msg == 0); - msg_conv = ReplyShortChannelIdsEnd_clone(&msg_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NoneLightningErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKLightningError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = LightningError_clone(&e_conv); LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); - *ret_conv = (this_arg_conv->handle_reply_short_channel_ids_end)(this_arg_conv->this_arg, their_node_id_ref, msg_conv); + *ret_conv = CResult_NoneLightningErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1query_1channel_1range(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKQueryChannelRange msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = (msg & 1) || (msg == 0); - msg_conv = QueryChannelRange_clone(&msg_conv); - LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); - *ret_conv = (this_arg_conv->handle_query_channel_range)(this_arg_conv->this_arg, their_node_id_ref, msg_conv); - return (long)ret_conv; +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneLightningErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_NoneLightningErrorZ _res_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_NoneLightningErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1query_1short_1channel_1ids(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t msg) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK((*env)->GetArrayLength(env, their_node_id) == 33); - (*env)->GetByteArrayRegion(env, their_node_id, 0, 33, their_node_id_ref.compressed_form); - LDKQueryShortChannelIds msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = (msg & 1) || (msg == 0); - msg_conv = QueryShortChannelIds_clone(&msg_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NoneLightningErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_NoneLightningErrorZ* orig_conv = (LDKCResult_NoneLightningErrorZ*)(orig & ~1); LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); - *ret_conv = (this_arg_conv->handle_query_short_channel_ids)(this_arg_conv->this_arg, their_node_id_ref, msg_conv); + *ret_conv = CResult_NoneLightningErrorZ_clone(orig_conv); return (long)ret_conv; } -typedef struct LDKSocketDescriptor_JCalls { - atomic_size_t refcnt; - JavaVM *vm; - jweak o; - jmethodID send_data_meth; - jmethodID disconnect_socket_meth; - jmethodID eq_meth; - jmethodID hash_meth; -} LDKSocketDescriptor_JCalls; -static void LDKSocketDescriptor_JCalls_free(void* this_arg) { - LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; - if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - (*env)->DeleteWeakGlobalRef(env, j_calls->o); - FREE(j_calls); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1MessageSendEventZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { + LDKCVec_MessageSendEventZ _res_constr; + _res_constr.datalen = (*env)->GetArrayLength(env, _res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKMessageSendEvent), "LDKCVec_MessageSendEventZ Elements"); + else + _res_constr.data = NULL; + int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); + for (size_t s = 0; s < _res_constr.datalen; s++) { + int64_t arr_conv_18 = _res_vals[s]; + LDKMessageSendEvent arr_conv_18_conv = *(LDKMessageSendEvent*)(((uint64_t)arr_conv_18) & ~1); + FREE((void*)arr_conv_18); + _res_constr.data[s] = arr_conv_18_conv; } + (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); + CVec_MessageSendEventZ_free(_res_constr); } -uintptr_t send_data_jcall(void* this_arg, LDKu8slice data, bool resume_read) { - LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - LDKu8slice data_var = data; - int8_tArray data_arr = (*env)->NewByteArray(env, data_var.datalen); - (*env)->SetByteArrayRegion(env, data_arr, 0, data_var.datalen, data_var.data); - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - return (*env)->CallLongMethod(env, obj, j_calls->send_data_meth, data_arr, resume_read); -} -void disconnect_socket_jcall(void* this_arg) { - LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - return (*env)->CallVoidMethod(env, obj, j_calls->disconnect_socket_meth); -} -bool eq_jcall(const void* this_arg, const LDKSocketDescriptor * other_arg) { - LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - LDKSocketDescriptor *other_arg_clone = MALLOC(sizeof(LDKSocketDescriptor), "LDKSocketDescriptor"); - *other_arg_clone = SocketDescriptor_clone(other_arg); - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - return (*env)->CallBooleanMethod(env, obj, j_calls->eq_meth, (long)other_arg_clone); + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1DirectionalChannelInfoDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKDirectionalChannelInfo o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = DirectionalChannelInfo_clone(&o_conv); + LDKCResult_DirectionalChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DirectionalChannelInfoDecodeErrorZ), "LDKCResult_DirectionalChannelInfoDecodeErrorZ"); + *ret_conv = CResult_DirectionalChannelInfoDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -uint64_t hash_jcall(const void* this_arg) { - LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; - JNIEnv *env; - DO_ASSERT((*j_calls->vm)->GetEnv(j_calls->vm, (void**)&env, JNI_VERSION_1_6) == JNI_OK); - jobject obj = (*env)->NewLocalRef(env, j_calls->o); - CHECK(obj != NULL); - return (*env)->CallLongMethod(env, obj, j_calls->hash_meth); + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1DirectionalChannelInfoDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_DirectionalChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DirectionalChannelInfoDecodeErrorZ), "LDKCResult_DirectionalChannelInfoDecodeErrorZ"); + *ret_conv = CResult_DirectionalChannelInfoDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -static void* LDKSocketDescriptor_JCalls_clone(const void* this_arg) { - LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; - atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); - return (void*) this_arg; + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1DirectionalChannelInfoDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_DirectionalChannelInfoDecodeErrorZ _res_conv = *(LDKCResult_DirectionalChannelInfoDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_DirectionalChannelInfoDecodeErrorZ_free(_res_conv); } -static inline LDKSocketDescriptor LDKSocketDescriptor_init (JNIEnv *env, jclass clz, jobject o) { - jclass c = (*env)->GetObjectClass(env, o); - CHECK(c != NULL); - LDKSocketDescriptor_JCalls *calls = MALLOC(sizeof(LDKSocketDescriptor_JCalls), "LDKSocketDescriptor_JCalls"); - atomic_init(&calls->refcnt, 1); - DO_ASSERT((*env)->GetJavaVM(env, &calls->vm) == 0); - calls->o = (*env)->NewWeakGlobalRef(env, o); - calls->send_data_meth = (*env)->GetMethodID(env, c, "send_data", "([BZ)J"); - CHECK(calls->send_data_meth != NULL); - calls->disconnect_socket_meth = (*env)->GetMethodID(env, c, "disconnect_socket", "()V"); - CHECK(calls->disconnect_socket_meth != NULL); - calls->eq_meth = (*env)->GetMethodID(env, c, "eq", "(J)Z"); - CHECK(calls->eq_meth != NULL); - calls->hash_meth = (*env)->GetMethodID(env, c, "hash", "()J"); - CHECK(calls->hash_meth != NULL); - LDKSocketDescriptor ret = { - .this_arg = (void*) calls, - .send_data = send_data_jcall, - .disconnect_socket = disconnect_socket_jcall, - .eq = eq_jcall, - .hash = hash_jcall, - .clone = LDKSocketDescriptor_JCalls_clone, - .free = LDKSocketDescriptor_JCalls_free, - }; - return ret; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1DirectionalChannelInfoDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_DirectionalChannelInfoDecodeErrorZ* orig_conv = (LDKCResult_DirectionalChannelInfoDecodeErrorZ*)(orig & ~1); + LDKCResult_DirectionalChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DirectionalChannelInfoDecodeErrorZ), "LDKCResult_DirectionalChannelInfoDecodeErrorZ"); + *ret_conv = CResult_DirectionalChannelInfoDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKSocketDescriptor_1new(JNIEnv *env, jclass clz, jobject o) { - LDKSocketDescriptor *res_ptr = MALLOC(sizeof(LDKSocketDescriptor), "LDKSocketDescriptor"); - *res_ptr = LDKSocketDescriptor_init(env, clz, o); - return (long)res_ptr; + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelInfoDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKChannelInfo o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + // Warning: we need a move here but no clone is available for LDKChannelInfo + LDKCResult_ChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelInfoDecodeErrorZ), "LDKCResult_ChannelInfoDecodeErrorZ"); + *ret_conv = CResult_ChannelInfoDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_SocketDescriptor_1send_1data(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray data, jboolean resume_read) { - LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg; - LDKu8slice data_ref; - data_ref.datalen = (*env)->GetArrayLength(env, data); - data_ref.data = (*env)->GetByteArrayElements (env, data, NULL); - int64_t ret_val = (this_arg_conv->send_data)(this_arg_conv->this_arg, data_ref, resume_read); - (*env)->ReleaseByteArrayElements(env, data, (int8_t*)data_ref.data, 0); - return ret_val; + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelInfoDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelInfoDecodeErrorZ), "LDKCResult_ChannelInfoDecodeErrorZ"); + *ret_conv = CResult_ChannelInfoDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_SocketDescriptor_1disconnect_1socket(JNIEnv *env, jclass clz, int64_t this_arg) { - LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg; - (this_arg_conv->disconnect_socket)(this_arg_conv->this_arg); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelInfoDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_ChannelInfoDecodeErrorZ _res_conv = *(LDKCResult_ChannelInfoDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_ChannelInfoDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_SocketDescriptor_1hash(JNIEnv *env, jclass clz, int64_t this_arg) { - LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg; - int64_t ret_val = (this_arg_conv->hash)(this_arg_conv->this_arg); - return ret_val; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RoutingFeesDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKRoutingFees o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = RoutingFees_clone(&o_conv); + LDKCResult_RoutingFeesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RoutingFeesDecodeErrorZ), "LDKCResult_RoutingFeesDecodeErrorZ"); + *ret_conv = CResult_RoutingFeesDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Transaction_1free(JNIEnv *env, jclass clz, int8_tArray _res) { - LDKTransaction _res_ref; - _res_ref.datalen = (*env)->GetArrayLength(env, _res); - _res_ref.data = MALLOC(_res_ref.datalen, "LDKTransaction Bytes"); - (*env)->GetByteArrayRegion(env, _res, 0, _res_ref.datalen, _res_ref.data); - _res_ref.data_is_owned = true; - Transaction_free(_res_ref); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RoutingFeesDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_RoutingFeesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RoutingFeesDecodeErrorZ), "LDKCResult_RoutingFeesDecodeErrorZ"); + *ret_conv = CResult_RoutingFeesDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxOut_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1RoutingFeesDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKTxOut _res_conv = *(LDKTxOut*)(((uint64_t)_res) & ~1); + LDKCResult_RoutingFeesDecodeErrorZ _res_conv = *(LDKCResult_RoutingFeesDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - TxOut_free(_res_conv); + CResult_RoutingFeesDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_TxOut_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKTxOut* orig_conv = (LDKTxOut*)(orig & ~1); - LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut"); - *ret_ref = TxOut_clone(orig_conv); - return (long)ret_ref; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RoutingFeesDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_RoutingFeesDecodeErrorZ* orig_conv = (LDKCResult_RoutingFeesDecodeErrorZ*)(orig & ~1); + LDKCResult_RoutingFeesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RoutingFeesDecodeErrorZ), "LDKCResult_RoutingFeesDecodeErrorZ"); + *ret_conv = CResult_RoutingFeesDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1SpendableOutputDescriptorZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { - LDKCVec_SpendableOutputDescriptorZ _res_constr; +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1NetAddressZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { + LDKCVec_NetAddressZ _res_constr; _res_constr.datalen = (*env)->GetArrayLength(env, _res); if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKSpendableOutputDescriptor), "LDKCVec_SpendableOutputDescriptorZ Elements"); + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements"); else _res_constr.data = NULL; int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); - for (size_t b = 0; b < _res_constr.datalen; b++) { - int64_t arr_conv_27 = _res_vals[b]; - LDKSpendableOutputDescriptor arr_conv_27_conv = *(LDKSpendableOutputDescriptor*)(((uint64_t)arr_conv_27) & ~1); - FREE((void*)arr_conv_27); - _res_constr.data[b] = arr_conv_27_conv; + for (size_t m = 0; m < _res_constr.datalen; m++) { + int64_t arr_conv_12 = _res_vals[m]; + LDKNetAddress arr_conv_12_conv = *(LDKNetAddress*)(((uint64_t)arr_conv_12) & ~1); + FREE((void*)arr_conv_12); + _res_constr.data[m] = arr_conv_12_conv; } (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); - CVec_SpendableOutputDescriptorZ_free(_res_constr); + CVec_NetAddressZ_free(_res_constr); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1MessageSendEventZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { - LDKCVec_MessageSendEventZ _res_constr; - _res_constr.datalen = (*env)->GetArrayLength(env, _res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKMessageSendEvent), "LDKCVec_MessageSendEventZ Elements"); - else - _res_constr.data = NULL; - int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); - for (size_t s = 0; s < _res_constr.datalen; s++) { - int64_t arr_conv_18 = _res_vals[s]; - LDKMessageSendEvent arr_conv_18_conv = *(LDKMessageSendEvent*)(((uint64_t)arr_conv_18) & ~1); - FREE((void*)arr_conv_18); - _res_constr.data[s] = arr_conv_18_conv; - } - (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); - CVec_MessageSendEventZ_free(_res_constr); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementInfoDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKNodeAnnouncementInfo o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = NodeAnnouncementInfo_clone(&o_conv); + LDKCResult_NodeAnnouncementInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ), "LDKCResult_NodeAnnouncementInfoDecodeErrorZ"); + *ret_conv = CResult_NodeAnnouncementInfoDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1EventZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { - LDKCVec_EventZ _res_constr; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementInfoDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_NodeAnnouncementInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ), "LDKCResult_NodeAnnouncementInfoDecodeErrorZ"); + *ret_conv = CResult_NodeAnnouncementInfoDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementInfoDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res_conv = *(LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_NodeAnnouncementInfoDecodeErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementInfoDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_NodeAnnouncementInfoDecodeErrorZ* orig_conv = (LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(orig & ~1); + LDKCResult_NodeAnnouncementInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ), "LDKCResult_NodeAnnouncementInfoDecodeErrorZ"); + *ret_conv = CResult_NodeAnnouncementInfoDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1u64Z_1free(JNIEnv *env, jclass clz, int64_tArray _res) { + LDKCVec_u64Z _res_constr; _res_constr.datalen = (*env)->GetArrayLength(env, _res); if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKEvent), "LDKCVec_EventZ Elements"); + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements"); else _res_constr.data = NULL; int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); - for (size_t h = 0; h < _res_constr.datalen; h++) { - int64_t arr_conv_7 = _res_vals[h]; - LDKEvent arr_conv_7_conv = *(LDKEvent*)(((uint64_t)arr_conv_7) & ~1); - FREE((void*)arr_conv_7); - _res_constr.data[h] = arr_conv_7_conv; + for (size_t g = 0; g < _res_constr.datalen; g++) { + int64_t arr_conv_6 = _res_vals[g]; + _res_constr.data[g] = arr_conv_6; } (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); - CVec_EventZ_free(_res_constr); + CVec_u64Z_free(_res_constr); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1usizeTransactionZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NodeInfoDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKNodeInfo o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = NodeInfo_clone(&o_conv); + LDKCResult_NodeInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeInfoDecodeErrorZ), "LDKCResult_NodeInfoDecodeErrorZ"); + *ret_conv = CResult_NodeInfoDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NodeInfoDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_NodeInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeInfoDecodeErrorZ), "LDKCResult_NodeInfoDecodeErrorZ"); + *ret_conv = CResult_NodeInfoDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NodeInfoDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKC2Tuple_usizeTransactionZ _res_conv = *(LDKC2Tuple_usizeTransactionZ*)(((uint64_t)_res) & ~1); + LDKCResult_NodeInfoDecodeErrorZ _res_conv = *(LDKCResult_NodeInfoDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - C2Tuple_usizeTransactionZ_free(_res_conv); + CResult_NodeInfoDecodeErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NodeInfoDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_NodeInfoDecodeErrorZ* orig_conv = (LDKCResult_NodeInfoDecodeErrorZ*)(orig & ~1); + LDKCResult_NodeInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeInfoDecodeErrorZ), "LDKCResult_NodeInfoDecodeErrorZ"); + *ret_conv = CResult_NodeInfoDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NetworkGraphDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKNetworkGraph o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + // Warning: we need a move here but no clone is available for LDKNetworkGraph + LDKCResult_NetworkGraphDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetworkGraphDecodeErrorZ), "LDKCResult_NetworkGraphDecodeErrorZ"); + *ret_conv = CResult_NetworkGraphDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NetworkGraphDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_NetworkGraphDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetworkGraphDecodeErrorZ), "LDKCResult_NetworkGraphDecodeErrorZ"); + *ret_conv = CResult_NetworkGraphDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NetworkGraphDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_NetworkGraphDecodeErrorZ _res_conv = *(LDKCResult_NetworkGraphDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_NetworkGraphDecodeErrorZ_free(_res_conv); } JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1usizeTransactionZ_1new(JNIEnv *env, jclass clz, int64_t a, int8_tArray b) { @@ -5358,6 +7044,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1usizeTransactionZ_ return (long)ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1usizeTransactionZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKC2Tuple_usizeTransactionZ _res_conv = *(LDKC2Tuple_usizeTransactionZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + C2Tuple_usizeTransactionZ_free(_res_conv); +} + JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C2Tuple_1usizeTransactionZZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { LDKCVec_C2Tuple_usizeTransactionZZ _res_constr; _res_constr.datalen = (*env)->GetArrayLength(env, _res); @@ -5422,31 +7115,124 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1MonitorEventZ_1free(JNIE CVec_MonitorEventZ_free(_res_constr); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelMonitorUpdateDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKChannelMonitorUpdate o_conv; +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1EventZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { + LDKCVec_EventZ _res_constr; + _res_constr.datalen = (*env)->GetArrayLength(env, _res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKEvent), "LDKCVec_EventZ Elements"); + else + _res_constr.data = NULL; + int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); + for (size_t h = 0; h < _res_constr.datalen; h++) { + int64_t arr_conv_7 = _res_vals[h]; + LDKEvent arr_conv_7_conv = *(LDKEvent*)(((uint64_t)arr_conv_7) & ~1); + FREE((void*)arr_conv_7); + _res_constr.data[h] = arr_conv_7_conv; + } + (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); + CVec_EventZ_free(_res_constr); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1OutPointDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKOutPoint o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = OutPoint_clone(&o_conv); + LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ"); + *ret_conv = CResult_OutPointDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1OutPointDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ"); + *ret_conv = CResult_OutPointDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1OutPointDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_OutPointDecodeErrorZ _res_conv = *(LDKCResult_OutPointDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_OutPointDecodeErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1OutPointDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_OutPointDecodeErrorZ* orig_conv = (LDKCResult_OutPointDecodeErrorZ*)(orig & ~1); + LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ"); + *ret_conv = CResult_OutPointDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelMonitorUpdateDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKChannelMonitorUpdate o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = ChannelMonitorUpdate_clone(&o_conv); + LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ"); + *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelMonitorUpdateDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ"); + *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelMonitorUpdateDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res_conv = *(LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_ChannelMonitorUpdateDecodeErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelMonitorUpdateDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_ChannelMonitorUpdateDecodeErrorZ* orig_conv = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(orig & ~1); + LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ"); + *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1HTLCUpdateDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKHTLCUpdate o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = ChannelMonitorUpdate_clone(&o_conv); - LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ"); - *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_ok(o_conv); + o_conv = HTLCUpdate_clone(&o_conv); + LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ"); + *ret_conv = CResult_HTLCUpdateDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelMonitorUpdateDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1HTLCUpdateDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ"); - *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_err(e_conv); + LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ"); + *ret_conv = CResult_HTLCUpdateDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelMonitorUpdateDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1HTLCUpdateDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res_conv = *(LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_HTLCUpdateDecodeErrorZ _res_conv = *(LDKCResult_HTLCUpdateDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_ChannelMonitorUpdateDecodeErrorZ_free(_res_conv); + CResult_HTLCUpdateDecodeErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1HTLCUpdateDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_HTLCUpdateDecodeErrorZ* orig_conv = (LDKCResult_HTLCUpdateDecodeErrorZ*)(orig & ~1); + LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ"); + *ret_conv = CResult_HTLCUpdateDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NoneMonitorUpdateErrorZ_1ok(JNIEnv *env, jclass clz) { @@ -5479,11 +7265,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NoneMonitorUpdateE return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1OutPointScriptZ_1free(JNIEnv *env, jclass clz, int64_t _res) { - if ((_res & 1) != 0) return; - LDKC2Tuple_OutPointScriptZ _res_conv = *(LDKC2Tuple_OutPointScriptZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - C2Tuple_OutPointScriptZ_free(_res_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1OutPointScriptZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKC2Tuple_OutPointScriptZ* orig_conv = (LDKC2Tuple_OutPointScriptZ*)(orig & ~1); + LDKC2Tuple_OutPointScriptZ* ret_ref = MALLOC(sizeof(LDKC2Tuple_OutPointScriptZ), "LDKC2Tuple_OutPointScriptZ"); + *ret_ref = C2Tuple_OutPointScriptZ_clone(orig_conv); + return (long)ret_ref; } JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1OutPointScriptZ_1new(JNIEnv *env, jclass clz, int64_t a, int8_tArray b) { @@ -5500,6 +7286,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1OutPointScriptZ_1n return (long)ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1OutPointScriptZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKC2Tuple_OutPointScriptZ _res_conv = *(LDKC2Tuple_OutPointScriptZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + C2Tuple_OutPointScriptZ_free(_res_conv); +} + JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1TransactionZ_1free(JNIEnv *env, jclass clz, jobjectArray _res) { LDKCVec_TransactionZ _res_constr; _res_constr.datalen = (*env)->GetArrayLength(env, _res); @@ -5526,13 +7319,6 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u32TxOutZ_1clone(J return (long)ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u32TxOutZ_1free(JNIEnv *env, jclass clz, int64_t _res) { - if ((_res & 1) != 0) return; - LDKC2Tuple_u32TxOutZ _res_conv = *(LDKC2Tuple_u32TxOutZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - C2Tuple_u32TxOutZ_free(_res_conv); -} - JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u32TxOutZ_1new(JNIEnv *env, jclass clz, int32_t a, int64_t b) { LDKTxOut b_conv = *(LDKTxOut*)(((uint64_t)b) & ~1); FREE((void*)b); @@ -5541,6 +7327,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u32TxOutZ_1new(JNI return (long)ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u32TxOutZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKC2Tuple_u32TxOutZ _res_conv = *(LDKC2Tuple_u32TxOutZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + C2Tuple_u32TxOutZ_free(_res_conv); +} + JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C2Tuple_1u32TxOutZZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { LDKCVec_C2Tuple_u32TxOutZZ _res_constr; _res_constr.datalen = (*env)->GetArrayLength(env, _res); @@ -5559,13 +7352,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C2Tuple_1u32TxOutZZ_1fre CVec_C2Tuple_u32TxOutZZ_free(_res_constr); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZ_1free(JNIEnv *env, jclass clz, int64_t _res) { - if ((_res & 1) != 0) return; - LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(_res_conv); -} - JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZ_1new(JNIEnv *env, jclass clz, int8_tArray a, int64_tArray b) { LDKThirtyTwoBytes a_ref; CHECK((*env)->GetArrayLength(env, a) == 32); @@ -5589,6 +7375,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1TxidCVec_1C2Tuple_ return (long)ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(_res_conv); +} + JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ _res_constr; _res_constr.datalen = (*env)->GetArrayLength(env, _res); @@ -5607,13 +7400,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C2Tuple_1TxidCVec_1C2Tup CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(_res_constr); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1BlockHashChannelMonitorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { - if ((_res & 1) != 0) return; - LDKC2Tuple_BlockHashChannelMonitorZ _res_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - C2Tuple_BlockHashChannelMonitorZ_free(_res_conv); -} - JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1BlockHashChannelMonitorZ_1new(JNIEnv *env, jclass clz, int8_tArray a, int64_t b) { LDKThirtyTwoBytes a_ref; CHECK((*env)->GetArrayLength(env, a) == 32); @@ -5627,6 +7413,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1BlockHashChannelMo return (long)ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1BlockHashChannelMonitorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKC2Tuple_BlockHashChannelMonitorZ _res_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + C2Tuple_BlockHashChannelMonitorZ_free(_res_conv); +} + JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { LDKC2Tuple_BlockHashChannelMonitorZ o_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(((uint64_t)o) & ~1); FREE((void*)o); @@ -5635,21 +7428,209 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHash return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ"); + *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res_conv = *(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(_res_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1SpendableOutputDescriptorZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { + LDKCVec_SpendableOutputDescriptorZ _res_constr; + _res_constr.datalen = (*env)->GetArrayLength(env, _res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKSpendableOutputDescriptor), "LDKCVec_SpendableOutputDescriptorZ Elements"); + else + _res_constr.data = NULL; + int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); + for (size_t b = 0; b < _res_constr.datalen; b++) { + int64_t arr_conv_27 = _res_vals[b]; + LDKSpendableOutputDescriptor arr_conv_27_conv = *(LDKSpendableOutputDescriptor*)(((uint64_t)arr_conv_27) & ~1); + FREE((void*)arr_conv_27); + _res_constr.data[b] = arr_conv_27_conv; + } + (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); + CVec_SpendableOutputDescriptorZ_free(_res_constr); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1TxOutAccessErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKTxOut o_conv = *(LDKTxOut*)(((uint64_t)o) & ~1); + FREE((void*)o); + LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ"); + *ret_conv = CResult_TxOutAccessErrorZ_ok(o_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1TxOutAccessErrorZ_1err(JNIEnv *env, jclass clz, jclass e) { + LDKAccessError e_conv = LDKAccessError_from_java(env, e); + LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ"); + *ret_conv = CResult_TxOutAccessErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1TxOutAccessErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_TxOutAccessErrorZ _res_conv = *(LDKCResult_TxOutAccessErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_TxOutAccessErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1TxOutAccessErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_TxOutAccessErrorZ* orig_conv = (LDKCResult_TxOutAccessErrorZ*)(orig & ~1); + LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ"); + *ret_conv = CResult_TxOutAccessErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1ok(JNIEnv *env, jclass clz) { + LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ"); + *ret_conv = CResult_NoneAPIErrorZ_ok(); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKAPIError e_conv = *(LDKAPIError*)(((uint64_t)e) & ~1); + FREE((void*)e); + LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ"); + *ret_conv = CResult_NoneAPIErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_NoneAPIErrorZ _res_conv = *(LDKCResult_NoneAPIErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_NoneAPIErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_NoneAPIErrorZ* orig_conv = (LDKCResult_NoneAPIErrorZ*)(orig & ~1); + LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ"); + *ret_conv = CResult_NoneAPIErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1ChannelDetailsZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { + LDKCVec_ChannelDetailsZ _res_constr; + _res_constr.datalen = (*env)->GetArrayLength(env, _res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements"); + else + _res_constr.data = NULL; + int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); + for (size_t q = 0; q < _res_constr.datalen; q++) { + int64_t arr_conv_16 = _res_vals[q]; + LDKChannelDetails arr_conv_16_conv; + arr_conv_16_conv.inner = (void*)(arr_conv_16 & (~1)); + arr_conv_16_conv.is_owned = (arr_conv_16 & 1) || (arr_conv_16 == 0); + _res_constr.data[q] = arr_conv_16_conv; + } + (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); + CVec_ChannelDetailsZ_free(_res_constr); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1ok(JNIEnv *env, jclass clz) { + LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ"); + *ret_conv = CResult_NonePaymentSendFailureZ_ok(); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKPaymentSendFailure e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = PaymentSendFailure_clone(&e_conv); + LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ"); + *ret_conv = CResult_NonePaymentSendFailureZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_NonePaymentSendFailureZ _res_conv = *(LDKCResult_NonePaymentSendFailureZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_NonePaymentSendFailureZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_NonePaymentSendFailureZ* orig_conv = (LDKCResult_NonePaymentSendFailureZ*)(orig & ~1); + LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ"); + *ret_conv = CResult_NonePaymentSendFailureZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1ChannelMonitorZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { + LDKCVec_ChannelMonitorZ _res_constr; + _res_constr.datalen = (*env)->GetArrayLength(env, _res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKChannelMonitor), "LDKCVec_ChannelMonitorZ Elements"); + else + _res_constr.data = NULL; + int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); + for (size_t q = 0; q < _res_constr.datalen; q++) { + int64_t arr_conv_16 = _res_vals[q]; + LDKChannelMonitor arr_conv_16_conv; + arr_conv_16_conv.inner = (void*)(arr_conv_16 & (~1)); + arr_conv_16_conv.is_owned = (arr_conv_16 & 1) || (arr_conv_16 == 0); + _res_constr.data[q] = arr_conv_16_conv; + } + (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); + CVec_ChannelMonitorZ_free(_res_constr); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1BlockHashChannelManagerZ_1new(JNIEnv *env, jclass clz, int8_tArray a, int64_t b) { + LDKThirtyTwoBytes a_ref; + CHECK((*env)->GetArrayLength(env, a) == 32); + (*env)->GetByteArrayRegion(env, a, 0, 32, a_ref.data); + LDKChannelManager b_conv; + b_conv.inner = (void*)(b & (~1)); + b_conv.is_owned = (b & 1) || (b == 0); + // Warning: we need a move here but no clone is available for LDKChannelManager + LDKC2Tuple_BlockHashChannelManagerZ* ret_ref = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelManagerZ), "LDKC2Tuple_BlockHashChannelManagerZ"); + *ret_ref = C2Tuple_BlockHashChannelManagerZ_new(a_ref, b_conv); + return (long)ret_ref; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1BlockHashChannelManagerZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKC2Tuple_BlockHashChannelManagerZ _res_conv = *(LDKC2Tuple_BlockHashChannelManagerZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + C2Tuple_BlockHashChannelManagerZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKC2Tuple_BlockHashChannelManagerZ o_conv = *(LDKC2Tuple_BlockHashChannelManagerZ*)(((uint64_t)o) & ~1); + FREE((void*)o); + LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ"); + *ret_conv = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ"); - *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(e_conv); + LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ"); + *ret_conv = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res_conv = *(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res_conv = *(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(_res_conv); + CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(_res_conv); } JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u64u64Z_1clone(JNIEnv *env, jclass clz, int64_t orig) { @@ -5659,6 +7640,12 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u64u64Z_1clone(JNI return (long)ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u64u64Z_1new(JNIEnv *env, jclass clz, int64_t a, int64_t b) { + LDKC2Tuple_u64u64Z* ret_ref = MALLOC(sizeof(LDKC2Tuple_u64u64Z), "LDKC2Tuple_u64u64Z"); + *ret_ref = C2Tuple_u64u64Z_new(a, b); + return (long)ret_ref; +} + JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u64u64Z_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; LDKC2Tuple_u64u64Z _res_conv = *(LDKC2Tuple_u64u64Z*)(((uint64_t)_res) & ~1); @@ -5666,12 +7653,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u64u64Z_1free(JNIEnv C2Tuple_u64u64Z_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u64u64Z_1new(JNIEnv *env, jclass clz, int64_t a, int64_t b) { - LDKC2Tuple_u64u64Z* ret_ref = MALLOC(sizeof(LDKC2Tuple_u64u64Z), "LDKC2Tuple_u64u64Z"); - *ret_ref = C2Tuple_u64u64Z_new(a, b); - return (long)ret_ref; -} - JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1SpendableOutputDescriptorDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { LDKSpendableOutputDescriptor o_conv = *(LDKSpendableOutputDescriptor*)(((uint64_t)o) & ~1); FREE((void*)o); @@ -5704,23 +7685,6 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1SpendableOutputDes return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1SignatureZ_1free(JNIEnv *env, jclass clz, jobjectArray _res) { - LDKCVec_SignatureZ _res_constr; - _res_constr.datalen = (*env)->GetArrayLength(env, _res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements"); - else - _res_constr.data = NULL; - for (size_t i = 0; i < _res_constr.datalen; i++) { - int8_tArray arr_conv_8 = (*env)->GetObjectArrayElement(env, _res, i); - LDKSignature arr_conv_8_ref; - CHECK((*env)->GetArrayLength(env, arr_conv_8) == 64); - (*env)->GetByteArrayRegion(env, arr_conv_8, 0, 64, arr_conv_8_ref.compact_form); - _res_constr.data[i] = arr_conv_8_ref; - } - CVec_SignatureZ_free(_res_constr); -} - JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1SignatureZZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { LDKC2Tuple_SignatureCVec_SignatureZZ* orig_conv = (LDKC2Tuple_SignatureCVec_SignatureZZ*)(orig & ~1); LDKC2Tuple_SignatureCVec_SignatureZZ* ret_ref = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ"); @@ -5728,13 +7692,6 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1Sig return (long)ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1SignatureZZ_1free(JNIEnv *env, jclass clz, int64_t _res) { - if ((_res & 1) != 0) return; - LDKC2Tuple_SignatureCVec_SignatureZZ _res_conv = *(LDKC2Tuple_SignatureCVec_SignatureZZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - C2Tuple_SignatureCVec_SignatureZZ_free(_res_conv); -} - JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1SignatureZZ_1new(JNIEnv *env, jclass clz, int8_tArray a, jobjectArray b) { LDKSignature a_ref; CHECK((*env)->GetArrayLength(env, a) == 64); @@ -5757,6 +7714,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1Sig return (long)ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1SignatureZZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKC2Tuple_SignatureCVec_SignatureZZ _res_conv = *(LDKC2Tuple_SignatureCVec_SignatureZZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + C2Tuple_SignatureCVec_SignatureZZ_free(_res_conv); +} + JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1SignatureCVec_1SignatureZZNoneZ_1ok(JNIEnv *env, jclass clz, int64_t o) { LDKC2Tuple_SignatureCVec_SignatureZZ o_conv = *(LDKC2Tuple_SignatureCVec_SignatureZZ*)(((uint64_t)o) & ~1); FREE((void*)o); @@ -5814,38 +7778,38 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1SignatureNoneZ_1cl return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChanKeySignerDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelKeysDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { LDKChannelKeys o_conv = *(LDKChannelKeys*)(((uint64_t)o) & ~1); if (o_conv.free == LDKChannelKeys_JCalls_free) { // If this_arg is a JCalls struct, then we need to increment the refcnt in it. LDKChannelKeys_JCalls_clone(o_conv.this_arg); } - LDKCResult_ChanKeySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChanKeySignerDecodeErrorZ), "LDKCResult_ChanKeySignerDecodeErrorZ"); - *ret_conv = CResult_ChanKeySignerDecodeErrorZ_ok(o_conv); + LDKCResult_ChannelKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelKeysDecodeErrorZ), "LDKCResult_ChannelKeysDecodeErrorZ"); + *ret_conv = CResult_ChannelKeysDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChanKeySignerDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelKeysDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_ChanKeySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChanKeySignerDecodeErrorZ), "LDKCResult_ChanKeySignerDecodeErrorZ"); - *ret_conv = CResult_ChanKeySignerDecodeErrorZ_err(e_conv); + LDKCResult_ChannelKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelKeysDecodeErrorZ), "LDKCResult_ChannelKeysDecodeErrorZ"); + *ret_conv = CResult_ChannelKeysDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChanKeySignerDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelKeysDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_ChanKeySignerDecodeErrorZ _res_conv = *(LDKCResult_ChanKeySignerDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_ChannelKeysDecodeErrorZ _res_conv = *(LDKCResult_ChannelKeysDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_ChanKeySignerDecodeErrorZ_free(_res_conv); + CResult_ChannelKeysDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChanKeySignerDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKCResult_ChanKeySignerDecodeErrorZ* orig_conv = (LDKCResult_ChanKeySignerDecodeErrorZ*)(orig & ~1); - LDKCResult_ChanKeySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChanKeySignerDecodeErrorZ), "LDKCResult_ChanKeySignerDecodeErrorZ"); - *ret_conv = CResult_ChanKeySignerDecodeErrorZ_clone(orig_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelKeysDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_ChannelKeysDecodeErrorZ* orig_conv = (LDKCResult_ChannelKeysDecodeErrorZ*)(orig & ~1); + LDKCResult_ChannelKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelKeysDecodeErrorZ), "LDKCResult_ChannelKeysDecodeErrorZ"); + *ret_conv = CResult_ChannelKeysDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } @@ -5876,185 +7840,146 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1InMemoryChannelKeysDe CResult_InMemoryChannelKeysDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1TxOutAccessErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKTxOut o_conv = *(LDKTxOut*)(((uint64_t)o) & ~1); - FREE((void*)o); - LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ"); - *ret_conv = CResult_TxOutAccessErrorZ_ok(o_conv); - return (long)ret_conv; -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1TxOutAccessErrorZ_1err(JNIEnv *env, jclass clz, jclass e) { - LDKAccessError e_conv = LDKAccessError_from_java(env, e); - LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ"); - *ret_conv = CResult_TxOutAccessErrorZ_err(e_conv); - return (long)ret_conv; -} - -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1TxOutAccessErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { - if ((_res & 1) != 0) return; - LDKCResult_TxOutAccessErrorZ _res_conv = *(LDKCResult_TxOutAccessErrorZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - CResult_TxOutAccessErrorZ_free(_res_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1TxOutAccessErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKCResult_TxOutAccessErrorZ* orig_conv = (LDKCResult_TxOutAccessErrorZ*)(orig & ~1); - LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ"); - *ret_conv = CResult_TxOutAccessErrorZ_clone(orig_conv); - return (long)ret_conv; -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1ok(JNIEnv *env, jclass clz) { - LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ"); - *ret_conv = CResult_NoneAPIErrorZ_ok(); - return (long)ret_conv; -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { - LDKAPIError e_conv = *(LDKAPIError*)(((uint64_t)e) & ~1); - FREE((void*)e); - LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ"); - *ret_conv = CResult_NoneAPIErrorZ_err(e_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1InMemoryChannelKeysDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_InMemoryChannelKeysDecodeErrorZ* orig_conv = (LDKCResult_InMemoryChannelKeysDecodeErrorZ*)(orig & ~1); + LDKCResult_InMemoryChannelKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemoryChannelKeysDecodeErrorZ), "LDKCResult_InMemoryChannelKeysDecodeErrorZ"); + *ret_conv = CResult_InMemoryChannelKeysDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { - if ((_res & 1) != 0) return; - LDKCResult_NoneAPIErrorZ _res_conv = *(LDKCResult_NoneAPIErrorZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - CResult_NoneAPIErrorZ_free(_res_conv); -} - -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1ChannelDetailsZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { - LDKCVec_ChannelDetailsZ _res_constr; +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1RouteHopZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { + LDKCVec_RouteHopZ _res_constr; _res_constr.datalen = (*env)->GetArrayLength(env, _res); if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements"); + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements"); else _res_constr.data = NULL; int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); - for (size_t q = 0; q < _res_constr.datalen; q++) { - int64_t arr_conv_16 = _res_vals[q]; - LDKChannelDetails arr_conv_16_conv; - arr_conv_16_conv.inner = (void*)(arr_conv_16 & (~1)); - arr_conv_16_conv.is_owned = (arr_conv_16 & 1) || (arr_conv_16 == 0); - _res_constr.data[q] = arr_conv_16_conv; + for (size_t k = 0; k < _res_constr.datalen; k++) { + int64_t arr_conv_10 = _res_vals[k]; + LDKRouteHop arr_conv_10_conv; + arr_conv_10_conv.inner = (void*)(arr_conv_10 & (~1)); + arr_conv_10_conv.is_owned = (arr_conv_10 & 1) || (arr_conv_10 == 0); + _res_constr.data[k] = arr_conv_10_conv; } (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); - CVec_ChannelDetailsZ_free(_res_constr); + CVec_RouteHopZ_free(_res_constr); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1ok(JNIEnv *env, jclass clz) { - LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ"); - *ret_conv = CResult_NonePaymentSendFailureZ_ok(); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1CVec_1RouteHopZZ_1free(JNIEnv *env, jclass clz, jobjectArray _res) { + LDKCVec_CVec_RouteHopZZ _res_constr; + _res_constr.datalen = (*env)->GetArrayLength(env, _res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKCVec_RouteHopZ), "LDKCVec_CVec_RouteHopZZ Elements"); + else + _res_constr.data = NULL; + for (size_t m = 0; m < _res_constr.datalen; m++) { + int64_tArray arr_conv_12 = (*env)->GetObjectArrayElement(env, _res, m); + LDKCVec_RouteHopZ arr_conv_12_constr; + arr_conv_12_constr.datalen = (*env)->GetArrayLength(env, arr_conv_12); + if (arr_conv_12_constr.datalen > 0) + arr_conv_12_constr.data = MALLOC(arr_conv_12_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements"); + else + arr_conv_12_constr.data = NULL; + int64_t* arr_conv_12_vals = (*env)->GetLongArrayElements (env, arr_conv_12, NULL); + for (size_t k = 0; k < arr_conv_12_constr.datalen; k++) { + int64_t arr_conv_10 = arr_conv_12_vals[k]; + LDKRouteHop arr_conv_10_conv; + arr_conv_10_conv.inner = (void*)(arr_conv_10 & (~1)); + arr_conv_10_conv.is_owned = (arr_conv_10 & 1) || (arr_conv_10 == 0); + arr_conv_12_constr.data[k] = arr_conv_10_conv; + } + (*env)->ReleaseLongArrayElements(env, arr_conv_12, arr_conv_12_vals, 0); + _res_constr.data[m] = arr_conv_12_constr; + } + CVec_CVec_RouteHopZZ_free(_res_constr); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RouteDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKRoute o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = Route_clone(&o_conv); + LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ"); + *ret_conv = CResult_RouteDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1err(JNIEnv *env, jclass clz, int64_t e) { - LDKPaymentSendFailure e_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RouteDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); - e_conv = PaymentSendFailure_clone(&e_conv); - LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ"); - *ret_conv = CResult_NonePaymentSendFailureZ_err(e_conv); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ"); + *ret_conv = CResult_RouteDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1RouteDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_NonePaymentSendFailureZ _res_conv = *(LDKCResult_NonePaymentSendFailureZ*)(((uint64_t)_res) & ~1); + LDKCResult_RouteDecodeErrorZ _res_conv = *(LDKCResult_RouteDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_NonePaymentSendFailureZ_free(_res_conv); + CResult_RouteDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKCResult_NonePaymentSendFailureZ* orig_conv = (LDKCResult_NonePaymentSendFailureZ*)(orig & ~1); - LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ"); - *ret_conv = CResult_NonePaymentSendFailureZ_clone(orig_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RouteDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_RouteDecodeErrorZ* orig_conv = (LDKCResult_RouteDecodeErrorZ*)(orig & ~1); + LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ"); + *ret_conv = CResult_RouteDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1NetAddressZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { - LDKCVec_NetAddressZ _res_constr; - _res_constr.datalen = (*env)->GetArrayLength(env, _res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements"); - else - _res_constr.data = NULL; - int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); - for (size_t m = 0; m < _res_constr.datalen; m++) { - int64_t arr_conv_12 = _res_vals[m]; - LDKNetAddress arr_conv_12_conv = *(LDKNetAddress*)(((uint64_t)arr_conv_12) & ~1); - FREE((void*)arr_conv_12); - _res_constr.data[m] = arr_conv_12_conv; - } - (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); - CVec_NetAddressZ_free(_res_constr); -} - -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1ChannelMonitorZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { - LDKCVec_ChannelMonitorZ _res_constr; +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1RouteHintZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { + LDKCVec_RouteHintZ _res_constr; _res_constr.datalen = (*env)->GetArrayLength(env, _res); if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKChannelMonitor), "LDKCVec_ChannelMonitorZ Elements"); + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKRouteHint), "LDKCVec_RouteHintZ Elements"); else _res_constr.data = NULL; int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); - for (size_t q = 0; q < _res_constr.datalen; q++) { - int64_t arr_conv_16 = _res_vals[q]; - LDKChannelMonitor arr_conv_16_conv; - arr_conv_16_conv.inner = (void*)(arr_conv_16 & (~1)); - arr_conv_16_conv.is_owned = (arr_conv_16 & 1) || (arr_conv_16 == 0); - _res_constr.data[q] = arr_conv_16_conv; + for (size_t l = 0; l < _res_constr.datalen; l++) { + int64_t arr_conv_11 = _res_vals[l]; + LDKRouteHint arr_conv_11_conv; + arr_conv_11_conv.inner = (void*)(arr_conv_11 & (~1)); + arr_conv_11_conv.is_owned = (arr_conv_11 & 1) || (arr_conv_11 == 0); + _res_constr.data[l] = arr_conv_11_conv; } (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); - CVec_ChannelMonitorZ_free(_res_constr); -} - -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1BlockHashChannelManagerZ_1free(JNIEnv *env, jclass clz, int64_t _res) { - if ((_res & 1) != 0) return; - LDKC2Tuple_BlockHashChannelManagerZ _res_conv = *(LDKC2Tuple_BlockHashChannelManagerZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - C2Tuple_BlockHashChannelManagerZ_free(_res_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C2Tuple_1BlockHashChannelManagerZ_1new(JNIEnv *env, jclass clz, int8_tArray a, int64_t b) { - LDKThirtyTwoBytes a_ref; - CHECK((*env)->GetArrayLength(env, a) == 32); - (*env)->GetByteArrayRegion(env, a, 0, 32, a_ref.data); - LDKChannelManager b_conv; - b_conv.inner = (void*)(b & (~1)); - b_conv.is_owned = (b & 1) || (b == 0); - // Warning: we need a move here but no clone is available for LDKChannelManager - LDKC2Tuple_BlockHashChannelManagerZ* ret_ref = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelManagerZ), "LDKC2Tuple_BlockHashChannelManagerZ"); - *ret_ref = C2Tuple_BlockHashChannelManagerZ_new(a_ref, b_conv); - return (long)ret_ref; + CVec_RouteHintZ_free(_res_constr); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKC2Tuple_BlockHashChannelManagerZ o_conv = *(LDKC2Tuple_BlockHashChannelManagerZ*)(((uint64_t)o) & ~1); - FREE((void*)o); - LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ"); - *ret_conv = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(o_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKRoute o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = Route_clone(&o_conv); + LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ"); + *ret_conv = CResult_RouteLightningErrorZ_ok(o_conv); return (long)ret_conv; } - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { - LDKDecodeError e_conv; + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKLightningError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); - e_conv = DecodeError_clone(&e_conv); - LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ"); - *ret_conv = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(e_conv); + e_conv = LightningError_clone(&e_conv); + LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ"); + *ret_conv = CResult_RouteLightningErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res_conv = *(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_RouteLightningErrorZ _res_conv = *(LDKCResult_RouteLightningErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(_res_conv); + CResult_RouteLightningErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_RouteLightningErrorZ* orig_conv = (LDKCResult_RouteLightningErrorZ*)(orig & ~1); + LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ"); + *ret_conv = CResult_RouteLightningErrorZ_clone(orig_conv); + return (long)ret_conv; } JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NetAddressu8Z_1ok(JNIEnv *env, jclass clz, int64_t o) { @@ -6110,20 +8035,11 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CResult_1NetAddressu8 CResult_CResult_NetAddressu8ZDecodeErrorZ_free(_res_conv); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1u64Z_1free(JNIEnv *env, jclass clz, int64_tArray _res) { - LDKCVec_u64Z _res_constr; - _res_constr.datalen = (*env)->GetArrayLength(env, _res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements"); - else - _res_constr.data = NULL; - int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); - for (size_t g = 0; g < _res_constr.datalen; g++) { - int64_t arr_conv_6 = _res_vals[g]; - _res_constr.data[g] = arr_conv_6; - } - (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); - CVec_u64Z_free(_res_constr); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CResult_1NetAddressu8ZDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_CResult_NetAddressu8ZDecodeErrorZ* orig_conv = (LDKCResult_CResult_NetAddressu8ZDecodeErrorZ*)(orig & ~1); + LDKCResult_CResult_NetAddressu8ZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CResult_NetAddressu8ZDecodeErrorZ), "LDKCResult_CResult_NetAddressu8ZDecodeErrorZ"); + *ret_conv = CResult_CResult_NetAddressu8ZDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateAddHTLCZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { @@ -6202,125 +8118,71 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateFailMalformedHTLCZ CVec_UpdateFailMalformedHTLCZ_free(_res_constr); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1ok(JNIEnv *env, jclass clz, jboolean o) { - LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); - *ret_conv = CResult_boolLightningErrorZ_ok(o); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1AcceptChannelDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKAcceptChannel o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = AcceptChannel_clone(&o_conv); + LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ"); + *ret_conv = CResult_AcceptChannelDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { - LDKLightningError e_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1AcceptChannelDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); - e_conv = LightningError_clone(&e_conv); - LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); - *ret_conv = CResult_boolLightningErrorZ_err(e_conv); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ"); + *ret_conv = CResult_AcceptChannelDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1AcceptChannelDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_boolLightningErrorZ _res_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_AcceptChannelDecodeErrorZ _res_conv = *(LDKCResult_AcceptChannelDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_boolLightningErrorZ_free(_res_conv); + CResult_AcceptChannelDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKCResult_boolLightningErrorZ* orig_conv = (LDKCResult_boolLightningErrorZ*)(orig & ~1); - LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); - *ret_conv = CResult_boolLightningErrorZ_clone(orig_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1AcceptChannelDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_AcceptChannelDecodeErrorZ* orig_conv = (LDKCResult_AcceptChannelDecodeErrorZ*)(orig & ~1); + LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ"); + *ret_conv = CResult_AcceptChannelDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1free(JNIEnv *env, jclass clz, int64_t _res) { - if ((_res & 1) != 0) return; - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(_res_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1new(JNIEnv *env, jclass clz, int64_t a, int64_t b, int64_t c) { - LDKChannelAnnouncement a_conv; - a_conv.inner = (void*)(a & (~1)); - a_conv.is_owned = (a & 1) || (a == 0); - a_conv = ChannelAnnouncement_clone(&a_conv); - LDKChannelUpdate b_conv; - b_conv.inner = (void*)(b & (~1)); - b_conv.is_owned = (b & 1) || (b == 0); - b_conv = ChannelUpdate_clone(&b_conv); - LDKChannelUpdate c_conv; - c_conv.inner = (void*)(c & (~1)); - c_conv.is_owned = (c & 1) || (c == 0); - c_conv = ChannelUpdate_clone(&c_conv); - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_ref = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ"); - *ret_ref = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(a_conv, b_conv, c_conv); - return (long)ret_ref; -} - -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { - LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res_constr; - _res_constr.datalen = (*env)->GetArrayLength(env, _res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ Elements"); - else - _res_constr.data = NULL; - int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); - for (size_t l = 0; l < _res_constr.datalen; l++) { - int64_t arr_conv_63 = _res_vals[l]; - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ arr_conv_63_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(((uint64_t)arr_conv_63) & ~1); - FREE((void*)arr_conv_63); - _res_constr.data[l] = arr_conv_63_conv; - } - (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); - CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(_res_constr); -} - -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1NodeAnnouncementZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { - LDKCVec_NodeAnnouncementZ _res_constr; - _res_constr.datalen = (*env)->GetArrayLength(env, _res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKNodeAnnouncement), "LDKCVec_NodeAnnouncementZ Elements"); - else - _res_constr.data = NULL; - int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); - for (size_t s = 0; s < _res_constr.datalen; s++) { - int64_t arr_conv_18 = _res_vals[s]; - LDKNodeAnnouncement arr_conv_18_conv; - arr_conv_18_conv.inner = (void*)(arr_conv_18 & (~1)); - arr_conv_18_conv.is_owned = (arr_conv_18 & 1) || (arr_conv_18 == 0); - _res_constr.data[s] = arr_conv_18_conv; - } - (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); - CVec_NodeAnnouncementZ_free(_res_constr); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NoneLightningErrorZ_1ok(JNIEnv *env, jclass clz) { - LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); - *ret_conv = CResult_NoneLightningErrorZ_ok(); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1AnnouncementSignaturesDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKAnnouncementSignatures o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = AnnouncementSignatures_clone(&o_conv); + LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ"); + *ret_conv = CResult_AnnouncementSignaturesDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NoneLightningErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { - LDKLightningError e_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1AnnouncementSignaturesDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); - e_conv = LightningError_clone(&e_conv); - LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); - *ret_conv = CResult_NoneLightningErrorZ_err(e_conv); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ"); + *ret_conv = CResult_AnnouncementSignaturesDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneLightningErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1AnnouncementSignaturesDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_NoneLightningErrorZ _res_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_AnnouncementSignaturesDecodeErrorZ _res_conv = *(LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_NoneLightningErrorZ_free(_res_conv); + CResult_AnnouncementSignaturesDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NoneLightningErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKCResult_NoneLightningErrorZ* orig_conv = (LDKCResult_NoneLightningErrorZ*)(orig & ~1); - LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); - *ret_conv = CResult_NoneLightningErrorZ_clone(orig_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1AnnouncementSignaturesDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_AnnouncementSignaturesDecodeErrorZ* orig_conv = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(orig & ~1); + LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ"); + *ret_conv = CResult_AnnouncementSignaturesDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } @@ -6351,822 +8213,963 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelReestablishDec CResult_ChannelReestablishDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1InitDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKInit o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelReestablishDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_ChannelReestablishDecodeErrorZ* orig_conv = (LDKCResult_ChannelReestablishDecodeErrorZ*)(orig & ~1); + LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ"); + *ret_conv = CResult_ChannelReestablishDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ClosingSignedDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKClosingSigned o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = Init_clone(&o_conv); - LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ"); - *ret_conv = CResult_InitDecodeErrorZ_ok(o_conv); + o_conv = ClosingSigned_clone(&o_conv); + LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ"); + *ret_conv = CResult_ClosingSignedDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1InitDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ClosingSignedDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ"); - *ret_conv = CResult_InitDecodeErrorZ_err(e_conv); + LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ"); + *ret_conv = CResult_ClosingSignedDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1InitDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ClosingSignedDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_InitDecodeErrorZ _res_conv = *(LDKCResult_InitDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_ClosingSignedDecodeErrorZ _res_conv = *(LDKCResult_ClosingSignedDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_InitDecodeErrorZ_free(_res_conv); + CResult_ClosingSignedDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PingDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKPing o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ClosingSignedDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_ClosingSignedDecodeErrorZ* orig_conv = (LDKCResult_ClosingSignedDecodeErrorZ*)(orig & ~1); + LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ"); + *ret_conv = CResult_ClosingSignedDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CommitmentSignedDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKCommitmentSigned o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = Ping_clone(&o_conv); - LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ"); - *ret_conv = CResult_PingDecodeErrorZ_ok(o_conv); + o_conv = CommitmentSigned_clone(&o_conv); + LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ"); + *ret_conv = CResult_CommitmentSignedDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PingDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CommitmentSignedDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ"); - *ret_conv = CResult_PingDecodeErrorZ_err(e_conv); + LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ"); + *ret_conv = CResult_CommitmentSignedDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1PingDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CommitmentSignedDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_PingDecodeErrorZ _res_conv = *(LDKCResult_PingDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_CommitmentSignedDecodeErrorZ _res_conv = *(LDKCResult_CommitmentSignedDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_PingDecodeErrorZ_free(_res_conv); + CResult_CommitmentSignedDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PongDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKPong o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CommitmentSignedDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_CommitmentSignedDecodeErrorZ* orig_conv = (LDKCResult_CommitmentSignedDecodeErrorZ*)(orig & ~1); + LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ"); + *ret_conv = CResult_CommitmentSignedDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1FundingCreatedDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKFundingCreated o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = Pong_clone(&o_conv); - LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ"); - *ret_conv = CResult_PongDecodeErrorZ_ok(o_conv); + o_conv = FundingCreated_clone(&o_conv); + LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ"); + *ret_conv = CResult_FundingCreatedDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PongDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1FundingCreatedDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ"); - *ret_conv = CResult_PongDecodeErrorZ_err(e_conv); + LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ"); + *ret_conv = CResult_FundingCreatedDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1PongDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1FundingCreatedDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_PongDecodeErrorZ _res_conv = *(LDKCResult_PongDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_FundingCreatedDecodeErrorZ _res_conv = *(LDKCResult_FundingCreatedDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_PongDecodeErrorZ_free(_res_conv); + CResult_FundingCreatedDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelAnnouncementDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKUnsignedChannelAnnouncement o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1FundingCreatedDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_FundingCreatedDecodeErrorZ* orig_conv = (LDKCResult_FundingCreatedDecodeErrorZ*)(orig & ~1); + LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ"); + *ret_conv = CResult_FundingCreatedDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1FundingSignedDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKFundingSigned o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = UnsignedChannelAnnouncement_clone(&o_conv); - LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ"); - *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(o_conv); + o_conv = FundingSigned_clone(&o_conv); + LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ"); + *ret_conv = CResult_FundingSignedDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelAnnouncementDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1FundingSignedDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ"); - *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(e_conv); + LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ"); + *ret_conv = CResult_FundingSignedDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelAnnouncementDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1FundingSignedDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_FundingSignedDecodeErrorZ _res_conv = *(LDKCResult_FundingSignedDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(_res_conv); + CResult_FundingSignedDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelUpdateDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKUnsignedChannelUpdate o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1FundingSignedDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_FundingSignedDecodeErrorZ* orig_conv = (LDKCResult_FundingSignedDecodeErrorZ*)(orig & ~1); + LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ"); + *ret_conv = CResult_FundingSignedDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1FundingLockedDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKFundingLocked o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = UnsignedChannelUpdate_clone(&o_conv); - LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ"); - *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_ok(o_conv); + o_conv = FundingLocked_clone(&o_conv); + LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ"); + *ret_conv = CResult_FundingLockedDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelUpdateDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1FundingLockedDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ"); - *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_err(e_conv); + LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ"); + *ret_conv = CResult_FundingLockedDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelUpdateDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1FundingLockedDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res_conv = *(LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_FundingLockedDecodeErrorZ _res_conv = *(LDKCResult_FundingLockedDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_UnsignedChannelUpdateDecodeErrorZ_free(_res_conv); + CResult_FundingLockedDecodeErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1FundingLockedDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_FundingLockedDecodeErrorZ* orig_conv = (LDKCResult_FundingLockedDecodeErrorZ*)(orig & ~1); + LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ"); + *ret_conv = CResult_FundingLockedDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1InitDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKInit o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = Init_clone(&o_conv); + LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ"); + *ret_conv = CResult_InitDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1InitDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ"); + *ret_conv = CResult_InitDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1InitDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_InitDecodeErrorZ _res_conv = *(LDKCResult_InitDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_InitDecodeErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1InitDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_InitDecodeErrorZ* orig_conv = (LDKCResult_InitDecodeErrorZ*)(orig & ~1); + LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ"); + *ret_conv = CResult_InitDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1OpenChannelDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKOpenChannel o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = OpenChannel_clone(&o_conv); + LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ"); + *ret_conv = CResult_OpenChannelDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1OpenChannelDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ"); + *ret_conv = CResult_OpenChannelDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1OpenChannelDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_OpenChannelDecodeErrorZ _res_conv = *(LDKCResult_OpenChannelDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_OpenChannelDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ErrorMessageDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKErrorMessage o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1OpenChannelDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_OpenChannelDecodeErrorZ* orig_conv = (LDKCResult_OpenChannelDecodeErrorZ*)(orig & ~1); + LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ"); + *ret_conv = CResult_OpenChannelDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RevokeAndACKDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKRevokeAndACK o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = ErrorMessage_clone(&o_conv); - LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ"); - *ret_conv = CResult_ErrorMessageDecodeErrorZ_ok(o_conv); + o_conv = RevokeAndACK_clone(&o_conv); + LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ"); + *ret_conv = CResult_RevokeAndACKDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ErrorMessageDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RevokeAndACKDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ"); - *ret_conv = CResult_ErrorMessageDecodeErrorZ_err(e_conv); + LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ"); + *ret_conv = CResult_RevokeAndACKDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ErrorMessageDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1RevokeAndACKDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_ErrorMessageDecodeErrorZ _res_conv = *(LDKCResult_ErrorMessageDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_RevokeAndACKDecodeErrorZ _res_conv = *(LDKCResult_RevokeAndACKDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_ErrorMessageDecodeErrorZ_free(_res_conv); + CResult_RevokeAndACKDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedNodeAnnouncementDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKUnsignedNodeAnnouncement o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RevokeAndACKDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_RevokeAndACKDecodeErrorZ* orig_conv = (LDKCResult_RevokeAndACKDecodeErrorZ*)(orig & ~1); + LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ"); + *ret_conv = CResult_RevokeAndACKDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ShutdownDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKShutdown o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = UnsignedNodeAnnouncement_clone(&o_conv); - LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ"); - *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(o_conv); + o_conv = Shutdown_clone(&o_conv); + LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ"); + *ret_conv = CResult_ShutdownDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedNodeAnnouncementDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ShutdownDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ"); - *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(e_conv); + LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ"); + *ret_conv = CResult_ShutdownDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedNodeAnnouncementDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ShutdownDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_ShutdownDecodeErrorZ _res_conv = *(LDKCResult_ShutdownDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(_res_conv); + CResult_ShutdownDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1QueryShortChannelIdsDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKQueryShortChannelIds o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ShutdownDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_ShutdownDecodeErrorZ* orig_conv = (LDKCResult_ShutdownDecodeErrorZ*)(orig & ~1); + LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ"); + *ret_conv = CResult_ShutdownDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFailHTLCDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKUpdateFailHTLC o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = QueryShortChannelIds_clone(&o_conv); - LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ"); - *ret_conv = CResult_QueryShortChannelIdsDecodeErrorZ_ok(o_conv); + o_conv = UpdateFailHTLC_clone(&o_conv); + LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFailHTLCDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1QueryShortChannelIdsDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFailHTLCDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ"); - *ret_conv = CResult_QueryShortChannelIdsDecodeErrorZ_err(e_conv); + LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFailHTLCDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1QueryShortChannelIdsDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFailHTLCDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_QueryShortChannelIdsDecodeErrorZ _res_conv = *(LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_UpdateFailHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFailHTLCDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_QueryShortChannelIdsDecodeErrorZ_free(_res_conv); + CResult_UpdateFailHTLCDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyShortChannelIdsEndDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKReplyShortChannelIdsEnd o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFailHTLCDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_UpdateFailHTLCDecodeErrorZ* orig_conv = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(orig & ~1); + LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFailHTLCDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFailMalformedHTLCDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKUpdateFailMalformedHTLC o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = ReplyShortChannelIdsEnd_clone(&o_conv); - LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ"); - *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(o_conv); + o_conv = UpdateFailMalformedHTLC_clone(&o_conv); + LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyShortChannelIdsEndDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFailMalformedHTLCDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ"); - *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(e_conv); + LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyShortChannelIdsEndDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFailMalformedHTLCDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res_conv = *(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(_res_conv); + CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1QueryChannelRangeDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKQueryChannelRange o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFailMalformedHTLCDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* orig_conv = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(orig & ~1); + LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFeeDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKUpdateFee o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = QueryChannelRange_clone(&o_conv); - LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ"); - *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_ok(o_conv); + o_conv = UpdateFee_clone(&o_conv); + LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ"); + *ret_conv = CResult_UpdateFeeDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1QueryChannelRangeDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFeeDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ"); - *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_err(e_conv); + LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ"); + *ret_conv = CResult_UpdateFeeDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1QueryChannelRangeDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFeeDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_QueryChannelRangeDecodeErrorZ _res_conv = *(LDKCResult_QueryChannelRangeDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_UpdateFeeDecodeErrorZ _res_conv = *(LDKCResult_UpdateFeeDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_QueryChannelRangeDecodeErrorZ_free(_res_conv); + CResult_UpdateFeeDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyChannelRangeDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKReplyChannelRange o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFeeDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_UpdateFeeDecodeErrorZ* orig_conv = (LDKCResult_UpdateFeeDecodeErrorZ*)(orig & ~1); + LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ"); + *ret_conv = CResult_UpdateFeeDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFulfillHTLCDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKUpdateFulfillHTLC o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = ReplyChannelRange_clone(&o_conv); - LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ"); - *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_ok(o_conv); + o_conv = UpdateFulfillHTLC_clone(&o_conv); + LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFulfillHTLCDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyChannelRangeDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFulfillHTLCDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ"); - *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_err(e_conv); + LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFulfillHTLCDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyChannelRangeDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFulfillHTLCDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_ReplyChannelRangeDecodeErrorZ _res_conv = *(LDKCResult_ReplyChannelRangeDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_UpdateFulfillHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_ReplyChannelRangeDecodeErrorZ_free(_res_conv); + CResult_UpdateFulfillHTLCDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1GossipTimestampFilterDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKGossipTimestampFilter o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFulfillHTLCDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_UpdateFulfillHTLCDecodeErrorZ* orig_conv = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(orig & ~1); + LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFulfillHTLCDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateAddHTLCDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKUpdateAddHTLC o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = GossipTimestampFilter_clone(&o_conv); - LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ"); - *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_ok(o_conv); + o_conv = UpdateAddHTLC_clone(&o_conv); + LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateAddHTLCDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1GossipTimestampFilterDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateAddHTLCDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ"); - *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_err(e_conv); + LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateAddHTLCDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1GossipTimestampFilterDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateAddHTLCDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_GossipTimestampFilterDecodeErrorZ _res_conv = *(LDKCResult_GossipTimestampFilterDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_UpdateAddHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateAddHTLCDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_GossipTimestampFilterDecodeErrorZ_free(_res_conv); -} - -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1PublicKeyZ_1free(JNIEnv *env, jclass clz, jobjectArray _res) { - LDKCVec_PublicKeyZ _res_constr; - _res_constr.datalen = (*env)->GetArrayLength(env, _res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKPublicKey), "LDKCVec_PublicKeyZ Elements"); - else - _res_constr.data = NULL; - for (size_t i = 0; i < _res_constr.datalen; i++) { - int8_tArray arr_conv_8 = (*env)->GetObjectArrayElement(env, _res, i); - LDKPublicKey arr_conv_8_ref; - CHECK((*env)->GetArrayLength(env, arr_conv_8) == 33); - (*env)->GetByteArrayRegion(env, arr_conv_8, 0, 33, arr_conv_8_ref.compressed_form); - _res_constr.data[i] = arr_conv_8_ref; - } - CVec_PublicKeyZ_free(_res_constr); + CResult_UpdateAddHTLCDecodeErrorZ_free(_res_conv); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1u8Z_1free(JNIEnv *env, jclass clz, int8_tArray _res) { - LDKCVec_u8Z _res_ref; - _res_ref.datalen = (*env)->GetArrayLength(env, _res); - _res_ref.data = MALLOC(_res_ref.datalen, "LDKCVec_u8Z Bytes"); - (*env)->GetByteArrayRegion(env, _res, 0, _res_ref.datalen, _res_ref.data); - CVec_u8Z_free(_res_ref); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateAddHTLCDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_UpdateAddHTLCDecodeErrorZ* orig_conv = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(orig & ~1); + LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateAddHTLCDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1ok(JNIEnv *env, jclass clz, int8_tArray o) { - LDKCVec_u8Z o_ref; - o_ref.datalen = (*env)->GetArrayLength(env, o); - o_ref.data = MALLOC(o_ref.datalen, "LDKCVec_u8Z Bytes"); - (*env)->GetByteArrayRegion(env, o, 0, o_ref.datalen, o_ref.data); - LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ"); - *ret_conv = CResult_CVec_u8ZPeerHandleErrorZ_ok(o_ref); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PingDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKPing o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = Ping_clone(&o_conv); + LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ"); + *ret_conv = CResult_PingDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { - LDKPeerHandleError e_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PingDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); - e_conv = PeerHandleError_clone(&e_conv); - LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ"); - *ret_conv = CResult_CVec_u8ZPeerHandleErrorZ_err(e_conv); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ"); + *ret_conv = CResult_PingDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1PingDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_CVec_u8ZPeerHandleErrorZ _res_conv = *(LDKCResult_CVec_u8ZPeerHandleErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_PingDecodeErrorZ _res_conv = *(LDKCResult_PingDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_CVec_u8ZPeerHandleErrorZ_free(_res_conv); + CResult_PingDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKCResult_CVec_u8ZPeerHandleErrorZ* orig_conv = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(orig & ~1); - LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ"); - *ret_conv = CResult_CVec_u8ZPeerHandleErrorZ_clone(orig_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PingDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_PingDecodeErrorZ* orig_conv = (LDKCResult_PingDecodeErrorZ*)(orig & ~1); + LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ"); + *ret_conv = CResult_PingDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1ok(JNIEnv *env, jclass clz) { - LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ"); - *ret_conv = CResult_NonePeerHandleErrorZ_ok(); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PongDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKPong o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = Pong_clone(&o_conv); + LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ"); + *ret_conv = CResult_PongDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { - LDKPeerHandleError e_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PongDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); - e_conv = PeerHandleError_clone(&e_conv); - LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ"); - *ret_conv = CResult_NonePeerHandleErrorZ_err(e_conv); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ"); + *ret_conv = CResult_PongDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1PongDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_NonePeerHandleErrorZ _res_conv = *(LDKCResult_NonePeerHandleErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_PongDecodeErrorZ _res_conv = *(LDKCResult_PongDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_NonePeerHandleErrorZ_free(_res_conv); + CResult_PongDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKCResult_NonePeerHandleErrorZ* orig_conv = (LDKCResult_NonePeerHandleErrorZ*)(orig & ~1); - LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ"); - *ret_conv = CResult_NonePeerHandleErrorZ_clone(orig_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PongDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_PongDecodeErrorZ* orig_conv = (LDKCResult_PongDecodeErrorZ*)(orig & ~1); + LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ"); + *ret_conv = CResult_PongDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1ok(JNIEnv *env, jclass clz, jboolean o) { - LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ"); - *ret_conv = CResult_boolPeerHandleErrorZ_ok(o); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelAnnouncementDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKUnsignedChannelAnnouncement o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = UnsignedChannelAnnouncement_clone(&o_conv); + LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ"); + *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { - LDKPeerHandleError e_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelAnnouncementDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); - e_conv = PeerHandleError_clone(&e_conv); - LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ"); - *ret_conv = CResult_boolPeerHandleErrorZ_err(e_conv); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ"); + *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelAnnouncementDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_boolPeerHandleErrorZ _res_conv = *(LDKCResult_boolPeerHandleErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_boolPeerHandleErrorZ_free(_res_conv); + CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKCResult_boolPeerHandleErrorZ* orig_conv = (LDKCResult_boolPeerHandleErrorZ*)(orig & ~1); - LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ"); - *ret_conv = CResult_boolPeerHandleErrorZ_clone(orig_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelAnnouncementDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* orig_conv = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(orig & ~1); + LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ"); + *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1SecretKeySecpErrorZ_1ok(JNIEnv *env, jclass clz, int8_tArray o) { - LDKSecretKey o_ref; - CHECK((*env)->GetArrayLength(env, o) == 32); - (*env)->GetByteArrayRegion(env, o, 0, 32, o_ref.bytes); - LDKCResult_SecretKeySecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeySecpErrorZ), "LDKCResult_SecretKeySecpErrorZ"); - *ret_conv = CResult_SecretKeySecpErrorZ_ok(o_ref); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelAnnouncementDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKChannelAnnouncement o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = ChannelAnnouncement_clone(&o_conv); + LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ"); + *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1SecretKeySecpErrorZ_1err(JNIEnv *env, jclass clz, jclass e) { - LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_java(env, e); - LDKCResult_SecretKeySecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeySecpErrorZ), "LDKCResult_SecretKeySecpErrorZ"); - *ret_conv = CResult_SecretKeySecpErrorZ_err(e_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelAnnouncementDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ"); + *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1SecretKeySecpErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelAnnouncementDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_SecretKeySecpErrorZ _res_conv = *(LDKCResult_SecretKeySecpErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_ChannelAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_ChannelAnnouncementDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_SecretKeySecpErrorZ_free(_res_conv); + CResult_ChannelAnnouncementDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PublicKeySecpErrorZ_1ok(JNIEnv *env, jclass clz, int8_tArray o) { - LDKPublicKey o_ref; - CHECK((*env)->GetArrayLength(env, o) == 33); - (*env)->GetByteArrayRegion(env, o, 0, 33, o_ref.compressed_form); - LDKCResult_PublicKeySecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeySecpErrorZ), "LDKCResult_PublicKeySecpErrorZ"); - *ret_conv = CResult_PublicKeySecpErrorZ_ok(o_ref); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelAnnouncementDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_ChannelAnnouncementDecodeErrorZ* orig_conv = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(orig & ~1); + LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ"); + *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PublicKeySecpErrorZ_1err(JNIEnv *env, jclass clz, jclass e) { - LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_java(env, e); - LDKCResult_PublicKeySecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeySecpErrorZ), "LDKCResult_PublicKeySecpErrorZ"); - *ret_conv = CResult_PublicKeySecpErrorZ_err(e_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelUpdateDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKUnsignedChannelUpdate o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = UnsignedChannelUpdate_clone(&o_conv); + LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ"); + *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1PublicKeySecpErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelUpdateDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ"); + *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelUpdateDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_PublicKeySecpErrorZ _res_conv = *(LDKCResult_PublicKeySecpErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res_conv = *(LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_PublicKeySecpErrorZ_free(_res_conv); + CResult_UnsignedChannelUpdateDecodeErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelUpdateDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_UnsignedChannelUpdateDecodeErrorZ* orig_conv = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(orig & ~1); + LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ"); + *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysSecpErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKTxCreationKeys o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelUpdateDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKChannelUpdate o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = TxCreationKeys_clone(&o_conv); - LDKCResult_TxCreationKeysSecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysSecpErrorZ), "LDKCResult_TxCreationKeysSecpErrorZ"); - *ret_conv = CResult_TxCreationKeysSecpErrorZ_ok(o_conv); + o_conv = ChannelUpdate_clone(&o_conv); + LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ"); + *ret_conv = CResult_ChannelUpdateDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysSecpErrorZ_1err(JNIEnv *env, jclass clz, jclass e) { - LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_java(env, e); - LDKCResult_TxCreationKeysSecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysSecpErrorZ), "LDKCResult_TxCreationKeysSecpErrorZ"); - *ret_conv = CResult_TxCreationKeysSecpErrorZ_err(e_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelUpdateDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ"); + *ret_conv = CResult_ChannelUpdateDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysSecpErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelUpdateDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_TxCreationKeysSecpErrorZ _res_conv = *(LDKCResult_TxCreationKeysSecpErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_ChannelUpdateDecodeErrorZ _res_conv = *(LDKCResult_ChannelUpdateDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_TxCreationKeysSecpErrorZ_free(_res_conv); + CResult_ChannelUpdateDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1TrustedCommitmentTransactionNoneZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKTrustedCommitmentTransaction o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelUpdateDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_ChannelUpdateDecodeErrorZ* orig_conv = (LDKCResult_ChannelUpdateDecodeErrorZ*)(orig & ~1); + LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ"); + *ret_conv = CResult_ChannelUpdateDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ErrorMessageDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKErrorMessage o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - // Warning: we need a move here but no clone is available for LDKTrustedCommitmentTransaction - LDKCResult_TrustedCommitmentTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ), "LDKCResult_TrustedCommitmentTransactionNoneZ"); - *ret_conv = CResult_TrustedCommitmentTransactionNoneZ_ok(o_conv); + o_conv = ErrorMessage_clone(&o_conv); + LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ"); + *ret_conv = CResult_ErrorMessageDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1TrustedCommitmentTransactionNoneZ_1err(JNIEnv *env, jclass clz) { - LDKCResult_TrustedCommitmentTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ), "LDKCResult_TrustedCommitmentTransactionNoneZ"); - *ret_conv = CResult_TrustedCommitmentTransactionNoneZ_err(); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ErrorMessageDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ"); + *ret_conv = CResult_ErrorMessageDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1TrustedCommitmentTransactionNoneZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ErrorMessageDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_TrustedCommitmentTransactionNoneZ _res_conv = *(LDKCResult_TrustedCommitmentTransactionNoneZ*)(((uint64_t)_res) & ~1); + LDKCResult_ErrorMessageDecodeErrorZ _res_conv = *(LDKCResult_ErrorMessageDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_TrustedCommitmentTransactionNoneZ_free(_res_conv); + CResult_ErrorMessageDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1ok(JNIEnv *env, jclass clz, jobjectArray o) { - LDKCVec_SignatureZ o_constr; - o_constr.datalen = (*env)->GetArrayLength(env, o); - if (o_constr.datalen > 0) - o_constr.data = MALLOC(o_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements"); - else - o_constr.data = NULL; - for (size_t i = 0; i < o_constr.datalen; i++) { - int8_tArray arr_conv_8 = (*env)->GetObjectArrayElement(env, o, i); - LDKSignature arr_conv_8_ref; - CHECK((*env)->GetArrayLength(env, arr_conv_8) == 64); - (*env)->GetByteArrayRegion(env, arr_conv_8, 0, 64, arr_conv_8_ref.compact_form); - o_constr.data[i] = arr_conv_8_ref; - } - LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ"); - *ret_conv = CResult_CVec_SignatureZNoneZ_ok(o_constr); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ErrorMessageDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_ErrorMessageDecodeErrorZ* orig_conv = (LDKCResult_ErrorMessageDecodeErrorZ*)(orig & ~1); + LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ"); + *ret_conv = CResult_ErrorMessageDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1err(JNIEnv *env, jclass clz) { - LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ"); - *ret_conv = CResult_CVec_SignatureZNoneZ_err(); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedNodeAnnouncementDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKUnsignedNodeAnnouncement o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = UnsignedNodeAnnouncement_clone(&o_conv); + LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ"); + *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1free(JNIEnv *env, jclass clz, int64_t _res) { - if ((_res & 1) != 0) return; - LDKCResult_CVec_SignatureZNoneZ _res_conv = *(LDKCResult_CVec_SignatureZNoneZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - CResult_CVec_SignatureZNoneZ_free(_res_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKCResult_CVec_SignatureZNoneZ* orig_conv = (LDKCResult_CVec_SignatureZNoneZ*)(orig & ~1); - LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ"); - *ret_conv = CResult_CVec_SignatureZNoneZ_clone(orig_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedNodeAnnouncementDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ"); + *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1RouteHopZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { - LDKCVec_RouteHopZ _res_constr; - _res_constr.datalen = (*env)->GetArrayLength(env, _res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements"); - else - _res_constr.data = NULL; - int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); - for (size_t k = 0; k < _res_constr.datalen; k++) { - int64_t arr_conv_10 = _res_vals[k]; - LDKRouteHop arr_conv_10_conv; - arr_conv_10_conv.inner = (void*)(arr_conv_10 & (~1)); - arr_conv_10_conv.is_owned = (arr_conv_10 & 1) || (arr_conv_10 == 0); - _res_constr.data[k] = arr_conv_10_conv; - } - (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); - CVec_RouteHopZ_free(_res_constr); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedNodeAnnouncementDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(_res_conv); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1CVec_1RouteHopZZ_1free(JNIEnv *env, jclass clz, jobjectArray _res) { - LDKCVec_CVec_RouteHopZZ _res_constr; - _res_constr.datalen = (*env)->GetArrayLength(env, _res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKCVec_RouteHopZ), "LDKCVec_CVec_RouteHopZZ Elements"); - else - _res_constr.data = NULL; - for (size_t m = 0; m < _res_constr.datalen; m++) { - int64_tArray arr_conv_12 = (*env)->GetObjectArrayElement(env, _res, m); - LDKCVec_RouteHopZ arr_conv_12_constr; - arr_conv_12_constr.datalen = (*env)->GetArrayLength(env, arr_conv_12); - if (arr_conv_12_constr.datalen > 0) - arr_conv_12_constr.data = MALLOC(arr_conv_12_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements"); - else - arr_conv_12_constr.data = NULL; - int64_t* arr_conv_12_vals = (*env)->GetLongArrayElements (env, arr_conv_12, NULL); - for (size_t k = 0; k < arr_conv_12_constr.datalen; k++) { - int64_t arr_conv_10 = arr_conv_12_vals[k]; - LDKRouteHop arr_conv_10_conv; - arr_conv_10_conv.inner = (void*)(arr_conv_10 & (~1)); - arr_conv_10_conv.is_owned = (arr_conv_10 & 1) || (arr_conv_10 == 0); - arr_conv_12_constr.data[k] = arr_conv_10_conv; - } - (*env)->ReleaseLongArrayElements(env, arr_conv_12, arr_conv_12_vals, 0); - _res_constr.data[m] = arr_conv_12_constr; - } - CVec_CVec_RouteHopZZ_free(_res_constr); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedNodeAnnouncementDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* orig_conv = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(orig & ~1); + LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ"); + *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RouteDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKRoute o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKNodeAnnouncement o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = Route_clone(&o_conv); - LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ"); - *ret_conv = CResult_RouteDecodeErrorZ_ok(o_conv); + o_conv = NodeAnnouncement_clone(&o_conv); + LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ"); + *ret_conv = CResult_NodeAnnouncementDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RouteDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ"); - *ret_conv = CResult_RouteDecodeErrorZ_err(e_conv); + LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ"); + *ret_conv = CResult_NodeAnnouncementDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1RouteDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_RouteDecodeErrorZ _res_conv = *(LDKCResult_RouteDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_NodeAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_NodeAnnouncementDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_RouteDecodeErrorZ_free(_res_conv); + CResult_NodeAnnouncementDecodeErrorZ_free(_res_conv); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1RouteHintZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) { - LDKCVec_RouteHintZ _res_constr; - _res_constr.datalen = (*env)->GetArrayLength(env, _res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKRouteHint), "LDKCVec_RouteHintZ Elements"); - else - _res_constr.data = NULL; - int64_t* _res_vals = (*env)->GetLongArrayElements (env, _res, NULL); - for (size_t l = 0; l < _res_constr.datalen; l++) { - int64_t arr_conv_11 = _res_vals[l]; - LDKRouteHint arr_conv_11_conv; - arr_conv_11_conv.inner = (void*)(arr_conv_11 & (~1)); - arr_conv_11_conv.is_owned = (arr_conv_11 & 1) || (arr_conv_11 == 0); - _res_constr.data[l] = arr_conv_11_conv; - } - (*env)->ReleaseLongArrayElements(env, _res, _res_vals, 0); - CVec_RouteHintZ_free(_res_constr); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_NodeAnnouncementDecodeErrorZ* orig_conv = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(orig & ~1); + LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ"); + *ret_conv = CResult_NodeAnnouncementDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKRoute o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1QueryShortChannelIdsDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKQueryShortChannelIds o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = Route_clone(&o_conv); - LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ"); - *ret_conv = CResult_RouteLightningErrorZ_ok(o_conv); + o_conv = QueryShortChannelIds_clone(&o_conv); + LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ"); + *ret_conv = CResult_QueryShortChannelIdsDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { - LDKLightningError e_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1QueryShortChannelIdsDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { + LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); - e_conv = LightningError_clone(&e_conv); - LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ"); - *ret_conv = CResult_RouteLightningErrorZ_err(e_conv); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ"); + *ret_conv = CResult_QueryShortChannelIdsDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1QueryShortChannelIdsDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_RouteLightningErrorZ _res_conv = *(LDKCResult_RouteLightningErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_QueryShortChannelIdsDecodeErrorZ _res_conv = *(LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_RouteLightningErrorZ_free(_res_conv); + CResult_QueryShortChannelIdsDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RoutingFeesDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKRoutingFees o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1QueryShortChannelIdsDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_QueryShortChannelIdsDecodeErrorZ* orig_conv = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(orig & ~1); + LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ"); + *ret_conv = CResult_QueryShortChannelIdsDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyShortChannelIdsEndDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKReplyShortChannelIdsEnd o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = RoutingFees_clone(&o_conv); - LDKCResult_RoutingFeesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RoutingFeesDecodeErrorZ), "LDKCResult_RoutingFeesDecodeErrorZ"); - *ret_conv = CResult_RoutingFeesDecodeErrorZ_ok(o_conv); + o_conv = ReplyShortChannelIdsEnd_clone(&o_conv); + LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ"); + *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1RoutingFeesDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyShortChannelIdsEndDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_RoutingFeesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RoutingFeesDecodeErrorZ), "LDKCResult_RoutingFeesDecodeErrorZ"); - *ret_conv = CResult_RoutingFeesDecodeErrorZ_err(e_conv); + LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ"); + *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1RoutingFeesDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyShortChannelIdsEndDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_RoutingFeesDecodeErrorZ _res_conv = *(LDKCResult_RoutingFeesDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res_conv = *(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_RoutingFeesDecodeErrorZ_free(_res_conv); + CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementInfoDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKNodeAnnouncementInfo o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyShortChannelIdsEndDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* orig_conv = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(orig & ~1); + LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ"); + *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1QueryChannelRangeDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKQueryChannelRange o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = NodeAnnouncementInfo_clone(&o_conv); - LDKCResult_NodeAnnouncementInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ), "LDKCResult_NodeAnnouncementInfoDecodeErrorZ"); - *ret_conv = CResult_NodeAnnouncementInfoDecodeErrorZ_ok(o_conv); + o_conv = QueryChannelRange_clone(&o_conv); + LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ"); + *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementInfoDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1QueryChannelRangeDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_NodeAnnouncementInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ), "LDKCResult_NodeAnnouncementInfoDecodeErrorZ"); - *ret_conv = CResult_NodeAnnouncementInfoDecodeErrorZ_err(e_conv); + LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ"); + *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementInfoDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1QueryChannelRangeDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res_conv = *(LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_QueryChannelRangeDecodeErrorZ _res_conv = *(LDKCResult_QueryChannelRangeDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_NodeAnnouncementInfoDecodeErrorZ_free(_res_conv); + CResult_QueryChannelRangeDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementInfoDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKCResult_NodeAnnouncementInfoDecodeErrorZ* orig_conv = (LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(orig & ~1); - LDKCResult_NodeAnnouncementInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ), "LDKCResult_NodeAnnouncementInfoDecodeErrorZ"); - *ret_conv = CResult_NodeAnnouncementInfoDecodeErrorZ_clone(orig_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1QueryChannelRangeDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_QueryChannelRangeDecodeErrorZ* orig_conv = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(orig & ~1); + LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ"); + *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NodeInfoDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKNodeInfo o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyChannelRangeDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKReplyChannelRange o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = NodeInfo_clone(&o_conv); - LDKCResult_NodeInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeInfoDecodeErrorZ), "LDKCResult_NodeInfoDecodeErrorZ"); - *ret_conv = CResult_NodeInfoDecodeErrorZ_ok(o_conv); + o_conv = ReplyChannelRange_clone(&o_conv); + LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ"); + *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NodeInfoDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyChannelRangeDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_NodeInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeInfoDecodeErrorZ), "LDKCResult_NodeInfoDecodeErrorZ"); - *ret_conv = CResult_NodeInfoDecodeErrorZ_err(e_conv); + LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ"); + *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NodeInfoDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyChannelRangeDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_NodeInfoDecodeErrorZ _res_conv = *(LDKCResult_NodeInfoDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_ReplyChannelRangeDecodeErrorZ _res_conv = *(LDKCResult_ReplyChannelRangeDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_NodeInfoDecodeErrorZ_free(_res_conv); + CResult_ReplyChannelRangeDecodeErrorZ_free(_res_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NodeInfoDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKCResult_NodeInfoDecodeErrorZ* orig_conv = (LDKCResult_NodeInfoDecodeErrorZ*)(orig & ~1); - LDKCResult_NodeInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeInfoDecodeErrorZ), "LDKCResult_NodeInfoDecodeErrorZ"); - *ret_conv = CResult_NodeInfoDecodeErrorZ_clone(orig_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyChannelRangeDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_ReplyChannelRangeDecodeErrorZ* orig_conv = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(orig & ~1); + LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ"); + *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NetworkGraphDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { - LDKNetworkGraph o_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1GossipTimestampFilterDecodeErrorZ_1ok(JNIEnv *env, jclass clz, int64_t o) { + LDKGossipTimestampFilter o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - // Warning: we need a move here but no clone is available for LDKNetworkGraph - LDKCResult_NetworkGraphDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetworkGraphDecodeErrorZ), "LDKCResult_NetworkGraphDecodeErrorZ"); - *ret_conv = CResult_NetworkGraphDecodeErrorZ_ok(o_conv); + o_conv = GossipTimestampFilter_clone(&o_conv); + LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ"); + *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1NetworkGraphDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1GossipTimestampFilterDecodeErrorZ_1err(JNIEnv *env, jclass clz, int64_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_NetworkGraphDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetworkGraphDecodeErrorZ), "LDKCResult_NetworkGraphDecodeErrorZ"); - *ret_conv = CResult_NetworkGraphDecodeErrorZ_err(e_conv); + LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ"); + *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_err(e_conv); return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NetworkGraphDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1GossipTimestampFilterDecodeErrorZ_1free(JNIEnv *env, jclass clz, int64_t _res) { if ((_res & 1) != 0) return; - LDKCResult_NetworkGraphDecodeErrorZ _res_conv = *(LDKCResult_NetworkGraphDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_GossipTimestampFilterDecodeErrorZ _res_conv = *(LDKCResult_GossipTimestampFilterDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_NetworkGraphDecodeErrorZ_free(_res_conv); + CResult_GossipTimestampFilterDecodeErrorZ_free(_res_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1GossipTimestampFilterDecodeErrorZ_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCResult_GossipTimestampFilterDecodeErrorZ* orig_conv = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(orig & ~1); + LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ"); + *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Event_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { @@ -7262,20 +9265,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1free(J ChannelHandshakeConfig_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKChannelHandshakeConfig orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int32_t JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1get_1minimum_1depth(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKChannelHandshakeConfig this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -7332,8 +9321,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1new return ret_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1default(JNIEnv *env, jclass clz) { - LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_default(); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKChannelHandshakeConfig orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -7343,18 +9335,8 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1def return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKChannelHandshakeLimits this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ChannelHandshakeLimits_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKChannelHandshakeLimits orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_clone(&orig_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1default(JNIEnv *env, jclass clz) { + LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_default(); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -7364,6 +9346,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1clo return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKChannelHandshakeLimits this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ChannelHandshakeLimits_free(this_ptr_conv); +} + JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1get_1min_1funding_1satoshis(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKChannelHandshakeLimits this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -7525,8 +9514,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1new return ret_ref; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1default(JNIEnv *env, jclass clz) { - LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_default(); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKChannelHandshakeLimits orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -7536,18 +9528,8 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1def return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKChannelConfig this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ChannelConfig_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKChannelConfig orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKChannelConfig ret_var = ChannelConfig_clone(&orig_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1default(JNIEnv *env, jclass clz) { + LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_default(); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -7557,6 +9539,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1clone(JNIEnv return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKChannelConfig this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ChannelConfig_free(this_ptr_conv); +} + JNIEXPORT int32_t JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1get_1fee_1proportional_1millionths(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKChannelConfig this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -7613,6 +9602,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1new(JNIEnv * return ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKChannelConfig orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKChannelConfig ret_var = ChannelConfig_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1default(JNIEnv *env, jclass clz) { LDKChannelConfig ret_var = ChannelConfig_default(); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -7639,15 +9642,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1read(JNIEnv LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKChannelConfig ret_var = ChannelConfig_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ"); + *ret_conv = ChannelConfig_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UserConfig_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { @@ -7657,20 +9655,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UserConfig_1free(JNIEnv *env, UserConfig_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UserConfig_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKUserConfig orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKUserConfig ret_var = UserConfig_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UserConfig_1get_1own_1channel_1config(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKUserConfig this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -7769,6 +9753,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UserConfig_1new(JNIEnv *env return ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UserConfig_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKUserConfig orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKUserConfig ret_var = UserConfig_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UserConfig_1default(JNIEnv *env, jclass clz) { LDKUserConfig ret_var = UserConfig_default(); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -7927,20 +9925,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1free(JNI ChannelMonitorUpdate_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKChannelMonitorUpdate orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKChannelMonitorUpdate ret_var = ChannelMonitorUpdate_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1get_1update_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKChannelMonitorUpdate this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -7956,6 +9940,20 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1set_1upd ChannelMonitorUpdate_set_update_id(&this_ptr_conv, val); } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKChannelMonitorUpdate orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKChannelMonitorUpdate ret_var = ChannelMonitorUpdate_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1write(JNIEnv *env, jclass clz, int64_t obj) { LDKChannelMonitorUpdate obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -8061,15 +10059,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_HTLCUpdate_1read(JNIEnv *en LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKHTLCUpdate ret_var = HTLCUpdate_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ"); + *ret_conv = HTLCUpdate_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMonitor_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { @@ -8296,20 +10289,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OutPoint_1free(JNIEnv *env, jc OutPoint_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_OutPoint_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKOutPoint orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKOutPoint ret_var = OutPoint_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_OutPoint_1get_1txid(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKOutPoint this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -8358,6 +10337,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_OutPoint_1new(JNIEnv *env, return ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_OutPoint_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKOutPoint orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKOutPoint ret_var = OutPoint_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_OutPoint_1to_1channel_1id(JNIEnv *env, jclass clz, int64_t this_arg) { LDKOutPoint this_arg_conv; this_arg_conv.inner = (void*)(this_arg & (~1)); @@ -8382,15 +10375,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_OutPoint_1read(JNIEnv *env, LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKOutPoint ret_var = OutPoint_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ"); + *ret_conv = OutPoint_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_SpendableOutputDescriptor_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { @@ -8455,20 +10443,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1free(JNIE InMemoryChannelKeys_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKInMemoryChannelKeys orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKInMemoryChannelKeys ret_var = InMemoryChannelKeys_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1get_1funding_1key(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKInMemoryChannelKeys this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -8583,6 +10557,20 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1comm InMemoryChannelKeys_set_commitment_seed(&this_ptr_conv, val_ref); } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKInMemoryChannelKeys orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKInMemoryChannelKeys ret_var = InMemoryChannelKeys_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1new(JNIEnv *env, jclass clz, int8_tArray funding_key, int8_tArray revocation_base_key, int8_tArray payment_key, int8_tArray delayed_payment_base_key, int8_tArray htlc_base_key, int8_tArray commitment_seed, int64_t channel_value_satoshis, int64_t key_derivation_params) { LDKSecretKey funding_key_ref; CHECK((*env)->GetArrayLength(env, funding_key) == 32); @@ -8770,20 +10758,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1free(JNIEnv *e ChannelDetails_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKChannelDetails orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKChannelDetails ret_var = ChannelDetails_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1channel_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKChannelDetails this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -8843,7 +10817,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1counterpa LDKInitFeatures val_conv; val_conv.inner = (void*)(val & (~1)); val_conv.is_owned = (val & 1) || (val == 0); - // Warning: we need a move here but no clone is available for LDKInitFeatures + val_conv = InitFeatures_clone(&val_conv); ChannelDetails_set_counterparty_features(&this_ptr_conv, val_conv); } @@ -8922,6 +10896,20 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1is_1live( ChannelDetails_set_is_live(&this_ptr_conv, val); } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKChannelDetails orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKChannelDetails ret_var = ChannelDetails_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PaymentSendFailure_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKPaymentSendFailure this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -9523,20 +11511,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1free(JNIEnv *env ErrorMessage_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKErrorMessage orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKErrorMessage ret_var = ErrorMessage_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1get_1channel_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKErrorMessage this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -9594,18 +11568,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1new(JNIEnv *e return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Ping_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKPing this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - Ping_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Ping_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKPing orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKErrorMessage orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKPing ret_var = Ping_clone(&orig_conv); + LDKErrorMessage ret_var = ErrorMessage_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -9615,6 +11582,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Ping_1clone(JNIEnv *env, jc return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Ping_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKPing this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + Ping_free(this_ptr_conv); +} + JNIEXPORT int16_t JNICALL Java_org_ldk_impl_bindings_Ping_1get_1ponglen(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKPing this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -9656,18 +11630,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Ping_1new(JNIEnv *env, jcla return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Pong_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKPong this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - Pong_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Pong_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKPong orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Ping_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKPing orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKPong ret_var = Pong_clone(&orig_conv); + LDKPing ret_var = Ping_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -9677,6 +11644,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Pong_1clone(JNIEnv *env, jc return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Pong_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKPong this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + Pong_free(this_ptr_conv); +} + JNIEXPORT int16_t JNICALL Java_org_ldk_impl_bindings_Pong_1get_1byteslen(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKPong this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -9703,18 +11677,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Pong_1new(JNIEnv *env, jcla return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKOpenChannel this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - OpenChannel_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_OpenChannel_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKOpenChannel orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Pong_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKPong orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKOpenChannel ret_var = OpenChannel_clone(&orig_conv); + LDKPong ret_var = Pong_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -9724,6 +11691,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_OpenChannel_1clone(JNIEnv * return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKOpenChannel this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + OpenChannel_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_OpenChannel_1get_1chain_1hash(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKOpenChannel this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10026,18 +12000,11 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1channel_1fla OpenChannel_set_channel_flags(&this_ptr_conv, val); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKAcceptChannel this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - AcceptChannel_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKAcceptChannel orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_OpenChannel_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKOpenChannel orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKAcceptChannel ret_var = AcceptChannel_clone(&orig_conv); + LDKOpenChannel ret_var = OpenChannel_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10047,6 +12014,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1clone(JNIEnv return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKAcceptChannel this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + AcceptChannel_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1get_1temporary_1channel_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKAcceptChannel this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10285,18 +12259,11 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1first_1per AcceptChannel_set_first_per_commitment_point(&this_ptr_conv, val_ref); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKFundingCreated this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - FundingCreated_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_FundingCreated_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKFundingCreated orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKAcceptChannel orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKFundingCreated ret_var = FundingCreated_clone(&orig_conv); + LDKAcceptChannel ret_var = AcceptChannel_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10306,6 +12273,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_FundingCreated_1clone(JNIEn return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKFundingCreated this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + FundingCreated_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_FundingCreated_1get_1temporary_1channel_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKFundingCreated this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10398,18 +12372,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_FundingCreated_1new(JNIEnv return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingSigned_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKFundingSigned this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - FundingSigned_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_FundingSigned_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKFundingSigned orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_FundingCreated_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKFundingCreated orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKFundingSigned ret_var = FundingSigned_clone(&orig_conv); + LDKFundingCreated ret_var = FundingCreated_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10419,6 +12386,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_FundingSigned_1clone(JNIEnv return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingSigned_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKFundingSigned this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + FundingSigned_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_FundingSigned_1get_1channel_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKFundingSigned this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10474,18 +12448,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_FundingSigned_1new(JNIEnv * return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingLocked_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKFundingLocked this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - FundingLocked_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_FundingLocked_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKFundingLocked orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_FundingSigned_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKFundingSigned orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKFundingLocked ret_var = FundingLocked_clone(&orig_conv); + LDKFundingSigned ret_var = FundingSigned_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10495,6 +12462,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_FundingLocked_1clone(JNIEnv return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingLocked_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKFundingLocked this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + FundingLocked_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_FundingLocked_1get_1channel_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKFundingLocked this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10550,18 +12524,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_FundingLocked_1new(JNIEnv * return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Shutdown_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKShutdown this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - Shutdown_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Shutdown_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKShutdown orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_FundingLocked_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKFundingLocked orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKShutdown ret_var = Shutdown_clone(&orig_conv); + LDKFundingLocked ret_var = FundingLocked_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10571,6 +12538,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Shutdown_1clone(JNIEnv *env return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Shutdown_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKShutdown this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + Shutdown_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_Shutdown_1get_1channel_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKShutdown this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10629,18 +12603,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Shutdown_1new(JNIEnv *env, return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKClosingSigned this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ClosingSigned_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKClosingSigned orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Shutdown_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKShutdown orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKClosingSigned ret_var = ClosingSigned_clone(&orig_conv); + LDKShutdown ret_var = Shutdown_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10650,6 +12617,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1clone(JNIEnv return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKClosingSigned this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ClosingSigned_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1get_1channel_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKClosingSigned this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10720,18 +12694,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1new(JNIEnv * return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKUpdateAddHTLC this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - UpdateAddHTLC_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKUpdateAddHTLC orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKClosingSigned orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKUpdateAddHTLC ret_var = UpdateAddHTLC_clone(&orig_conv); + LDKClosingSigned ret_var = ClosingSigned_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10741,6 +12708,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1clone(JNIEnv return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKUpdateAddHTLC this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + UpdateAddHTLC_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1get_1channel_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKUpdateAddHTLC this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10821,21 +12795,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1set_1cltv_1expi LDKUpdateAddHTLC this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); this_ptr_conv.is_owned = false; - UpdateAddHTLC_set_cltv_expiry(&this_ptr_conv, val); -} - -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKUpdateFulfillHTLC this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - UpdateFulfillHTLC_free(this_ptr_conv); + UpdateAddHTLC_set_cltv_expiry(&this_ptr_conv, val); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKUpdateFulfillHTLC orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKUpdateAddHTLC orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_clone(&orig_conv); + LDKUpdateAddHTLC ret_var = UpdateAddHTLC_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10845,6 +12812,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1clone(JN return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKUpdateFulfillHTLC this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + UpdateFulfillHTLC_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1get_1channel_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKUpdateFulfillHTLC this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10915,18 +12889,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1new(JNIE return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKUpdateFailHTLC this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - UpdateFailHTLC_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKUpdateFailHTLC orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKUpdateFulfillHTLC orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKUpdateFailHTLC ret_var = UpdateFailHTLC_clone(&orig_conv); + LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10936,6 +12903,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1clone(JNIEn return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKUpdateFailHTLC this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + UpdateFailHTLC_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1get_1channel_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKUpdateFailHTLC this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10970,18 +12944,11 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1set_1htlc_1id( UpdateFailHTLC_set_htlc_id(&this_ptr_conv, val); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKUpdateFailMalformedHTLC this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - UpdateFailMalformedHTLC_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKUpdateFailMalformedHTLC orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKUpdateFailHTLC orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKUpdateFailMalformedHTLC ret_var = UpdateFailMalformedHTLC_clone(&orig_conv); + LDKUpdateFailHTLC ret_var = UpdateFailHTLC_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10991,6 +12958,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1cl return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKUpdateFailMalformedHTLC this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + UpdateFailMalformedHTLC_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1get_1channel_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKUpdateFailMalformedHTLC this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11040,18 +13014,11 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1set_1 UpdateFailMalformedHTLC_set_failure_code(&this_ptr_conv, val); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKCommitmentSigned this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - CommitmentSigned_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKCommitmentSigned orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKUpdateFailMalformedHTLC orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKCommitmentSigned ret_var = CommitmentSigned_clone(&orig_conv); + LDKUpdateFailMalformedHTLC ret_var = UpdateFailMalformedHTLC_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -11061,6 +13028,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1clone(JNI return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKCommitmentSigned this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + CommitmentSigned_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1get_1channel_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKCommitmentSigned this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11149,18 +13123,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1new(JNIEn return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKRevokeAndACK this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - RevokeAndACK_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKRevokeAndACK orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCommitmentSigned orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKRevokeAndACK ret_var = RevokeAndACK_clone(&orig_conv); + LDKCommitmentSigned ret_var = CommitmentSigned_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -11170,6 +13137,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1clone(JNIEnv return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKRevokeAndACK this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + RevokeAndACK_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1get_1channel_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKRevokeAndACK this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11247,18 +13221,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1new(JNIEnv *e return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFee_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKUpdateFee this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - UpdateFee_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFee_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKUpdateFee orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKRevokeAndACK orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKUpdateFee ret_var = UpdateFee_clone(&orig_conv); + LDKRevokeAndACK ret_var = RevokeAndACK_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -11268,6 +13235,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFee_1clone(JNIEnv *en return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFee_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKUpdateFee this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + UpdateFee_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_UpdateFee_1get_1channel_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKUpdateFee this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11316,18 +13290,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFee_1new(JNIEnv *env, return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKDataLossProtect this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - DataLossProtect_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKDataLossProtect orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFee_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKUpdateFee orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKDataLossProtect ret_var = DataLossProtect_clone(&orig_conv); + LDKUpdateFee ret_var = UpdateFee_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -11337,6 +13304,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1clone(JNIE return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKDataLossProtect this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + DataLossProtect_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1get_1your_1last_1per_1commitment_1secret(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKDataLossProtect this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11392,18 +13366,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1new(JNIEnv return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKChannelReestablish this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ChannelReestablish_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKChannelReestablish orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKDataLossProtect orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKChannelReestablish ret_var = ChannelReestablish_clone(&orig_conv); + LDKDataLossProtect ret_var = DataLossProtect_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -11413,6 +13380,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1clone(J return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKChannelReestablish this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ChannelReestablish_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1get_1channel_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKChannelReestablish this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11462,18 +13436,11 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1set_1next_ ChannelReestablish_set_next_remote_commitment_number(&this_ptr_conv, val); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKAnnouncementSignatures this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - AnnouncementSignatures_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKAnnouncementSignatures orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKChannelReestablish orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKAnnouncementSignatures ret_var = AnnouncementSignatures_clone(&orig_conv); + LDKChannelReestablish ret_var = ChannelReestablish_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -11483,6 +13450,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1clo return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKAnnouncementSignatures this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + AnnouncementSignatures_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1get_1channel_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKAnnouncementSignatures this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11575,6 +13549,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1new return ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKAnnouncementSignatures orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKAnnouncementSignatures ret_var = AnnouncementSignatures_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NetAddress_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { if ((this_ptr & 1) != 0) return; LDKNetAddress this_ptr_conv = *(LDKNetAddress*)(((uint64_t)this_ptr) & ~1); @@ -11616,20 +13604,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1free UnsignedNodeAnnouncement_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKUnsignedNodeAnnouncement orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKUnsignedNodeAnnouncement ret_var = UnsignedNodeAnnouncement_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1get_1features(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKUnsignedNodeAnnouncement this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11651,7 +13625,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1set_ LDKNodeFeatures val_conv; val_conv.inner = (void*)(val & (~1)); val_conv.is_owned = (val & 1) || (val == 0); - // Warning: we need a move here but no clone is available for LDKNodeFeatures + val_conv = NodeFeatures_clone(&val_conv); UnsignedNodeAnnouncement_set_features(&this_ptr_conv, val_conv); } @@ -11748,18 +13722,11 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1set_ UnsignedNodeAnnouncement_set_addresses(&this_ptr_conv, val_constr); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKNodeAnnouncement this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - NodeAnnouncement_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKNodeAnnouncement orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKUnsignedNodeAnnouncement orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKNodeAnnouncement ret_var = NodeAnnouncement_clone(&orig_conv); + LDKUnsignedNodeAnnouncement ret_var = UnsignedNodeAnnouncement_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -11769,6 +13736,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1clone(JNI return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKNodeAnnouncement this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + NodeAnnouncement_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1get_1signature(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKNodeAnnouncement this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11831,18 +13805,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1new(JNIEn return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKUnsignedChannelAnnouncement this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - UnsignedChannelAnnouncement_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKUnsignedChannelAnnouncement orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKNodeAnnouncement orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKUnsignedChannelAnnouncement ret_var = UnsignedChannelAnnouncement_clone(&orig_conv); + LDKNodeAnnouncement ret_var = NodeAnnouncement_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -11852,6 +13819,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKUnsignedChannelAnnouncement this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + UnsignedChannelAnnouncement_free(this_ptr_conv); +} + JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1get_1features(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKUnsignedChannelAnnouncement this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11873,7 +13847,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1s LDKChannelFeatures val_conv; val_conv.inner = (void*)(val & (~1)); val_conv.is_owned = (val & 1) || (val == 0); - // Warning: we need a move here but no clone is available for LDKChannelFeatures + val_conv = ChannelFeatures_clone(&val_conv); UnsignedChannelAnnouncement_set_features(&this_ptr_conv, val_conv); } @@ -11987,18 +13961,11 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1s UnsignedChannelAnnouncement_set_bitcoin_key_2(&this_ptr_conv, val_ref); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKChannelAnnouncement this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ChannelAnnouncement_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKChannelAnnouncement orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKUnsignedChannelAnnouncement orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKChannelAnnouncement ret_var = ChannelAnnouncement_clone(&orig_conv); + LDKUnsignedChannelAnnouncement ret_var = UnsignedChannelAnnouncement_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -12008,6 +13975,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1clone( return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKChannelAnnouncement this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ChannelAnnouncement_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1get_1node_1signature_11(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKChannelAnnouncement this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -12136,18 +14110,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1new(JN return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKUnsignedChannelUpdate this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - UnsignedChannelUpdate_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKUnsignedChannelUpdate orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKChannelAnnouncement orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKUnsignedChannelUpdate ret_var = UnsignedChannelUpdate_clone(&orig_conv); + LDKChannelAnnouncement ret_var = ChannelAnnouncement_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -12157,6 +14124,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1clon return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKUnsignedChannelUpdate this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + UnsignedChannelUpdate_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1get_1chain_1hash(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKUnsignedChannelUpdate this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -12281,18 +14255,11 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1fe UnsignedChannelUpdate_set_fee_proportional_millionths(&this_ptr_conv, val); } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKChannelUpdate this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ChannelUpdate_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKChannelUpdate orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKUnsignedChannelUpdate orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKChannelUpdate ret_var = ChannelUpdate_clone(&orig_conv); + LDKUnsignedChannelUpdate ret_var = UnsignedChannelUpdate_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -12302,6 +14269,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1clone(JNIEnv return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKChannelUpdate this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ChannelUpdate_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1get_1signature(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKChannelUpdate this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -12364,18 +14338,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1new(JNIEnv * return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_QueryChannelRange_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKQueryChannelRange this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - QueryChannelRange_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_QueryChannelRange_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKQueryChannelRange orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKChannelUpdate orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKQueryChannelRange ret_var = QueryChannelRange_clone(&orig_conv); + LDKChannelUpdate ret_var = ChannelUpdate_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -12385,6 +14352,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_QueryChannelRange_1clone(JN return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_QueryChannelRange_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKQueryChannelRange this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + QueryChannelRange_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_QueryChannelRange_1get_1chain_1hash(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKQueryChannelRange this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -12448,18 +14422,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_QueryChannelRange_1new(JNIE return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKReplyChannelRange this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ReplyChannelRange_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKReplyChannelRange orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_QueryChannelRange_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKQueryChannelRange orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKReplyChannelRange ret_var = ReplyChannelRange_clone(&orig_conv); + LDKQueryChannelRange ret_var = QueryChannelRange_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -12469,6 +14436,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1clone(JN return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKReplyChannelRange this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ReplyChannelRange_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1get_1chain_1hash(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKReplyChannelRange this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -12518,19 +14492,19 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1set_1number ReplyChannelRange_set_number_of_blocks(&this_ptr_conv, val); } -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1get_1full_1information(JNIEnv *env, jclass clz, int64_t this_ptr) { +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1get_1sync_1complete(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKReplyChannelRange this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); this_ptr_conv.is_owned = false; - jboolean ret_val = ReplyChannelRange_get_full_information(&this_ptr_conv); + jboolean ret_val = ReplyChannelRange_get_sync_complete(&this_ptr_conv); return ret_val; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1set_1full_1information(JNIEnv *env, jclass clz, int64_t this_ptr, jboolean val) { +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1set_1sync_1complete(JNIEnv *env, jclass clz, int64_t this_ptr, jboolean val) { LDKReplyChannelRange this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); this_ptr_conv.is_owned = false; - ReplyChannelRange_set_full_information(&this_ptr_conv, val); + ReplyChannelRange_set_sync_complete(&this_ptr_conv, val); } JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1set_1short_1channel_1ids(JNIEnv *env, jclass clz, int64_t this_ptr, int64_tArray val) { @@ -12552,7 +14526,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1set_1short_ ReplyChannelRange_set_short_channel_ids(&this_ptr_conv, val_constr); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1new(JNIEnv *env, jclass clz, int8_tArray chain_hash_arg, int32_t first_blocknum_arg, int32_t number_of_blocks_arg, jboolean full_information_arg, int64_tArray short_channel_ids_arg) { +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1new(JNIEnv *env, jclass clz, int8_tArray chain_hash_arg, int32_t first_blocknum_arg, int32_t number_of_blocks_arg, jboolean sync_complete_arg, int64_tArray short_channel_ids_arg) { LDKThirtyTwoBytes chain_hash_arg_ref; CHECK((*env)->GetArrayLength(env, chain_hash_arg) == 32); (*env)->GetByteArrayRegion(env, chain_hash_arg, 0, 32, chain_hash_arg_ref.data); @@ -12568,7 +14542,7 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1new(JNIE short_channel_ids_arg_constr.data[g] = arr_conv_6; } (*env)->ReleaseLongArrayElements(env, short_channel_ids_arg, short_channel_ids_arg_vals, 0); - LDKReplyChannelRange ret_var = ReplyChannelRange_new(chain_hash_arg_ref, first_blocknum_arg, number_of_blocks_arg, full_information_arg, short_channel_ids_arg_constr); + LDKReplyChannelRange ret_var = ReplyChannelRange_new(chain_hash_arg_ref, first_blocknum_arg, number_of_blocks_arg, sync_complete_arg, short_channel_ids_arg_constr); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -12578,18 +14552,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1new(JNIE return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_QueryShortChannelIds_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKQueryShortChannelIds this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - QueryShortChannelIds_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_QueryShortChannelIds_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKQueryShortChannelIds orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKReplyChannelRange orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKQueryShortChannelIds ret_var = QueryShortChannelIds_clone(&orig_conv); + LDKReplyChannelRange ret_var = ReplyChannelRange_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -12599,6 +14566,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_QueryShortChannelIds_1clone return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_QueryShortChannelIds_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKQueryShortChannelIds this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + QueryShortChannelIds_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_QueryShortChannelIds_1get_1chain_1hash(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKQueryShortChannelIds this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -12663,18 +14637,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_QueryShortChannelIds_1new(J return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyShortChannelIdsEnd_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKReplyShortChannelIdsEnd this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ReplyShortChannelIdsEnd_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ReplyShortChannelIdsEnd_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKReplyShortChannelIdsEnd orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_QueryShortChannelIds_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKQueryShortChannelIds orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKReplyShortChannelIdsEnd ret_var = ReplyShortChannelIdsEnd_clone(&orig_conv); + LDKQueryShortChannelIds ret_var = QueryShortChannelIds_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -12684,6 +14651,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ReplyShortChannelIdsEnd_1cl return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyShortChannelIdsEnd_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKReplyShortChannelIdsEnd this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ReplyShortChannelIdsEnd_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_ReplyShortChannelIdsEnd_1get_1chain_1hash(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKReplyShortChannelIdsEnd this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -12732,18 +14706,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ReplyShortChannelIdsEnd_1ne return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_GossipTimestampFilter_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKGossipTimestampFilter this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - GossipTimestampFilter_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_GossipTimestampFilter_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKGossipTimestampFilter orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ReplyShortChannelIdsEnd_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKReplyShortChannelIdsEnd orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKGossipTimestampFilter ret_var = GossipTimestampFilter_clone(&orig_conv); + LDKReplyShortChannelIdsEnd ret_var = ReplyShortChannelIdsEnd_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -12753,6 +14720,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_GossipTimestampFilter_1clon return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_GossipTimestampFilter_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKGossipTimestampFilter this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + GossipTimestampFilter_free(this_ptr_conv); +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_GossipTimestampFilter_1get_1chain_1hash(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKGossipTimestampFilter this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -12816,6 +14790,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_GossipTimestampFilter_1new( return ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_GossipTimestampFilter_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKGossipTimestampFilter orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKGossipTimestampFilter ret_var = GossipTimestampFilter_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ErrorAction_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { if ((this_ptr & 1) != 0) return; LDKErrorAction this_ptr_conv = *(LDKErrorAction*)(((uint64_t)this_ptr) & ~1); @@ -12838,20 +14826,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LightningError_1free(JNIEnv *e LightningError_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LightningError_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKLightningError orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKLightningError ret_var = LightningError_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT jstring JNICALL Java_org_ldk_impl_bindings_LightningError_1get_1err(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKLightningError this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -12908,18 +14882,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LightningError_1new(JNIEnv return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKCommitmentUpdate this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - CommitmentUpdate_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKCommitmentUpdate orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LightningError_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKLightningError orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKCommitmentUpdate ret_var = CommitmentUpdate_clone(&orig_conv); + LDKLightningError ret_var = LightningError_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -12929,6 +14896,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1clone(JNI return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKCommitmentUpdate this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + CommitmentUpdate_free(this_ptr_conv); +} + JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1set_1update_1add_1htlcs(JNIEnv *env, jclass clz, int64_t this_ptr, int64_tArray val) { LDKCommitmentUpdate this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -13154,6 +15128,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1new(JNIEn return ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCommitmentUpdate orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKCommitmentUpdate ret_var = CommitmentUpdate_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCFailChannelUpdate_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { if ((this_ptr & 1) != 0) return; LDKHTLCFailChannelUpdate this_ptr_conv = *(LDKHTLCFailChannelUpdate*)(((uint64_t)this_ptr) & ~1); @@ -13198,15 +15186,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1read(JNIEnv LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKAcceptChannel ret_var = AcceptChannel_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ"); + *ret_conv = AcceptChannel_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -13224,15 +15207,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1rea LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKAnnouncementSignatures ret_var = AnnouncementSignatures_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ"); + *ret_conv = AnnouncementSignatures_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -13271,15 +15249,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1read(JNIEnv LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKClosingSigned ret_var = ClosingSigned_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ"); + *ret_conv = ClosingSigned_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -13297,15 +15270,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1read(JNIE LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKCommitmentSigned ret_var = CommitmentSigned_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ"); + *ret_conv = CommitmentSigned_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_FundingCreated_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -13323,15 +15291,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_FundingCreated_1read(JNIEnv LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKFundingCreated ret_var = FundingCreated_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ"); + *ret_conv = FundingCreated_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_FundingSigned_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -13349,15 +15312,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_FundingSigned_1read(JNIEnv LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKFundingSigned ret_var = FundingSigned_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ"); + *ret_conv = FundingSigned_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_FundingLocked_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -13375,15 +15333,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_FundingLocked_1read(JNIEnv LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKFundingLocked ret_var = FundingLocked_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ"); + *ret_conv = FundingLocked_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_Init_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -13422,15 +15375,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_OpenChannel_1read(JNIEnv *e LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKOpenChannel ret_var = OpenChannel_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ"); + *ret_conv = OpenChannel_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -13448,15 +15396,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1read(JNIEnv * LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKRevokeAndACK ret_var = RevokeAndACK_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ"); + *ret_conv = RevokeAndACK_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_Shutdown_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -13474,15 +15417,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Shutdown_1read(JNIEnv *env, LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKShutdown ret_var = Shutdown_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ"); + *ret_conv = Shutdown_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -13500,15 +15438,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1read(JNIEnv LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKUpdateFailHTLC ret_var = UpdateFailHTLC_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ"); + *ret_conv = UpdateFailHTLC_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -13526,15 +15459,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1re LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKUpdateFailMalformedHTLC ret_var = UpdateFailMalformedHTLC_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ"); + *ret_conv = UpdateFailMalformedHTLC_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_UpdateFee_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -13552,15 +15480,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFee_1read(JNIEnv *env LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKUpdateFee ret_var = UpdateFee_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ"); + *ret_conv = UpdateFee_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -13578,15 +15501,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1read(JNI LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ"); + *ret_conv = UpdateFulfillHTLC_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -13604,15 +15522,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1read(JNIEnv LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKUpdateAddHTLC ret_var = UpdateAddHTLC_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ"); + *ret_conv = UpdateAddHTLC_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_Ping_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -13693,15 +15606,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1read(J LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKChannelAnnouncement ret_var = ChannelAnnouncement_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ"); + *ret_conv = ChannelAnnouncement_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -13740,15 +15648,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1read(JNIEnv LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKChannelUpdate ret_var = ChannelUpdate_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ"); + *ret_conv = ChannelUpdate_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -13808,15 +15711,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1read(JNIE LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKNodeAnnouncement ret_var = NodeAnnouncement_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ"); + *ret_conv = NodeAnnouncement_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_QueryShortChannelIds_1read(JNIEnv *env, jclass clz, int8_tArray ser) { @@ -14013,20 +15911,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1free(JNIEnv * PeerHandleError_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKPeerHandleError orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKPeerHandleError ret_var = PeerHandleError_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1get_1no_1connection_1possible(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKPeerHandleError this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -14053,6 +15937,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1new(JNIEnv return ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKPeerHandleError orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKPeerHandleError ret_var = PeerHandleError_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PeerManager_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKPeerManager this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -14208,7 +16106,7 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_derive_1private_1key(JNIEnv CHECK((*env)->GetArrayLength(env, base_secret) == 32); (*env)->GetByteArrayRegion(env, base_secret, 0, 32, base_secret_arr); unsigned char (*base_secret_ref)[32] = &base_secret_arr; - LDKCResult_SecretKeySecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeySecpErrorZ), "LDKCResult_SecretKeySecpErrorZ"); + LDKCResult_SecretKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeyErrorZ), "LDKCResult_SecretKeyErrorZ"); *ret_conv = derive_private_key(per_commitment_point_ref, base_secret_ref); return (long)ret_conv; } @@ -14220,7 +16118,7 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_derive_1public_1key(JNIEnv LDKPublicKey base_point_ref; CHECK((*env)->GetArrayLength(env, base_point) == 33); (*env)->GetByteArrayRegion(env, base_point, 0, 33, base_point_ref.compressed_form); - LDKCResult_PublicKeySecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeySecpErrorZ), "LDKCResult_PublicKeySecpErrorZ"); + LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ"); *ret_conv = derive_public_key(per_commitment_point_ref, base_point_ref); return (long)ret_conv; } @@ -14234,7 +16132,7 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_derive_1private_1revocation CHECK((*env)->GetArrayLength(env, countersignatory_revocation_base_secret) == 32); (*env)->GetByteArrayRegion(env, countersignatory_revocation_base_secret, 0, 32, countersignatory_revocation_base_secret_arr); unsigned char (*countersignatory_revocation_base_secret_ref)[32] = &countersignatory_revocation_base_secret_arr; - LDKCResult_SecretKeySecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeySecpErrorZ), "LDKCResult_SecretKeySecpErrorZ"); + LDKCResult_SecretKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeyErrorZ), "LDKCResult_SecretKeyErrorZ"); *ret_conv = derive_private_revocation_key(per_commitment_secret_ref, countersignatory_revocation_base_secret_ref); return (long)ret_conv; } @@ -14246,7 +16144,7 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_derive_1public_1revocation_ LDKPublicKey countersignatory_revocation_base_point_ref; CHECK((*env)->GetArrayLength(env, countersignatory_revocation_base_point) == 33); (*env)->GetByteArrayRegion(env, countersignatory_revocation_base_point, 0, 33, countersignatory_revocation_base_point_ref.compressed_form); - LDKCResult_PublicKeySecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeySecpErrorZ), "LDKCResult_PublicKeySecpErrorZ"); + LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ"); *ret_conv = derive_public_revocation_key(per_commitment_point_ref, countersignatory_revocation_base_point_ref); return (long)ret_conv; } @@ -14258,20 +16156,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1free(JNIEnv *e TxCreationKeys_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKTxCreationKeys orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKTxCreationKeys ret_var = TxCreationKeys_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1get_1per_1commitment_1point(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKTxCreationKeys this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -14393,6 +16277,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1new(JNIEnv return ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKTxCreationKeys orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKTxCreationKeys ret_var = TxCreationKeys_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1write(JNIEnv *env, jclass clz, int64_t obj) { LDKTxCreationKeys obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -14408,15 +16306,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1read(JNIEnv LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKTxCreationKeys ret_var = TxCreationKeys_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ"); + *ret_conv = TxCreationKeys_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { @@ -14426,20 +16319,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1free(JNIEnv ChannelPublicKeys_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKChannelPublicKeys orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKChannelPublicKeys ret_var = ChannelPublicKeys_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1get_1funding_1pubkey(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKChannelPublicKeys this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -14561,6 +16440,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1new(JNIE return ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKChannelPublicKeys orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKChannelPublicKeys ret_var = ChannelPublicKeys_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1write(JNIEnv *env, jclass clz, int64_t obj) { LDKChannelPublicKeys obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -14576,15 +16469,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1read(JNI LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKChannelPublicKeys ret_var = ChannelPublicKeys_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ"); + *ret_conv = ChannelPublicKeys_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1derive_1new(JNIEnv *env, jclass clz, int8_tArray per_commitment_point, int8_tArray broadcaster_delayed_payment_base, int8_tArray broadcaster_htlc_base, int8_tArray countersignatory_revocation_base, int8_tArray countersignatory_htlc_base) { @@ -14603,7 +16491,7 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1derive_1new LDKPublicKey countersignatory_htlc_base_ref; CHECK((*env)->GetArrayLength(env, countersignatory_htlc_base) == 33); (*env)->GetByteArrayRegion(env, countersignatory_htlc_base, 0, 33, countersignatory_htlc_base_ref.compressed_form); - LDKCResult_TxCreationKeysSecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysSecpErrorZ), "LDKCResult_TxCreationKeysSecpErrorZ"); + LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ"); *ret_conv = TxCreationKeys_derive_new(per_commitment_point_ref, broadcaster_delayed_payment_base_ref, broadcaster_htlc_base_ref, countersignatory_revocation_base_ref, countersignatory_htlc_base_ref); return (long)ret_conv; } @@ -14618,7 +16506,7 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1from_1chann LDKChannelPublicKeys countersignatory_keys_conv; countersignatory_keys_conv.inner = (void*)(countersignatory_keys & (~1)); countersignatory_keys_conv.is_owned = false; - LDKCResult_TxCreationKeysSecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysSecpErrorZ), "LDKCResult_TxCreationKeysSecpErrorZ"); + LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ"); *ret_conv = TxCreationKeys_from_channel_static_keys(per_commitment_point_ref, &broadcaster_keys_conv, &countersignatory_keys_conv); return (long)ret_conv; } @@ -14644,20 +16532,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1free(J HTLCOutputInCommitment_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKHTLCOutputInCommitment orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1get_1offered(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKHTLCOutputInCommitment this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -14722,6 +16596,20 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1set_1p HTLCOutputInCommitment_set_payment_hash(&this_ptr_conv, val_ref); } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKHTLCOutputInCommitment orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1write(JNIEnv *env, jclass clz, int64_t obj) { LDKHTLCOutputInCommitment obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -14737,15 +16625,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1rea LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ"); + *ret_conv = HTLCOutputInCommitment_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_get_1htlc_1redeemscript(JNIEnv *env, jclass clz, int64_t htlc, int64_t keys) { @@ -14804,20 +16687,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelTransactionParameters_1 ChannelTransactionParameters_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelTransactionParameters_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKChannelTransactionParameters orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelTransactionParameters_1get_1holder_1pubkeys(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKChannelTransactionParameters this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -14946,6 +16815,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelTransactionParameter return ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelTransactionParameters_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKChannelTransactionParameters orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CounterpartyChannelTransactionParameters_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKCounterpartyChannelTransactionParameters this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -14953,20 +16836,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CounterpartyChannelTransaction CounterpartyChannelTransactionParameters_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CounterpartyChannelTransactionParameters_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKCounterpartyChannelTransactionParameters orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CounterpartyChannelTransactionParameters_1get_1pubkeys(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKCounterpartyChannelTransactionParameters this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -15022,6 +16891,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CounterpartyChannelTransact return ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CounterpartyChannelTransactionParameters_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKCounterpartyChannelTransactionParameters orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChannelTransactionParameters_1is_1populated(JNIEnv *env, jclass clz, int64_t this_arg) { LDKChannelTransactionParameters this_arg_conv; this_arg_conv.inner = (void*)(this_arg & (~1)); @@ -15073,15 +16956,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CounterpartyChannelTransact LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ"); + *ret_conv = CounterpartyChannelTransactionParameters_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_ChannelTransactionParameters_1write(JNIEnv *env, jclass clz, int64_t obj) { @@ -15099,15 +16977,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelTransactionParameter LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ"); + *ret_conv = ChannelTransactionParameters_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DirectedChannelTransactionParameters_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { @@ -15182,20 +17055,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1f HolderCommitmentTransaction_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKHolderCommitmentTransaction orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1get_1counterparty_1sig(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKHolderCommitmentTransaction this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -15235,6 +17094,20 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1s HolderCommitmentTransaction_set_counterparty_htlc_sigs(&this_ptr_conv, val_constr); } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKHolderCommitmentTransaction orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1write(JNIEnv *env, jclass clz, int64_t obj) { LDKHolderCommitmentTransaction obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -15250,15 +17123,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ"); + *ret_conv = HolderCommitmentTransaction_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1new(JNIEnv *env, jclass clz, int64_t commitment_tx, int8_tArray counterparty_sig, jobjectArray counterparty_htlc_sigs, int8_tArray holder_funding_key, int8_tArray counterparty_funding_key) { @@ -15305,20 +17173,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_BuiltCommitmentTransaction_1fr BuiltCommitmentTransaction_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_BuiltCommitmentTransaction_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKBuiltCommitmentTransaction orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_BuiltCommitmentTransaction_1get_1transaction(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKBuiltCommitmentTransaction this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -15380,6 +17234,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_BuiltCommitmentTransaction_ return ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_BuiltCommitmentTransaction_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKBuiltCommitmentTransaction orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_BuiltCommitmentTransaction_1write(JNIEnv *env, jclass clz, int64_t obj) { LDKBuiltCommitmentTransaction obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -15395,15 +17263,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_BuiltCommitmentTransaction_ LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ"); + *ret_conv = BuiltCommitmentTransaction_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_BuiltCommitmentTransaction_1get_1sighash_1all(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray funding_redeemscript, int64_t channel_value_satoshis) { @@ -15472,15 +17335,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CommitmentTransaction_1read LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKCommitmentTransaction ret_var = CommitmentTransaction_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ"); + *ret_conv = CommitmentTransaction_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CommitmentTransaction_1commitment_1number(JNIEnv *env, jclass clz, int64_t this_arg) { @@ -15607,36 +17465,207 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_TrustedCommitmentTransactio return (long)ret_conv; } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_get_1commitment_1transaction_1number_1obscure_1factor(JNIEnv *env, jclass clz, int8_tArray broadcaster_payment_basepoint, int8_tArray countersignatory_payment_basepoint, jboolean outbound_from_broadcaster) { - LDKPublicKey broadcaster_payment_basepoint_ref; - CHECK((*env)->GetArrayLength(env, broadcaster_payment_basepoint) == 33); - (*env)->GetByteArrayRegion(env, broadcaster_payment_basepoint, 0, 33, broadcaster_payment_basepoint_ref.compressed_form); - LDKPublicKey countersignatory_payment_basepoint_ref; - CHECK((*env)->GetArrayLength(env, countersignatory_payment_basepoint) == 33); - (*env)->GetByteArrayRegion(env, countersignatory_payment_basepoint, 0, 33, countersignatory_payment_basepoint_ref.compressed_form); - int64_t ret_val = get_commitment_transaction_number_obscure_factor(broadcaster_payment_basepoint_ref, countersignatory_payment_basepoint_ref, outbound_from_broadcaster); - return ret_val; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_get_1commitment_1transaction_1number_1obscure_1factor(JNIEnv *env, jclass clz, int8_tArray broadcaster_payment_basepoint, int8_tArray countersignatory_payment_basepoint, jboolean outbound_from_broadcaster) { + LDKPublicKey broadcaster_payment_basepoint_ref; + CHECK((*env)->GetArrayLength(env, broadcaster_payment_basepoint) == 33); + (*env)->GetByteArrayRegion(env, broadcaster_payment_basepoint, 0, 33, broadcaster_payment_basepoint_ref.compressed_form); + LDKPublicKey countersignatory_payment_basepoint_ref; + CHECK((*env)->GetArrayLength(env, countersignatory_payment_basepoint) == 33); + (*env)->GetByteArrayRegion(env, countersignatory_payment_basepoint, 0, 33, countersignatory_payment_basepoint_ref.compressed_form); + int64_t ret_val = get_commitment_transaction_number_obscure_factor(broadcaster_payment_basepoint_ref, countersignatory_payment_basepoint_ref, outbound_from_broadcaster); + return ret_val; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_InitFeatures_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKInitFeatures orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKInitFeatures ret_var = InitFeatures_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeFeatures_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKNodeFeatures orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKNodeFeatures ret_var = NodeFeatures_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelFeatures_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKChannelFeatures orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKChannelFeatures ret_var = ChannelFeatures_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InitFeatures_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKInitFeatures this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + InitFeatures_free(this_ptr_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeFeatures_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKNodeFeatures this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + NodeFeatures_free(this_ptr_conv); +} + +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelFeatures_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKChannelFeatures this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ChannelFeatures_free(this_ptr_conv); +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_InitFeatures_1empty(JNIEnv *env, jclass clz) { + LDKInitFeatures ret_var = InitFeatures_empty(); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_InitFeatures_1known(JNIEnv *env, jclass clz) { + LDKInitFeatures ret_var = InitFeatures_known(); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeFeatures_1empty(JNIEnv *env, jclass clz) { + LDKNodeFeatures ret_var = NodeFeatures_empty(); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeFeatures_1known(JNIEnv *env, jclass clz) { + LDKNodeFeatures ret_var = NodeFeatures_known(); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelFeatures_1empty(JNIEnv *env, jclass clz) { + LDKChannelFeatures ret_var = ChannelFeatures_empty(); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelFeatures_1known(JNIEnv *env, jclass clz) { + LDKChannelFeatures ret_var = ChannelFeatures_known(); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_InitFeatures_1write(JNIEnv *env, jclass clz, int64_t obj) { + LDKInitFeatures obj_conv; + obj_conv.inner = (void*)(obj & (~1)); + obj_conv.is_owned = false; + LDKCVec_u8Z arg_var = InitFeatures_write(&obj_conv); + int8_tArray arg_arr = (*env)->NewByteArray(env, arg_var.datalen); + (*env)->SetByteArrayRegion(env, arg_arr, 0, arg_var.datalen, arg_var.data); + CVec_u8Z_free(arg_var); + return arg_arr; +} + +JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_NodeFeatures_1write(JNIEnv *env, jclass clz, int64_t obj) { + LDKNodeFeatures obj_conv; + obj_conv.inner = (void*)(obj & (~1)); + obj_conv.is_owned = false; + LDKCVec_u8Z arg_var = NodeFeatures_write(&obj_conv); + int8_tArray arg_arr = (*env)->NewByteArray(env, arg_var.datalen); + (*env)->SetByteArrayRegion(env, arg_arr, 0, arg_var.datalen, arg_var.data); + CVec_u8Z_free(arg_var); + return arg_arr; +} + +JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_ChannelFeatures_1write(JNIEnv *env, jclass clz, int64_t obj) { + LDKChannelFeatures obj_conv; + obj_conv.inner = (void*)(obj & (~1)); + obj_conv.is_owned = false; + LDKCVec_u8Z arg_var = ChannelFeatures_write(&obj_conv); + int8_tArray arg_arr = (*env)->NewByteArray(env, arg_var.datalen); + (*env)->SetByteArrayRegion(env, arg_arr, 0, arg_var.datalen, arg_var.data); + CVec_u8Z_free(arg_var); + return arg_arr; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InitFeatures_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKInitFeatures this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - InitFeatures_free(this_ptr_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_InitFeatures_1read(JNIEnv *env, jclass clz, int8_tArray ser) { + LDKu8slice ser_ref; + ser_ref.datalen = (*env)->GetArrayLength(env, ser); + ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); + LDKCResult_InitFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitFeaturesDecodeErrorZ), "LDKCResult_InitFeaturesDecodeErrorZ"); + *ret_conv = InitFeatures_read(ser_ref); + (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeFeatures_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKNodeFeatures this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - NodeFeatures_free(this_ptr_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeFeatures_1read(JNIEnv *env, jclass clz, int8_tArray ser) { + LDKu8slice ser_ref; + ser_ref.datalen = (*env)->GetArrayLength(env, ser); + ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); + LDKCResult_NodeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeFeaturesDecodeErrorZ), "LDKCResult_NodeFeaturesDecodeErrorZ"); + *ret_conv = NodeFeatures_read(ser_ref); + (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); + return (long)ret_conv; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelFeatures_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKChannelFeatures this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ChannelFeatures_free(this_ptr_conv); +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelFeatures_1read(JNIEnv *env, jclass clz, int8_tArray ser) { + LDKu8slice ser_ref; + ser_ref.datalen = (*env)->GetArrayLength(env, ser); + ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); + LDKCResult_ChannelFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ), "LDKCResult_ChannelFeaturesDecodeErrorZ"); + *ret_conv = ChannelFeatures_read(ser_ref); + (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); + return (long)ret_conv; } JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { @@ -15646,20 +17675,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1free(JNIEnv *env, jc RouteHop_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RouteHop_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKRouteHop orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKRouteHop ret_var = RouteHop_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_RouteHop_1get_1pubkey(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKRouteHop this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -15700,7 +17715,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1set_1node_1features( LDKNodeFeatures val_conv; val_conv.inner = (void*)(val & (~1)); val_conv.is_owned = (val & 1) || (val == 0); - // Warning: we need a move here but no clone is available for LDKNodeFeatures + val_conv = NodeFeatures_clone(&val_conv); RouteHop_set_node_features(&this_ptr_conv, val_conv); } @@ -15740,7 +17755,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1set_1channel_1featur LDKChannelFeatures val_conv; val_conv.inner = (void*)(val & (~1)); val_conv.is_owned = (val & 1) || (val == 0); - // Warning: we need a move here but no clone is available for LDKChannelFeatures + val_conv = ChannelFeatures_clone(&val_conv); RouteHop_set_channel_features(&this_ptr_conv, val_conv); } @@ -15781,11 +17796,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RouteHop_1new(JNIEnv *env, LDKNodeFeatures node_features_arg_conv; node_features_arg_conv.inner = (void*)(node_features_arg & (~1)); node_features_arg_conv.is_owned = (node_features_arg & 1) || (node_features_arg == 0); - // Warning: we need a move here but no clone is available for LDKNodeFeatures + node_features_arg_conv = NodeFeatures_clone(&node_features_arg_conv); LDKChannelFeatures channel_features_arg_conv; channel_features_arg_conv.inner = (void*)(channel_features_arg & (~1)); channel_features_arg_conv.is_owned = (channel_features_arg & 1) || (channel_features_arg == 0); - // Warning: we need a move here but no clone is available for LDKChannelFeatures + channel_features_arg_conv = ChannelFeatures_clone(&channel_features_arg_conv); LDKRouteHop ret_var = RouteHop_new(pubkey_arg_ref, node_features_arg_conv, short_channel_id_arg, channel_features_arg_conv, fee_msat_arg, cltv_expiry_delta_arg); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. @@ -15796,18 +17811,11 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RouteHop_1new(JNIEnv *env, return ret_ref; } -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Route_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { - LDKRoute this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - Route_free(this_ptr_conv); -} - -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Route_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKRoute orig_conv; +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RouteHop_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKRouteHop orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKRoute ret_var = Route_clone(&orig_conv); + LDKRouteHop ret_var = RouteHop_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -15817,6 +17825,13 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Route_1clone(JNIEnv *env, j return ret_ref; } +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Route_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { + LDKRoute this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + Route_free(this_ptr_conv); +} + JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Route_1set_1paths(JNIEnv *env, jclass clz, int64_t this_ptr, jobjectArray val) { LDKRoute this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -15887,6 +17902,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Route_1new(JNIEnv *env, jcl return ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_Route_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKRoute orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKRoute ret_var = Route_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_Route_1write(JNIEnv *env, jclass clz, int64_t obj) { LDKRoute obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -15915,20 +17944,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHint_1free(JNIEnv *env, j RouteHint_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RouteHint_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKRouteHint orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKRouteHint ret_var = RouteHint_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_RouteHint_1get_1src_1node_1id(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKRouteHint this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -16036,6 +18051,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RouteHint_1new(JNIEnv *env, return ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RouteHint_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKRouteHint orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKRouteHint ret_var = RouteHint_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_get_1route(JNIEnv *env, jclass clz, int8_tArray our_node_id, int64_t network, int8_tArray target, int64_tArray first_hops, int64_tArray last_hops, int64_t final_value_msat, int32_t final_cltv, int64_t logger) { LDKPublicKey our_node_id_ref; CHECK((*env)->GetArrayLength(env, our_node_id) == 33); @@ -16203,20 +18232,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1free(J DirectionalChannelInfo_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKDirectionalChannelInfo orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int32_t JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1get_1last_1update(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKDirectionalChannelInfo this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -16327,6 +18342,20 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1set_1l DirectionalChannelInfo_set_last_update_message(&this_ptr_conv, val_conv); } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKDirectionalChannelInfo orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1write(JNIEnv *env, jclass clz, int64_t obj) { LDKDirectionalChannelInfo obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -16342,15 +18371,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1rea LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_DirectionalChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DirectionalChannelInfoDecodeErrorZ), "LDKCResult_DirectionalChannelInfoDecodeErrorZ"); + *ret_conv = DirectionalChannelInfo_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { @@ -16381,7 +18405,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1set_1features(JNI LDKChannelFeatures val_conv; val_conv.inner = (void*)(val & (~1)); val_conv.is_owned = (val & 1) || (val == 0); - // Warning: we need a move here but no clone is available for LDKChannelFeatures + val_conv = ChannelFeatures_clone(&val_conv); ChannelInfo_set_features(&this_ptr_conv, val_conv); } @@ -16513,15 +18537,10 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1read(JNIEnv *e LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); ser_ref.data = (*env)->GetByteArrayElements (env, ser, NULL); - LDKChannelInfo ret_var = ChannelInfo_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } + LDKCResult_ChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelInfoDecodeErrorZ), "LDKCResult_ChannelInfoDecodeErrorZ"); + *ret_conv = ChannelInfo_read(ser_ref); (*env)->ReleaseByteArrayElements(env, ser, (int8_t*)ser_ref.data, 0); - return ret_ref; + return (long)ret_conv; } JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingFees_1free(JNIEnv *env, jclass clz, int64_t this_ptr) { @@ -16531,20 +18550,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingFees_1free(JNIEnv *env, RoutingFees_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingFees_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKRoutingFees orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKRoutingFees ret_var = RoutingFees_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int32_t JNICALL Java_org_ldk_impl_bindings_RoutingFees_1get_1base_1msat(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKRoutingFees this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -16586,6 +18591,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingFees_1new(JNIEnv *en return ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingFees_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKRoutingFees orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKRoutingFees ret_var = RoutingFees_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingFees_1read(JNIEnv *env, jclass clz, int8_tArray ser) { LDKu8slice ser_ref; ser_ref.datalen = (*env)->GetArrayLength(env, ser); @@ -16614,20 +18633,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1free(JNI NodeAnnouncementInfo_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKNodeAnnouncementInfo orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKNodeAnnouncementInfo ret_var = NodeAnnouncementInfo_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1get_1features(JNIEnv *env, jclass clz, int64_t this_ptr) { LDKNodeAnnouncementInfo this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -16649,7 +18654,7 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1set_1fea LDKNodeFeatures val_conv; val_conv.inner = (void*)(val & (~1)); val_conv.is_owned = (val & 1) || (val == 0); - // Warning: we need a move here but no clone is available for LDKNodeFeatures + val_conv = NodeFeatures_clone(&val_conv); NodeAnnouncementInfo_set_features(&this_ptr_conv, val_conv); } @@ -16756,7 +18761,7 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1new(J LDKNodeFeatures features_arg_conv; features_arg_conv.inner = (void*)(features_arg & (~1)); features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0); - // Warning: we need a move here but no clone is available for LDKNodeFeatures + features_arg_conv = NodeFeatures_clone(&features_arg_conv); LDKThreeBytes rgb_arg_ref; CHECK((*env)->GetArrayLength(env, rgb_arg) == 3); (*env)->GetByteArrayRegion(env, rgb_arg, 0, 3, rgb_arg_ref.data); @@ -16791,6 +18796,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1new(J return ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKNodeAnnouncementInfo orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKNodeAnnouncementInfo ret_var = NodeAnnouncementInfo_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1write(JNIEnv *env, jclass clz, int64_t obj) { LDKNodeAnnouncementInfo obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -16819,20 +18838,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeInfo_1free(JNIEnv *env, jc NodeInfo_free(this_ptr_conv); } -JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeInfo_1clone(JNIEnv *env, jclass clz, int64_t orig) { - LDKNodeInfo orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKNodeInfo ret_var = NodeInfo_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeInfo_1set_1channels(JNIEnv *env, jclass clz, int64_t this_ptr, int64_tArray val) { LDKNodeInfo this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -16933,6 +18938,20 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeInfo_1new(JNIEnv *env, return ret_ref; } +JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeInfo_1clone(JNIEnv *env, jclass clz, int64_t orig) { + LDKNodeInfo orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKNodeInfo ret_var = NodeInfo_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_NodeInfo_1write(JNIEnv *env, jclass clz, int64_t obj) { LDKNodeInfo obj_conv; obj_conv.inner = (void*)(obj & (~1)); diff --git a/src/main/jni/org_ldk_impl_bindings.h b/src/main/jni/org_ldk_impl_bindings.h index d8aa468f..e8cce821 100644 --- a/src/main/jni/org_ldk_impl_bindings.h +++ b/src/main/jni/org_ldk_impl_bindings.h @@ -121,674 +121,682 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1u8Z_1new /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_u64u64Z_new - * Signature: (JJ)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u64u64Z_1new - (JNIEnv *, jclass, jlong, jlong); - -/* - * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_u64u64Z_get_a - * Signature: (J)J + * Method: LDKCResult_SecretKeyErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u64u64Z_1get_1a +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SecretKeyErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_u64u64Z_get_b - * Signature: (J)J + * Method: LDKCResult_SecretKeyErrorZ_get_ok + * Signature: (J)[B */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u64u64Z_1get_1b +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SecretKeyErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKSpendableOutputDescriptor_ref_from_ptr - * Signature: (J)Lorg/ldk/impl/bindings/LDKSpendableOutputDescriptor; + * Method: LDKCResult_SecretKeyErrorZ_get_err + * Signature: (J)Lorg/ldk/enums/LDKSecp256k1Error; */ -JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKSpendableOutputDescriptor_1ref_1from_1ptr +JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SecretKeyErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCVec_SpendableOutputDescriptorZ_new - * Signature: ([J)J + * Method: LDKCResult_PublicKeyErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1SpendableOutputDescriptorZ_1new - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PublicKeyErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKErrorAction_ref_from_ptr - * Signature: (J)Lorg/ldk/impl/bindings/LDKErrorAction; + * Method: LDKCResult_PublicKeyErrorZ_get_ok + * Signature: (J)[B */ -JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKErrorAction_1ref_1from_1ptr +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PublicKeyErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKHTLCFailChannelUpdate_ref_from_ptr - * Signature: (J)Lorg/ldk/impl/bindings/LDKHTLCFailChannelUpdate; + * Method: LDKCResult_PublicKeyErrorZ_get_err + * Signature: (J)Lorg/ldk/enums/LDKSecp256k1Error; */ -JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKHTLCFailChannelUpdate_1ref_1from_1ptr +JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PublicKeyErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKMessageSendEvent_ref_from_ptr - * Signature: (J)Lorg/ldk/impl/bindings/LDKMessageSendEvent; + * Method: LDKCResult_TxCreationKeysDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKMessageSendEvent_1ref_1from_1ptr +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCVec_MessageSendEventZ_new - * Signature: ([J)J + * Method: LDKCResult_TxCreationKeysDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1MessageSendEventZ_1new - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKEvent_ref_from_ptr - * Signature: (J)Lorg/ldk/impl/bindings/LDKEvent; + * Method: LDKCResult_TxCreationKeysDecodeErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKEvent_1ref_1from_1ptr +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCVec_EventZ_new - * Signature: ([J)J + * Method: LDKCResult_ChannelPublicKeysDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1EventZ_1new - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelPublicKeysDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_usizeTransactionZ_new - * Signature: (J[B)J + * Method: LDKCResult_ChannelPublicKeysDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1usizeTransactionZ_1new - (JNIEnv *, jclass, jlong, jbyteArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelPublicKeysDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_usizeTransactionZ_get_a + * Method: LDKCResult_ChannelPublicKeysDecodeErrorZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1usizeTransactionZ_1get_1a +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelPublicKeysDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_usizeTransactionZ_get_b - * Signature: (J)[B + * Method: LDKCResult_TxCreationKeysErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1usizeTransactionZ_1get_1b +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCVec_C2Tuple_usizeTransactionZZ_new - * Signature: ([J)J + * Method: LDKCResult_TxCreationKeysErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1C2Tuple_1usizeTransactionZZ_1new - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NoneChannelMonitorUpdateErrZ_result_ok - * Signature: (J)Z + * Method: LDKCResult_TxCreationKeysErrorZ_get_err + * Signature: (J)Lorg/ldk/enums/LDKSecp256k1Error; */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneChannelMonitorUpdateErrZ_1result_1ok +JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NoneChannelMonitorUpdateErrZ_get_ok - * Signature: (J)V + * Method: LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneChannelMonitorUpdateErrZ_1get_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HTLCOutputInCommitmentDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NoneChannelMonitorUpdateErrZ_get_err - * Signature: (J)Lorg/ldk/enums/LDKChannelMonitorUpdateErr; + * Method: LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneChannelMonitorUpdateErrZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HTLCOutputInCommitmentDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCVec_MonitorEventZ_new - * Signature: ([J)J + * Method: LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1MonitorEventZ_1new - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HTLCOutputInCommitmentDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ChannelMonitorUpdateDecodeErrorZ_result_ok + * Method: LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelMonitorUpdateDecodeErrorZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CounterpartyChannelTransactionParametersDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_ok + * Method: LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelMonitorUpdateDecodeErrorZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CounterpartyChannelTransactionParametersDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_err + * Method: LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelMonitorUpdateDecodeErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CounterpartyChannelTransactionParametersDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NoneMonitorUpdateErrorZ_result_ok + * Method: LDKCResult_ChannelTransactionParametersDecodeErrorZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneMonitorUpdateErrorZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelTransactionParametersDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NoneMonitorUpdateErrorZ_get_ok - * Signature: (J)V + * Method: LDKCResult_ChannelTransactionParametersDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneMonitorUpdateErrorZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelTransactionParametersDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NoneMonitorUpdateErrorZ_get_err + * Method: LDKCResult_ChannelTransactionParametersDecodeErrorZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneMonitorUpdateErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelTransactionParametersDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_OutPointScriptZ_new - * Signature: (J[B)J + * Method: LDKCResult_HolderCommitmentTransactionDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1OutPointScriptZ_1new - (JNIEnv *, jclass, jlong, jbyteArray); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HolderCommitmentTransactionDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_OutPointScriptZ_get_a + * Method: LDKCResult_HolderCommitmentTransactionDecodeErrorZ_get_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1OutPointScriptZ_1get_1a +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HolderCommitmentTransactionDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_OutPointScriptZ_get_b - * Signature: (J)[B + * Method: LDKCResult_HolderCommitmentTransactionDecodeErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1OutPointScriptZ_1get_1b +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HolderCommitmentTransactionDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_u32TxOutZ_new - * Signature: (IJ)J + * Method: LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u32TxOutZ_1new - (JNIEnv *, jclass, jint, jlong); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1BuiltCommitmentTransactionDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_u32TxOutZ_get_a - * Signature: (J)I + * Method: LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u32TxOutZ_1get_1a +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1BuiltCommitmentTransactionDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_u32TxOutZ_get_b + * Method: LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u32TxOutZ_1get_1b +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1BuiltCommitmentTransactionDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCVec_C2Tuple_u32TxOutZZ_new - * Signature: ([J)J + * Method: LDKCResult_CommitmentTransactionDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1C2Tuple_1u32TxOutZZ_1new - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CommitmentTransactionDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new - * Signature: ([B[J)J + * Method: LDKCResult_CommitmentTransactionDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZ_1new - (JNIEnv *, jclass, jbyteArray, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CommitmentTransactionDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a - * Signature: (J)[B + * Method: LDKCResult_CommitmentTransactionDecodeErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZ_1get_1a +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CommitmentTransactionDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b - * Signature: (J)[J + * Method: LDKCResult_TrustedCommitmentTransactionNoneZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlongArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZ_1get_1b +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TrustedCommitmentTransactionNoneZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_new - * Signature: ([J)J + * Method: LDKCResult_TrustedCommitmentTransactionNoneZ_get_ok + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1C2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZZ_1new - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TrustedCommitmentTransactionNoneZ_1get_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_SignatureCVec_SignatureZZ_new - * Signature: ([B[[B)J + * Method: LDKCResult_TrustedCommitmentTransactionNoneZ_get_err + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1SignatureCVec_1SignatureZZ_1new - (JNIEnv *, jclass, jbyteArray, jobjectArray); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TrustedCommitmentTransactionNoneZ_1get_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_SignatureCVec_SignatureZZ_get_a - * Signature: (J)[B + * Method: LDKCResult_CVec_SignatureZNoneZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1SignatureCVec_1SignatureZZ_1get_1a +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1SignatureZNoneZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_SignatureCVec_SignatureZZ_get_b + * Method: LDKCResult_CVec_SignatureZNoneZ_get_ok * Signature: (J)[[B */ -JNIEXPORT jobjectArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1SignatureCVec_1SignatureZZ_1get_1b +JNIEXPORT jobjectArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1SignatureZNoneZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_result_ok - * Signature: (J)Z + * Method: LDKCResult_CVec_SignatureZNoneZ_get_err + * Signature: (J)V */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1SignatureCVec_1SignatureZZNoneZ_1result_1ok +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1SignatureZNoneZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok - * Signature: (J)J + * Method: LDKCResult_CVec_u8ZPeerHandleErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1SignatureCVec_1SignatureZZNoneZ_1get_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1u8ZPeerHandleErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err - * Signature: (J)V + * Method: LDKCResult_CVec_u8ZPeerHandleErrorZ_get_ok + * Signature: (J)[B */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1SignatureCVec_1SignatureZZNoneZ_1get_1err +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1u8ZPeerHandleErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_SignatureNoneZ_result_ok - * Signature: (J)Z + * Method: LDKCResult_CVec_u8ZPeerHandleErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SignatureNoneZ_1result_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1u8ZPeerHandleErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_SignatureNoneZ_get_ok - * Signature: (J)[B + * Method: LDKCResult_NonePeerHandleErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SignatureNoneZ_1get_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePeerHandleErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_SignatureNoneZ_get_err + * Method: LDKCResult_NonePeerHandleErrorZ_get_ok * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SignatureNoneZ_1get_1err +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePeerHandleErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKChannelKeys_new - * Signature: (Lorg/ldk/impl/bindings/LDKChannelKeys;J)J + * Method: LDKCResult_NonePeerHandleErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKChannelKeys_1new - (JNIEnv *, jclass, jobject, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePeerHandleErrorZ_1get_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelKeys_get_per_commitment_point - * Signature: (JJ)[B + * Method: LDKCResult_boolPeerHandleErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1get_1per_1commitment_1point - (JNIEnv *, jclass, jlong, jlong); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolPeerHandleErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelKeys_release_commitment_secret - * Signature: (JJ)[B + * Method: LDKCResult_boolPeerHandleErrorZ_get_ok + * Signature: (J)Z */ -JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1release_1commitment_1secret - (JNIEnv *, jclass, jlong, jlong); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolPeerHandleErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelKeys_key_derivation_params + * Method: LDKCResult_boolPeerHandleErrorZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1key_1derivation_1params +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolPeerHandleErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelKeys_sign_counterparty_commitment - * Signature: (JJ)J + * Method: LDKCResult_InitFeaturesDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1sign_1counterparty_1commitment - (JNIEnv *, jclass, jlong, jlong); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InitFeaturesDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelKeys_sign_holder_commitment_and_htlcs - * Signature: (JJ)J + * Method: LDKCResult_InitFeaturesDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1sign_1holder_1commitment_1and_1htlcs - (JNIEnv *, jclass, jlong, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InitFeaturesDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelKeys_sign_justice_transaction - * Signature: (J[BJJ[BJ)J + * Method: LDKCResult_InitFeaturesDecodeErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1sign_1justice_1transaction - (JNIEnv *, jclass, jlong, jbyteArray, jlong, jlong, jbyteArray, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InitFeaturesDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelKeys_sign_counterparty_htlc_transaction - * Signature: (J[BJJ[BJ)J + * Method: LDKCResult_NodeFeaturesDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1sign_1counterparty_1htlc_1transaction - (JNIEnv *, jclass, jlong, jbyteArray, jlong, jlong, jbyteArray, jlong); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeFeaturesDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelKeys_sign_closing_transaction - * Signature: (J[B)J + * Method: LDKCResult_NodeFeaturesDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1sign_1closing_1transaction - (JNIEnv *, jclass, jlong, jbyteArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeFeaturesDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelKeys_sign_channel_announcement - * Signature: (JJ)J + * Method: LDKCResult_NodeFeaturesDecodeErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1sign_1channel_1announcement - (JNIEnv *, jclass, jlong, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeFeaturesDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelKeys_ready_channel - * Signature: (JJ)V + * Method: LDKCResult_ChannelFeaturesDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1ready_1channel - (JNIEnv *, jclass, jlong, jlong); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelFeaturesDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelKeys_write - * Signature: (J)[B + * Method: LDKCResult_ChannelFeaturesDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1write +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelFeaturesDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelKeys_get_pubkeys + * Method: LDKCResult_ChannelFeaturesDecodeErrorZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1get_1pubkeys +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelFeaturesDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_BlockHashChannelMonitorZ_new - * Signature: ([BJ)J + * Method: LDKCResult_ChannelConfigDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelMonitorZ_1new - (JNIEnv *, jclass, jbyteArray, jlong); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelConfigDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_BlockHashChannelMonitorZ_get_a - * Signature: (J)[B + * Method: LDKCResult_ChannelConfigDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelMonitorZ_1get_1a +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelConfigDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_BlockHashChannelMonitorZ_get_b + * Method: LDKCResult_ChannelConfigDecodeErrorZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelMonitorZ_1get_1b +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelConfigDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_result_ok + * Method: LDKCResult_boolLightningErrorZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolLightningErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok - * Signature: (J)J + * Method: LDKCResult_boolLightningErrorZ_get_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1get_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolLightningErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err + * Method: LDKCResult_boolLightningErrorZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolLightningErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_SpendableOutputDescriptorDecodeErrorZ_result_ok - * Signature: (J)Z + * Method: LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new + * Signature: (JJJ)J */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SpendableOutputDescriptorDecodeErrorZ_1result_1ok - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1new + (JNIEnv *, jclass, jlong, jlong, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_ok + * Method: LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SpendableOutputDescriptorDecodeErrorZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1get_1a (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_err + * Method: LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SpendableOutputDescriptorDecodeErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1get_1b (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ChanKeySignerDecodeErrorZ_result_ok - * Signature: (J)Z + * Method: LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c + * Signature: (J)J */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChanKeySignerDecodeErrorZ_1result_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1get_1c (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ChanKeySignerDecodeErrorZ_get_ok - * Signature: (J)J + * Method: LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_new + * Signature: ([J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChanKeySignerDecodeErrorZ_1get_1ok - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZZ_1new + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ChanKeySignerDecodeErrorZ_get_err - * Signature: (J)J + * Method: LDKCVec_NodeAnnouncementZ_new + * Signature: ([J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChanKeySignerDecodeErrorZ_1get_1err - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1NodeAnnouncementZ_1new + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_InMemoryChannelKeysDecodeErrorZ_result_ok + * Method: LDKCResult_NoneLightningErrorZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InMemoryChannelKeysDecodeErrorZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneLightningErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_InMemoryChannelKeysDecodeErrorZ_get_ok - * Signature: (J)J + * Method: LDKCResult_NoneLightningErrorZ_get_ok + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InMemoryChannelKeysDecodeErrorZ_1get_1ok +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneLightningErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_InMemoryChannelKeysDecodeErrorZ_get_err + * Method: LDKCResult_NoneLightningErrorZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InMemoryChannelKeysDecodeErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneLightningErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_TxOutAccessErrorZ_result_ok - * Signature: (J)Z + * Method: LDKErrorAction_ref_from_ptr + * Signature: (J)Lorg/ldk/impl/bindings/LDKErrorAction; */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxOutAccessErrorZ_1result_1ok +JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKErrorAction_1ref_1from_1ptr (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_TxOutAccessErrorZ_get_ok - * Signature: (J)J + * Method: LDKHTLCFailChannelUpdate_ref_from_ptr + * Signature: (J)Lorg/ldk/impl/bindings/LDKHTLCFailChannelUpdate; */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxOutAccessErrorZ_1get_1ok +JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKHTLCFailChannelUpdate_1ref_1from_1ptr (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_TxOutAccessErrorZ_get_err - * Signature: (J)Lorg/ldk/enums/LDKAccessError; + * Method: LDKMessageSendEvent_ref_from_ptr + * Signature: (J)Lorg/ldk/impl/bindings/LDKMessageSendEvent; */ -JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxOutAccessErrorZ_1get_1err +JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKMessageSendEvent_1ref_1from_1ptr (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKAPIError_ref_from_ptr - * Signature: (J)Lorg/ldk/impl/bindings/LDKAPIError; + * Method: LDKCVec_MessageSendEventZ_new + * Signature: ([J)J */ -JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKAPIError_1ref_1from_1ptr - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1MessageSendEventZ_1new + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NoneAPIErrorZ_result_ok + * Method: LDKCResult_DirectionalChannelInfoDecodeErrorZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneAPIErrorZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1DirectionalChannelInfoDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NoneAPIErrorZ_get_ok - * Signature: (J)V + * Method: LDKCResult_DirectionalChannelInfoDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneAPIErrorZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1DirectionalChannelInfoDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NoneAPIErrorZ_get_err + * Method: LDKCResult_DirectionalChannelInfoDecodeErrorZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneAPIErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1DirectionalChannelInfoDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCVec_ChannelDetailsZ_new - * Signature: ([J)J + * Method: LDKCResult_ChannelInfoDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1ChannelDetailsZ_1new - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelInfoDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NonePaymentSendFailureZ_result_ok + * Method: LDKCResult_ChannelInfoDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelInfoDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ChannelInfoDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelInfoDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_RoutingFeesDecodeErrorZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePaymentSendFailureZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RoutingFeesDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NonePaymentSendFailureZ_get_ok - * Signature: (J)V + * Method: LDKCResult_RoutingFeesDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePaymentSendFailureZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RoutingFeesDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NonePaymentSendFailureZ_get_err + * Method: LDKCResult_RoutingFeesDecodeErrorZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePaymentSendFailureZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RoutingFeesDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* @@ -809,874 +817,954 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1NetAddressZ_1new /* * Class: org_ldk_impl_bindings - * Method: LDKCVec_ChannelMonitorZ_new - * Signature: ([J)J + * Method: LDKCResult_NodeAnnouncementInfoDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1ChannelMonitorZ_1new - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementInfoDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKWatch_new - * Signature: (Lorg/ldk/impl/bindings/LDKWatch;)J + * Method: LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKWatch_1new - (JNIEnv *, jclass, jobject); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementInfoDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: Watch_watch_channel - * Signature: (JJJ)J + * Method: LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Watch_1watch_1channel - (JNIEnv *, jclass, jlong, jlong, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementInfoDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: Watch_update_channel - * Signature: (JJJ)J + * Method: LDKCVec_u64Z_new + * Signature: ([J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Watch_1update_1channel - (JNIEnv *, jclass, jlong, jlong, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1u64Z_1new + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: Watch_release_pending_monitor_events - * Signature: (J)[J + * Method: LDKCResult_NodeInfoDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlongArray JNICALL Java_org_ldk_impl_bindings_Watch_1release_1pending_1monitor_1events +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeInfoDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKBroadcasterInterface_new - * Signature: (Lorg/ldk/impl/bindings/LDKBroadcasterInterface;)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKBroadcasterInterface_1new - (JNIEnv *, jclass, jobject); - -/* - * Class: org_ldk_impl_bindings - * Method: BroadcasterInterface_broadcast_transaction - * Signature: (J[B)V + * Method: LDKCResult_NodeInfoDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_BroadcasterInterface_1broadcast_1transaction - (JNIEnv *, jclass, jlong, jbyteArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeInfoDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKKeysInterface_new - * Signature: (Lorg/ldk/impl/bindings/LDKKeysInterface;)J + * Method: LDKCResult_NodeInfoDecodeErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKKeysInterface_1new - (JNIEnv *, jclass, jobject); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeInfoDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: KeysInterface_get_node_secret - * Signature: (J)[B + * Method: LDKCResult_NetworkGraphDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_KeysInterface_1get_1node_1secret +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetworkGraphDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: KeysInterface_get_destination_script - * Signature: (J)[B + * Method: LDKCResult_NetworkGraphDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_KeysInterface_1get_1destination_1script +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetworkGraphDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: KeysInterface_get_shutdown_pubkey - * Signature: (J)[B + * Method: LDKCResult_NetworkGraphDecodeErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_KeysInterface_1get_1shutdown_1pubkey +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetworkGraphDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: KeysInterface_get_channel_keys - * Signature: (JZJ)J + * Method: LDKC2Tuple_usizeTransactionZ_new + * Signature: (J[B)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_KeysInterface_1get_1channel_1keys - (JNIEnv *, jclass, jlong, jboolean, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1usizeTransactionZ_1new + (JNIEnv *, jclass, jlong, jbyteArray); /* * Class: org_ldk_impl_bindings - * Method: KeysInterface_get_secure_random_bytes + * Method: LDKC2Tuple_usizeTransactionZ_get_a + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1usizeTransactionZ_1get_1a + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKC2Tuple_usizeTransactionZ_get_b * Signature: (J)[B */ -JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_KeysInterface_1get_1secure_1random_1bytes +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1usizeTransactionZ_1get_1b (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: KeysInterface_read_chan_signer - * Signature: (J[B)J + * Method: LDKCVec_C2Tuple_usizeTransactionZZ_new + * Signature: ([J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_KeysInterface_1read_1chan_1signer - (JNIEnv *, jclass, jlong, jbyteArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1C2Tuple_1usizeTransactionZZ_1new + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: LDKFeeEstimator_new - * Signature: (Lorg/ldk/impl/bindings/LDKFeeEstimator;)J + * Method: LDKCResult_NoneChannelMonitorUpdateErrZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKFeeEstimator_1new - (JNIEnv *, jclass, jobject); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneChannelMonitorUpdateErrZ_1result_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: FeeEstimator_get_est_sat_per_1000_weight - * Signature: (JLorg/ldk/enums/LDKConfirmationTarget;)I + * Method: LDKCResult_NoneChannelMonitorUpdateErrZ_get_ok + * Signature: (J)V */ -JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_FeeEstimator_1get_1est_1sat_1per_11000_1weight - (JNIEnv *, jclass, jlong, jobject); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneChannelMonitorUpdateErrZ_1get_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKLogger_new - * Signature: (Lorg/ldk/impl/bindings/LDKLogger;)J + * Method: LDKCResult_NoneChannelMonitorUpdateErrZ_get_err + * Signature: (J)Lorg/ldk/enums/LDKChannelMonitorUpdateErr; */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKLogger_1new - (JNIEnv *, jclass, jobject); +JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneChannelMonitorUpdateErrZ_1get_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_BlockHashChannelManagerZ_new - * Signature: ([BJ)J + * Method: LDKCVec_MonitorEventZ_new + * Signature: ([J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelManagerZ_1new - (JNIEnv *, jclass, jbyteArray, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1MonitorEventZ_1new + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_BlockHashChannelManagerZ_get_a - * Signature: (J)[B + * Method: LDKC2Tuple_u64u64Z_new + * Signature: (JJ)J */ -JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelManagerZ_1get_1a - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u64u64Z_1new + (JNIEnv *, jclass, jlong, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC2Tuple_BlockHashChannelManagerZ_get_b + * Method: LDKC2Tuple_u64u64Z_get_a * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelManagerZ_1get_1b +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u64u64Z_1get_1a (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_result_ok - * Signature: (J)Z + * Method: LDKC2Tuple_u64u64Z_get_b + * Signature: (J)J */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1result_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u64u64Z_1get_1b (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok - * Signature: (J)J + * Method: LDKSpendableOutputDescriptor_ref_from_ptr + * Signature: (J)Lorg/ldk/impl/bindings/LDKSpendableOutputDescriptor; */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1get_1ok +JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKSpendableOutputDescriptor_1ref_1from_1ptr (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err - * Signature: (J)J + * Method: LDKCVec_SpendableOutputDescriptorZ_new + * Signature: ([J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1SpendableOutputDescriptorZ_1new + (JNIEnv *, jclass, jlongArray); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKEvent_ref_from_ptr + * Signature: (J)Lorg/ldk/impl/bindings/LDKEvent; + */ +JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKEvent_1ref_1from_1ptr (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NetAddressu8Z_result_ok + * Method: LDKCVec_EventZ_new + * Signature: ([J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1EventZ_1new + (JNIEnv *, jclass, jlongArray); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_OutPointDecodeErrorZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetAddressu8Z_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1OutPointDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NetAddressu8Z_get_ok + * Method: LDKCResult_OutPointDecodeErrorZ_get_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetAddressu8Z_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1OutPointDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NetAddressu8Z_get_err - * Signature: (J)B + * Method: LDKCResult_OutPointDecodeErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jbyte JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetAddressu8Z_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1OutPointDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_CResult_NetAddressu8ZDecodeErrorZ_result_ok + * Method: LDKCResult_ChannelMonitorUpdateDecodeErrorZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CResult_1NetAddressu8ZDecodeErrorZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelMonitorUpdateDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_CResult_NetAddressu8ZDecodeErrorZ_get_ok + * Method: LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CResult_1NetAddressu8ZDecodeErrorZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelMonitorUpdateDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_CResult_NetAddressu8ZDecodeErrorZ_get_err + * Method: LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CResult_1NetAddressu8ZDecodeErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelMonitorUpdateDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCVec_u64Z_new - * Signature: ([J)J + * Method: LDKCResult_HTLCUpdateDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1u64Z_1new - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HTLCUpdateDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCVec_UpdateAddHTLCZ_new - * Signature: ([J)J + * Method: LDKCResult_HTLCUpdateDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1UpdateAddHTLCZ_1new - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HTLCUpdateDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCVec_UpdateFulfillHTLCZ_new - * Signature: ([J)J + * Method: LDKCResult_HTLCUpdateDecodeErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1UpdateFulfillHTLCZ_1new - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1HTLCUpdateDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCVec_UpdateFailHTLCZ_new - * Signature: ([J)J + * Method: LDKCResult_NoneMonitorUpdateErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1UpdateFailHTLCZ_1new - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneMonitorUpdateErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCVec_UpdateFailMalformedHTLCZ_new - * Signature: ([J)J + * Method: LDKCResult_NoneMonitorUpdateErrorZ_get_ok + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1UpdateFailMalformedHTLCZ_1new - (JNIEnv *, jclass, jlongArray); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneMonitorUpdateErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_boolLightningErrorZ_result_ok - * Signature: (J)Z + * Method: LDKCResult_NoneMonitorUpdateErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolLightningErrorZ_1result_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneMonitorUpdateErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_boolLightningErrorZ_get_ok - * Signature: (J)Z + * Method: LDKC2Tuple_OutPointScriptZ_new + * Signature: (J[B)J */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolLightningErrorZ_1get_1ok - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1OutPointScriptZ_1new + (JNIEnv *, jclass, jlong, jbyteArray); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_boolLightningErrorZ_get_err + * Method: LDKC2Tuple_OutPointScriptZ_get_a * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolLightningErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1OutPointScriptZ_1get_1a (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new - * Signature: (JJJ)J + * Method: LDKC2Tuple_OutPointScriptZ_get_b + * Signature: (J)[B */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1new - (JNIEnv *, jclass, jlong, jlong, jlong); +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1OutPointScriptZ_1get_1b + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a - * Signature: (J)J + * Method: LDKC2Tuple_u32TxOutZ_new + * Signature: (IJ)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1get_1a - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u32TxOutZ_1new + (JNIEnv *, jclass, jint, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b - * Signature: (J)J + * Method: LDKC2Tuple_u32TxOutZ_get_a + * Signature: (J)I */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1get_1b +JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u32TxOutZ_1get_1a (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c + * Method: LDKC2Tuple_u32TxOutZ_get_b * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1get_1c +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1u32TxOutZ_1get_1b (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_new + * Method: LDKCVec_C2Tuple_u32TxOutZZ_new * Signature: ([J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZZ_1new +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1C2Tuple_1u32TxOutZZ_1new (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: LDKCVec_NodeAnnouncementZ_new - * Signature: ([J)J + * Method: LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new + * Signature: ([B[J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1NodeAnnouncementZ_1new - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZ_1new + (JNIEnv *, jclass, jbyteArray, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NoneLightningErrorZ_result_ok - * Signature: (J)Z + * Method: LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a + * Signature: (J)[B */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneLightningErrorZ_1result_1ok +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZ_1get_1a (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NoneLightningErrorZ_get_ok - * Signature: (J)V + * Method: LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b + * Signature: (J)[J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneLightningErrorZ_1get_1ok +JNIEXPORT jlongArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZ_1get_1b (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NoneLightningErrorZ_get_err - * Signature: (J)J + * Method: LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_new + * Signature: ([J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneLightningErrorZ_1get_1err - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1C2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZZ_1new + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ChannelReestablishDecodeErrorZ_result_ok - * Signature: (J)Z + * Method: LDKC2Tuple_SignatureCVec_SignatureZZ_new + * Signature: ([B[[B)J */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelReestablishDecodeErrorZ_1result_1ok - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1SignatureCVec_1SignatureZZ_1new + (JNIEnv *, jclass, jbyteArray, jobjectArray); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ChannelReestablishDecodeErrorZ_get_ok - * Signature: (J)J + * Method: LDKC2Tuple_SignatureCVec_SignatureZZ_get_a + * Signature: (J)[B */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelReestablishDecodeErrorZ_1get_1ok +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1SignatureCVec_1SignatureZZ_1get_1a (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ChannelReestablishDecodeErrorZ_get_err - * Signature: (J)J + * Method: LDKC2Tuple_SignatureCVec_SignatureZZ_get_b + * Signature: (J)[[B */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelReestablishDecodeErrorZ_1get_1err +JNIEXPORT jobjectArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1SignatureCVec_1SignatureZZ_1get_1b (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_InitDecodeErrorZ_result_ok + * Method: LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InitDecodeErrorZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1SignatureCVec_1SignatureZZNoneZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_InitDecodeErrorZ_get_ok + * Method: LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InitDecodeErrorZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1SignatureCVec_1SignatureZZNoneZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_InitDecodeErrorZ_get_err - * Signature: (J)J + * Method: LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InitDecodeErrorZ_1get_1err +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1SignatureCVec_1SignatureZZNoneZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_PingDecodeErrorZ_result_ok + * Method: LDKCResult_SignatureNoneZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PingDecodeErrorZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SignatureNoneZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_PingDecodeErrorZ_get_ok - * Signature: (J)J + * Method: LDKCResult_SignatureNoneZ_get_ok + * Signature: (J)[B */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PingDecodeErrorZ_1get_1ok +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SignatureNoneZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_PingDecodeErrorZ_get_err - * Signature: (J)J + * Method: LDKCResult_SignatureNoneZ_get_err + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PingDecodeErrorZ_1get_1err +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SignatureNoneZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_PongDecodeErrorZ_result_ok - * Signature: (J)Z + * Method: LDKChannelKeys_new + * Signature: (Lorg/ldk/impl/bindings/LDKChannelKeys;J)J */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PongDecodeErrorZ_1result_1ok - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKChannelKeys_1new + (JNIEnv *, jclass, jobject, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_PongDecodeErrorZ_get_ok - * Signature: (J)J + * Method: ChannelKeys_get_per_commitment_point + * Signature: (JJ)[B */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PongDecodeErrorZ_1get_1ok - (JNIEnv *, jclass, jlong); +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1get_1per_1commitment_1point + (JNIEnv *, jclass, jlong, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_PongDecodeErrorZ_get_err + * Method: ChannelKeys_release_commitment_secret + * Signature: (JJ)[B + */ +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1release_1commitment_1secret + (JNIEnv *, jclass, jlong, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelKeys_key_derivation_params * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PongDecodeErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1key_1derivation_1params (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_result_ok - * Signature: (J)Z + * Method: ChannelKeys_sign_counterparty_commitment + * Signature: (JJ)J */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelAnnouncementDecodeErrorZ_1result_1ok - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1sign_1counterparty_1commitment + (JNIEnv *, jclass, jlong, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok - * Signature: (J)J + * Method: ChannelKeys_sign_holder_commitment_and_htlcs + * Signature: (JJ)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelAnnouncementDecodeErrorZ_1get_1ok - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1sign_1holder_1commitment_1and_1htlcs + (JNIEnv *, jclass, jlong, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err - * Signature: (J)J + * Method: ChannelKeys_sign_justice_transaction + * Signature: (J[BJJ[BJ)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelAnnouncementDecodeErrorZ_1get_1err - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1sign_1justice_1transaction + (JNIEnv *, jclass, jlong, jbyteArray, jlong, jlong, jbyteArray, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_UnsignedChannelUpdateDecodeErrorZ_result_ok - * Signature: (J)Z + * Method: ChannelKeys_sign_counterparty_htlc_transaction + * Signature: (J[BJJ[BJ)J */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelUpdateDecodeErrorZ_1result_1ok - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1sign_1counterparty_1htlc_1transaction + (JNIEnv *, jclass, jlong, jbyteArray, jlong, jlong, jbyteArray, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_UnsignedChannelUpdateDecodeErrorZ_get_ok - * Signature: (J)J + * Method: ChannelKeys_sign_closing_transaction + * Signature: (J[B)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelUpdateDecodeErrorZ_1get_1ok - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1sign_1closing_1transaction + (JNIEnv *, jclass, jlong, jbyteArray); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_UnsignedChannelUpdateDecodeErrorZ_get_err - * Signature: (J)J + * Method: ChannelKeys_sign_channel_announcement + * Signature: (JJ)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelUpdateDecodeErrorZ_1get_1err - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1sign_1channel_1announcement + (JNIEnv *, jclass, jlong, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ErrorMessageDecodeErrorZ_result_ok - * Signature: (J)Z + * Method: ChannelKeys_ready_channel + * Signature: (JJ)V */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ErrorMessageDecodeErrorZ_1result_1ok - (JNIEnv *, jclass, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1ready_1channel + (JNIEnv *, jclass, jlong, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ErrorMessageDecodeErrorZ_get_ok - * Signature: (J)J + * Method: ChannelKeys_write + * Signature: (J)[B */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ErrorMessageDecodeErrorZ_1get_1ok +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1write (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ErrorMessageDecodeErrorZ_get_err + * Method: ChannelKeys_get_pubkeys * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ErrorMessageDecodeErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelKeys_1get_1pubkeys (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_result_ok - * Signature: (J)Z + * Method: LDKC2Tuple_BlockHashChannelMonitorZ_new + * Signature: ([BJ)J */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedNodeAnnouncementDecodeErrorZ_1result_1ok - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelMonitorZ_1new + (JNIEnv *, jclass, jbyteArray, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok - * Signature: (J)J + * Method: LDKC2Tuple_BlockHashChannelMonitorZ_get_a + * Signature: (J)[B */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedNodeAnnouncementDecodeErrorZ_1get_1ok +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelMonitorZ_1get_1a (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err + * Method: LDKC2Tuple_BlockHashChannelMonitorZ_get_b * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedNodeAnnouncementDecodeErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelMonitorZ_1get_1b (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_QueryShortChannelIdsDecodeErrorZ_result_ok + * Method: LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryShortChannelIdsDecodeErrorZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_ok + * Method: LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryShortChannelIdsDecodeErrorZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_err + * Method: LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryShortChannelIdsDecodeErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_result_ok + * Method: LDKCResult_TxOutAccessErrorZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyShortChannelIdsEndDecodeErrorZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxOutAccessErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok + * Method: LDKCResult_TxOutAccessErrorZ_get_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyShortChannelIdsEndDecodeErrorZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxOutAccessErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err - * Signature: (J)J + * Method: LDKCResult_TxOutAccessErrorZ_get_err + * Signature: (J)Lorg/ldk/enums/LDKAccessError; */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyShortChannelIdsEndDecodeErrorZ_1get_1err +JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxOutAccessErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_QueryChannelRangeDecodeErrorZ_result_ok - * Signature: (J)Z + * Method: LDKAPIError_ref_from_ptr + * Signature: (J)Lorg/ldk/impl/bindings/LDKAPIError; */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryChannelRangeDecodeErrorZ_1result_1ok +JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKAPIError_1ref_1from_1ptr (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_QueryChannelRangeDecodeErrorZ_get_ok - * Signature: (J)J + * Method: LDKCResult_NoneAPIErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryChannelRangeDecodeErrorZ_1get_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneAPIErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_QueryChannelRangeDecodeErrorZ_get_err - * Signature: (J)J + * Method: LDKCResult_NoneAPIErrorZ_get_ok + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryChannelRangeDecodeErrorZ_1get_1err +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneAPIErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ReplyChannelRangeDecodeErrorZ_result_ok - * Signature: (J)Z + * Method: LDKCResult_NoneAPIErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyChannelRangeDecodeErrorZ_1result_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NoneAPIErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ReplyChannelRangeDecodeErrorZ_get_ok - * Signature: (J)J + * Method: LDKCVec_ChannelDetailsZ_new + * Signature: ([J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyChannelRangeDecodeErrorZ_1get_1ok - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1ChannelDetailsZ_1new + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_ReplyChannelRangeDecodeErrorZ_get_err - * Signature: (J)J + * Method: LDKCResult_NonePaymentSendFailureZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyChannelRangeDecodeErrorZ_1get_1err +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePaymentSendFailureZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_GossipTimestampFilterDecodeErrorZ_result_ok - * Signature: (J)Z + * Method: LDKCResult_NonePaymentSendFailureZ_get_ok + * Signature: (J)V */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1GossipTimestampFilterDecodeErrorZ_1result_1ok +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePaymentSendFailureZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_GossipTimestampFilterDecodeErrorZ_get_ok + * Method: LDKCResult_NonePaymentSendFailureZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1GossipTimestampFilterDecodeErrorZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePaymentSendFailureZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_GossipTimestampFilterDecodeErrorZ_get_err - * Signature: (J)J + * Method: LDKCVec_ChannelMonitorZ_new + * Signature: ([J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1GossipTimestampFilterDecodeErrorZ_1get_1err - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1ChannelMonitorZ_1new + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_CVec_u8ZPeerHandleErrorZ_result_ok - * Signature: (J)Z + * Method: LDKWatch_new + * Signature: (Lorg/ldk/impl/bindings/LDKWatch;)J */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1u8ZPeerHandleErrorZ_1result_1ok - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKWatch_1new + (JNIEnv *, jclass, jobject); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_CVec_u8ZPeerHandleErrorZ_get_ok - * Signature: (J)[B + * Method: Watch_watch_channel + * Signature: (JJJ)J */ -JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1u8ZPeerHandleErrorZ_1get_1ok - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Watch_1watch_1channel + (JNIEnv *, jclass, jlong, jlong, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_CVec_u8ZPeerHandleErrorZ_get_err - * Signature: (J)J + * Method: Watch_update_channel + * Signature: (JJJ)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1u8ZPeerHandleErrorZ_1get_1err - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Watch_1update_1channel + (JNIEnv *, jclass, jlong, jlong, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NonePeerHandleErrorZ_result_ok - * Signature: (J)Z + * Method: Watch_release_pending_monitor_events + * Signature: (J)[J */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePeerHandleErrorZ_1result_1ok +JNIEXPORT jlongArray JNICALL Java_org_ldk_impl_bindings_Watch_1release_1pending_1monitor_1events (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NonePeerHandleErrorZ_get_ok - * Signature: (J)V + * Method: LDKBroadcasterInterface_new + * Signature: (Lorg/ldk/impl/bindings/LDKBroadcasterInterface;)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePeerHandleErrorZ_1get_1ok - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKBroadcasterInterface_1new + (JNIEnv *, jclass, jobject); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NonePeerHandleErrorZ_get_err - * Signature: (J)J + * Method: BroadcasterInterface_broadcast_transaction + * Signature: (J[B)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePeerHandleErrorZ_1get_1err - (JNIEnv *, jclass, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_BroadcasterInterface_1broadcast_1transaction + (JNIEnv *, jclass, jlong, jbyteArray); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_boolPeerHandleErrorZ_result_ok + * Method: LDKCResult_ChannelKeysDecodeErrorZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolPeerHandleErrorZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelKeysDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_boolPeerHandleErrorZ_get_ok - * Signature: (J)Z + * Method: LDKCResult_ChannelKeysDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolPeerHandleErrorZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelKeysDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_boolPeerHandleErrorZ_get_err + * Method: LDKCResult_ChannelKeysDecodeErrorZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1boolPeerHandleErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelKeysDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_SecretKeySecpErrorZ_result_ok - * Signature: (J)Z + * Method: LDKKeysInterface_new + * Signature: (Lorg/ldk/impl/bindings/LDKKeysInterface;)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKKeysInterface_1new + (JNIEnv *, jclass, jobject); + +/* + * Class: org_ldk_impl_bindings + * Method: KeysInterface_get_node_secret + * Signature: (J)[B */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SecretKeySecpErrorZ_1result_1ok +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_KeysInterface_1get_1node_1secret (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_SecretKeySecpErrorZ_get_ok + * Method: KeysInterface_get_destination_script * Signature: (J)[B */ -JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SecretKeySecpErrorZ_1get_1ok +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_KeysInterface_1get_1destination_1script (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_SecretKeySecpErrorZ_get_err - * Signature: (J)Lorg/ldk/enums/LDKSecp256k1Error; + * Method: KeysInterface_get_shutdown_pubkey + * Signature: (J)[B */ -JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SecretKeySecpErrorZ_1get_1err +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_KeysInterface_1get_1shutdown_1pubkey (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_PublicKeySecpErrorZ_result_ok - * Signature: (J)Z + * Method: KeysInterface_get_channel_keys + * Signature: (JZJ)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_KeysInterface_1get_1channel_1keys + (JNIEnv *, jclass, jlong, jboolean, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: KeysInterface_get_secure_random_bytes + * Signature: (J)[B */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PublicKeySecpErrorZ_1result_1ok +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_KeysInterface_1get_1secure_1random_1bytes (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_PublicKeySecpErrorZ_get_ok + * Method: KeysInterface_read_chan_signer + * Signature: (J[B)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_KeysInterface_1read_1chan_1signer + (JNIEnv *, jclass, jlong, jbyteArray); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKFeeEstimator_new + * Signature: (Lorg/ldk/impl/bindings/LDKFeeEstimator;)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKFeeEstimator_1new + (JNIEnv *, jclass, jobject); + +/* + * Class: org_ldk_impl_bindings + * Method: FeeEstimator_get_est_sat_per_1000_weight + * Signature: (JLorg/ldk/enums/LDKConfirmationTarget;)I + */ +JNIEXPORT jint JNICALL Java_org_ldk_impl_bindings_FeeEstimator_1get_1est_1sat_1per_11000_1weight + (JNIEnv *, jclass, jlong, jobject); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKLogger_new + * Signature: (Lorg/ldk/impl/bindings/LDKLogger;)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKLogger_1new + (JNIEnv *, jclass, jobject); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKC2Tuple_BlockHashChannelManagerZ_new + * Signature: ([BJ)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelManagerZ_1new + (JNIEnv *, jclass, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKC2Tuple_BlockHashChannelManagerZ_get_a * Signature: (J)[B */ -JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PublicKeySecpErrorZ_1get_1ok +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelManagerZ_1get_1a (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_PublicKeySecpErrorZ_get_err - * Signature: (J)Lorg/ldk/enums/LDKSecp256k1Error; + * Method: LDKC2Tuple_BlockHashChannelManagerZ_get_b + * Signature: (J)J */ -JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PublicKeySecpErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKC2Tuple_1BlockHashChannelManagerZ_1get_1b (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_TxCreationKeysSecpErrorZ_result_ok + * Method: LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysSecpErrorZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_TxCreationKeysSecpErrorZ_get_ok + * Method: LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysSecpErrorZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_TxCreationKeysSecpErrorZ_get_err - * Signature: (J)Lorg/ldk/enums/LDKSecp256k1Error; + * Method: LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TxCreationKeysSecpErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_TrustedCommitmentTransactionNoneZ_result_ok + * Method: LDKCResult_SpendableOutputDescriptorDecodeErrorZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TrustedCommitmentTransactionNoneZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SpendableOutputDescriptorDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_TrustedCommitmentTransactionNoneZ_get_ok + * Method: LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TrustedCommitmentTransactionNoneZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SpendableOutputDescriptorDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_TrustedCommitmentTransactionNoneZ_get_err - * Signature: (J)V + * Method: LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1TrustedCommitmentTransactionNoneZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1SpendableOutputDescriptorDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_CVec_SignatureZNoneZ_result_ok + * Method: LDKCResult_InMemoryChannelKeysDecodeErrorZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1SignatureZNoneZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InMemoryChannelKeysDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_CVec_SignatureZNoneZ_get_ok - * Signature: (J)[[B + * Method: LDKCResult_InMemoryChannelKeysDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT jobjectArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1SignatureZNoneZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InMemoryChannelKeysDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_CVec_SignatureZNoneZ_get_err - * Signature: (J)V + * Method: LDKCResult_InMemoryChannelKeysDecodeErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CVec_1SignatureZNoneZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InMemoryChannelKeysDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* @@ -1745,770 +1833,2634 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RouteLightningErr /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_RoutingFeesDecodeErrorZ_result_ok + * Method: LDKCResult_NetAddressu8Z_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RoutingFeesDecodeErrorZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetAddressu8Z_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_RoutingFeesDecodeErrorZ_get_ok + * Method: LDKCResult_NetAddressu8Z_get_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RoutingFeesDecodeErrorZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetAddressu8Z_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_RoutingFeesDecodeErrorZ_get_err - * Signature: (J)J + * Method: LDKCResult_NetAddressu8Z_get_err + * Signature: (J)B */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RoutingFeesDecodeErrorZ_1get_1err +JNIEXPORT jbyte JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetAddressu8Z_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NodeAnnouncementInfoDecodeErrorZ_result_ok + * Method: LDKCResult_CResult_NetAddressu8ZDecodeErrorZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementInfoDecodeErrorZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CResult_1NetAddressu8ZDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_ok + * Method: LDKCResult_CResult_NetAddressu8ZDecodeErrorZ_get_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementInfoDecodeErrorZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CResult_1NetAddressu8ZDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_err + * Method: LDKCResult_CResult_NetAddressu8ZDecodeErrorZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementInfoDecodeErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CResult_1NetAddressu8ZDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NodeInfoDecodeErrorZ_result_ok + * Method: LDKCVec_UpdateAddHTLCZ_new + * Signature: ([J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1UpdateAddHTLCZ_1new + (JNIEnv *, jclass, jlongArray); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCVec_UpdateFulfillHTLCZ_new + * Signature: ([J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1UpdateFulfillHTLCZ_1new + (JNIEnv *, jclass, jlongArray); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCVec_UpdateFailHTLCZ_new + * Signature: ([J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1UpdateFailHTLCZ_1new + (JNIEnv *, jclass, jlongArray); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCVec_UpdateFailMalformedHTLCZ_new + * Signature: ([J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1UpdateFailMalformedHTLCZ_1new + (JNIEnv *, jclass, jlongArray); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_AcceptChannelDecodeErrorZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeInfoDecodeErrorZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1AcceptChannelDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NodeInfoDecodeErrorZ_get_ok + * Method: LDKCResult_AcceptChannelDecodeErrorZ_get_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeInfoDecodeErrorZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1AcceptChannelDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NodeInfoDecodeErrorZ_get_err + * Method: LDKCResult_AcceptChannelDecodeErrorZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeInfoDecodeErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1AcceptChannelDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NetworkGraphDecodeErrorZ_result_ok + * Method: LDKCResult_AnnouncementSignaturesDecodeErrorZ_result_ok * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetworkGraphDecodeErrorZ_1result_1ok +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1AnnouncementSignaturesDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NetworkGraphDecodeErrorZ_get_ok + * Method: LDKCResult_AnnouncementSignaturesDecodeErrorZ_get_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetworkGraphDecodeErrorZ_1get_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1AnnouncementSignaturesDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKCResult_NetworkGraphDecodeErrorZ_get_err + * Method: LDKCResult_AnnouncementSignaturesDecodeErrorZ_get_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NetworkGraphDecodeErrorZ_1get_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1AnnouncementSignaturesDecodeErrorZ_1get_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKMessageSendEventsProvider_new - * Signature: (Lorg/ldk/impl/bindings/LDKMessageSendEventsProvider;)J + * Method: LDKCResult_ChannelReestablishDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKMessageSendEventsProvider_1new - (JNIEnv *, jclass, jobject); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelReestablishDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: MessageSendEventsProvider_get_and_clear_pending_msg_events - * Signature: (J)[J + * Method: LDKCResult_ChannelReestablishDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT jlongArray JNICALL Java_org_ldk_impl_bindings_MessageSendEventsProvider_1get_1and_1clear_1pending_1msg_1events +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelReestablishDecodeErrorZ_1get_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKEventsProvider_new - * Signature: (Lorg/ldk/impl/bindings/LDKEventsProvider;)J + * Method: LDKCResult_ChannelReestablishDecodeErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKEventsProvider_1new - (JNIEnv *, jclass, jobject); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelReestablishDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: EventsProvider_get_and_clear_pending_events - * Signature: (J)[J + * Method: LDKCResult_ClosingSignedDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlongArray JNICALL Java_org_ldk_impl_bindings_EventsProvider_1get_1and_1clear_1pending_1events +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ClosingSignedDecodeErrorZ_1result_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKAccess_new - * Signature: (Lorg/ldk/impl/bindings/LDKAccess;)J + * Method: LDKCResult_ClosingSignedDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKAccess_1new - (JNIEnv *, jclass, jobject); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ClosingSignedDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: Access_get_utxo - * Signature: (J[BJ)J + * Method: LDKCResult_ClosingSignedDecodeErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Access_1get_1utxo - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ClosingSignedDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKFilter_new - * Signature: (Lorg/ldk/impl/bindings/LDKFilter;)J + * Method: LDKCResult_CommitmentSignedDecodeErrorZ_result_ok + * Signature: (J)Z */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKFilter_1new - (JNIEnv *, jclass, jobject); +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CommitmentSignedDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: Filter_register_tx - * Signature: (J[B[B)V + * Method: LDKCResult_CommitmentSignedDecodeErrorZ_get_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Filter_1register_1tx - (JNIEnv *, jclass, jlong, jbyteArray, jbyteArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CommitmentSignedDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: Filter_register_output - * Signature: (JJ[B)V + * Method: LDKCResult_CommitmentSignedDecodeErrorZ_get_err + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Filter_1register_1output - (JNIEnv *, jclass, jlong, jlong, jbyteArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1CommitmentSignedDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKPersist_new - * Signature: (Lorg/ldk/impl/bindings/LDKPersist;)J + * Method: LDKCResult_FundingCreatedDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingCreatedDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_FundingCreatedDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingCreatedDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_FundingCreatedDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingCreatedDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_FundingSignedDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingSignedDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_FundingSignedDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingSignedDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_FundingSignedDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingSignedDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_FundingLockedDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingLockedDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_FundingLockedDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingLockedDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_FundingLockedDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1FundingLockedDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_InitDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InitDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_InitDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InitDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_InitDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1InitDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_OpenChannelDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1OpenChannelDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_OpenChannelDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1OpenChannelDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_OpenChannelDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1OpenChannelDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_RevokeAndACKDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RevokeAndACKDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_RevokeAndACKDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RevokeAndACKDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_RevokeAndACKDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1RevokeAndACKDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ShutdownDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ShutdownDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ShutdownDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ShutdownDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ShutdownDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ShutdownDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UpdateFailHTLCDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFailHTLCDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UpdateFailHTLCDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFailHTLCDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UpdateFailHTLCDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFailHTLCDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFailMalformedHTLCDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFailMalformedHTLCDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFailMalformedHTLCDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UpdateFeeDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFeeDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UpdateFeeDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFeeDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UpdateFeeDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFeeDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UpdateFulfillHTLCDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFulfillHTLCDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UpdateFulfillHTLCDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFulfillHTLCDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UpdateFulfillHTLCDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateFulfillHTLCDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UpdateAddHTLCDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateAddHTLCDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UpdateAddHTLCDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateAddHTLCDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UpdateAddHTLCDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UpdateAddHTLCDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_PingDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PingDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_PingDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PingDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_PingDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PingDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_PongDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PongDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_PongDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PongDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_PongDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PongDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelAnnouncementDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelAnnouncementDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelAnnouncementDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ChannelAnnouncementDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelAnnouncementDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ChannelAnnouncementDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelAnnouncementDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ChannelAnnouncementDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelAnnouncementDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UnsignedChannelUpdateDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelUpdateDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UnsignedChannelUpdateDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelUpdateDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UnsignedChannelUpdateDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedChannelUpdateDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ChannelUpdateDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelUpdateDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ChannelUpdateDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelUpdateDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ChannelUpdateDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ChannelUpdateDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ErrorMessageDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ErrorMessageDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ErrorMessageDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ErrorMessageDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ErrorMessageDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ErrorMessageDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedNodeAnnouncementDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedNodeAnnouncementDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1UnsignedNodeAnnouncementDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_NodeAnnouncementDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_NodeAnnouncementDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_NodeAnnouncementDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NodeAnnouncementDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_QueryShortChannelIdsDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryShortChannelIdsDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryShortChannelIdsDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryShortChannelIdsDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyShortChannelIdsEndDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyShortChannelIdsEndDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyShortChannelIdsEndDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_QueryChannelRangeDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryChannelRangeDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_QueryChannelRangeDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryChannelRangeDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_QueryChannelRangeDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1QueryChannelRangeDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ReplyChannelRangeDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyChannelRangeDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ReplyChannelRangeDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyChannelRangeDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_ReplyChannelRangeDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1ReplyChannelRangeDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_GossipTimestampFilterDecodeErrorZ_result_ok + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1GossipTimestampFilterDecodeErrorZ_1result_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_GossipTimestampFilterDecodeErrorZ_get_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1GossipTimestampFilterDecodeErrorZ_1get_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKCResult_GossipTimestampFilterDecodeErrorZ_get_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1GossipTimestampFilterDecodeErrorZ_1get_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKMessageSendEventsProvider_new + * Signature: (Lorg/ldk/impl/bindings/LDKMessageSendEventsProvider;)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKMessageSendEventsProvider_1new + (JNIEnv *, jclass, jobject); + +/* + * Class: org_ldk_impl_bindings + * Method: MessageSendEventsProvider_get_and_clear_pending_msg_events + * Signature: (J)[J + */ +JNIEXPORT jlongArray JNICALL Java_org_ldk_impl_bindings_MessageSendEventsProvider_1get_1and_1clear_1pending_1msg_1events + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKEventsProvider_new + * Signature: (Lorg/ldk/impl/bindings/LDKEventsProvider;)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKEventsProvider_1new + (JNIEnv *, jclass, jobject); + +/* + * Class: org_ldk_impl_bindings + * Method: EventsProvider_get_and_clear_pending_events + * Signature: (J)[J + */ +JNIEXPORT jlongArray JNICALL Java_org_ldk_impl_bindings_EventsProvider_1get_1and_1clear_1pending_1events + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKAccess_new + * Signature: (Lorg/ldk/impl/bindings/LDKAccess;)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKAccess_1new + (JNIEnv *, jclass, jobject); + +/* + * Class: org_ldk_impl_bindings + * Method: Access_get_utxo + * Signature: (J[BJ)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Access_1get_1utxo + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKFilter_new + * Signature: (Lorg/ldk/impl/bindings/LDKFilter;)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKFilter_1new + (JNIEnv *, jclass, jobject); + +/* + * Class: org_ldk_impl_bindings + * Method: Filter_register_tx + * Signature: (J[B[B)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Filter_1register_1tx + (JNIEnv *, jclass, jlong, jbyteArray, jbyteArray); + +/* + * Class: org_ldk_impl_bindings + * Method: Filter_register_output + * Signature: (JJ[B)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Filter_1register_1output + (JNIEnv *, jclass, jlong, jlong, jbyteArray); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKPersist_new + * Signature: (Lorg/ldk/impl/bindings/LDKPersist;)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKPersist_1new + (JNIEnv *, jclass, jobject); + +/* + * Class: org_ldk_impl_bindings + * Method: Persist_persist_new_channel + * Signature: (JJJ)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Persist_1persist_1new_1channel + (JNIEnv *, jclass, jlong, jlong, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: Persist_update_persisted_channel + * Signature: (JJJJ)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Persist_1update_1persisted_1channel + (JNIEnv *, jclass, jlong, jlong, jlong, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKChannelMessageHandler_new + * Signature: (Lorg/ldk/impl/bindings/LDKChannelMessageHandler;Lorg/ldk/impl/bindings/LDKMessageSendEventsProvider;)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKChannelMessageHandler_1new + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_handle_open_channel + * Signature: (J[BJJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1open_1channel + (JNIEnv *, jclass, jlong, jbyteArray, jlong, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_handle_accept_channel + * Signature: (J[BJJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1accept_1channel + (JNIEnv *, jclass, jlong, jbyteArray, jlong, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_handle_funding_created + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1funding_1created + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_handle_funding_signed + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1funding_1signed + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_handle_funding_locked + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1funding_1locked + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_handle_shutdown + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1shutdown + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_handle_closing_signed + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1closing_1signed + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_handle_update_add_htlc + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1add_1htlc + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_handle_update_fulfill_htlc + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1fulfill_1htlc + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_handle_update_fail_htlc + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1fail_1htlc + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_handle_update_fail_malformed_htlc + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1fail_1malformed_1htlc + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_handle_commitment_signed + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1commitment_1signed + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_handle_revoke_and_ack + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1revoke_1and_1ack + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_handle_update_fee + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1fee + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_handle_announcement_signatures + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1announcement_1signatures + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_peer_disconnected + * Signature: (J[BZ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1peer_1disconnected + (JNIEnv *, jclass, jlong, jbyteArray, jboolean); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_peer_connected + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1peer_1connected + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_handle_channel_reestablish + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1channel_1reestablish + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMessageHandler_handle_error + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1error + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKRoutingMessageHandler_new + * Signature: (Lorg/ldk/impl/bindings/LDKRoutingMessageHandler;Lorg/ldk/impl/bindings/LDKMessageSendEventsProvider;)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKRoutingMessageHandler_1new + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: org_ldk_impl_bindings + * Method: RoutingMessageHandler_handle_node_announcement + * Signature: (JJ)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1node_1announcement + (JNIEnv *, jclass, jlong, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: RoutingMessageHandler_handle_channel_announcement + * Signature: (JJ)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1channel_1announcement + (JNIEnv *, jclass, jlong, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: RoutingMessageHandler_handle_channel_update + * Signature: (JJ)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1channel_1update + (JNIEnv *, jclass, jlong, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: RoutingMessageHandler_handle_htlc_fail_channel_update + * Signature: (JJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1htlc_1fail_1channel_1update + (JNIEnv *, jclass, jlong, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: RoutingMessageHandler_get_next_channel_announcements + * Signature: (JJB)[J + */ +JNIEXPORT jlongArray JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1get_1next_1channel_1announcements + (JNIEnv *, jclass, jlong, jlong, jbyte); + +/* + * Class: org_ldk_impl_bindings + * Method: RoutingMessageHandler_get_next_node_announcements + * Signature: (J[BB)[J + */ +JNIEXPORT jlongArray JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1get_1next_1node_1announcements + (JNIEnv *, jclass, jlong, jbyteArray, jbyte); + +/* + * Class: org_ldk_impl_bindings + * Method: RoutingMessageHandler_sync_routing_table + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1sync_1routing_1table + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: RoutingMessageHandler_handle_reply_channel_range + * Signature: (J[BJ)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1reply_1channel_1range + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: RoutingMessageHandler_handle_reply_short_channel_ids_end + * Signature: (J[BJ)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1reply_1short_1channel_1ids_1end + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: RoutingMessageHandler_handle_query_channel_range + * Signature: (J[BJ)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1query_1channel_1range + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: RoutingMessageHandler_handle_query_short_channel_ids + * Signature: (J[BJ)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1query_1short_1channel_1ids + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: LDKSocketDescriptor_new + * Signature: (Lorg/ldk/impl/bindings/LDKSocketDescriptor;)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKSocketDescriptor_1new + (JNIEnv *, jclass, jobject); + +/* + * Class: org_ldk_impl_bindings + * Method: SocketDescriptor_send_data + * Signature: (J[BZ)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_SocketDescriptor_1send_1data + (JNIEnv *, jclass, jlong, jbyteArray, jboolean); + +/* + * Class: org_ldk_impl_bindings + * Method: SocketDescriptor_disconnect_socket + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_SocketDescriptor_1disconnect_1socket + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: SocketDescriptor_hash + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_SocketDescriptor_1hash + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: Transaction_free + * Signature: ([B)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Transaction_1free + (JNIEnv *, jclass, jbyteArray); + +/* + * Class: org_ldk_impl_bindings + * Method: TxOut_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxOut_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: TxOut_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxOut_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_SecretKeyErrorZ_ok + * Signature: ([B)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1SecretKeyErrorZ_1ok + (JNIEnv *, jclass, jbyteArray); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_SecretKeyErrorZ_err + * Signature: (Lorg/ldk/enums/LDKSecp256k1Error;)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1SecretKeyErrorZ_1err + (JNIEnv *, jclass, jobject); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_SecretKeyErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1SecretKeyErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_PublicKeyErrorZ_ok + * Signature: ([B)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PublicKeyErrorZ_1ok + (JNIEnv *, jclass, jbyteArray); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_PublicKeyErrorZ_err + * Signature: (Lorg/ldk/enums/LDKSecp256k1Error;)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PublicKeyErrorZ_1err + (JNIEnv *, jclass, jobject); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_PublicKeyErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1PublicKeyErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_TxCreationKeysDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_TxCreationKeysDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_TxCreationKeysDecodeErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_TxCreationKeysDecodeErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelPublicKeysDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelPublicKeysDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelPublicKeysDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelPublicKeysDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelPublicKeysDecodeErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelPublicKeysDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelPublicKeysDecodeErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelPublicKeysDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_TxCreationKeysErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_TxCreationKeysErrorZ_err + * Signature: (Lorg/ldk/enums/LDKSecp256k1Error;)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysErrorZ_1err + (JNIEnv *, jclass, jobject); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_TxCreationKeysErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_HTLCOutputInCommitmentDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1HTLCOutputInCommitmentDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_HTLCOutputInCommitmentDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1HTLCOutputInCommitmentDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_HTLCOutputInCommitmentDecodeErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1HTLCOutputInCommitmentDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_HTLCOutputInCommitmentDecodeErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1HTLCOutputInCommitmentDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CounterpartyChannelTransactionParametersDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CounterpartyChannelTransactionParametersDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CounterpartyChannelTransactionParametersDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CounterpartyChannelTransactionParametersDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelTransactionParametersDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelTransactionParametersDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelTransactionParametersDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelTransactionParametersDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelTransactionParametersDecodeErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelTransactionParametersDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelTransactionParametersDecodeErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelTransactionParametersDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CVec_SignatureZ_free + * Signature: ([[B)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1SignatureZ_1free + (JNIEnv *, jclass, jobjectArray); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_HolderCommitmentTransactionDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1HolderCommitmentTransactionDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_HolderCommitmentTransactionDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1HolderCommitmentTransactionDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_HolderCommitmentTransactionDecodeErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1HolderCommitmentTransactionDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_HolderCommitmentTransactionDecodeErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1HolderCommitmentTransactionDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_BuiltCommitmentTransactionDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1BuiltCommitmentTransactionDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_BuiltCommitmentTransactionDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1BuiltCommitmentTransactionDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_BuiltCommitmentTransactionDecodeErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1BuiltCommitmentTransactionDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_BuiltCommitmentTransactionDecodeErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1BuiltCommitmentTransactionDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CommitmentTransactionDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CommitmentTransactionDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CommitmentTransactionDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CommitmentTransactionDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CommitmentTransactionDecodeErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CommitmentTransactionDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CommitmentTransactionDecodeErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CommitmentTransactionDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_TrustedCommitmentTransactionNoneZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TrustedCommitmentTransactionNoneZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_TrustedCommitmentTransactionNoneZ_err + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TrustedCommitmentTransactionNoneZ_1err + (JNIEnv *, jclass); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_TrustedCommitmentTransactionNoneZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1TrustedCommitmentTransactionNoneZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CVec_SignatureZNoneZ_ok + * Signature: ([[B)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1ok + (JNIEnv *, jclass, jobjectArray); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CVec_SignatureZNoneZ_err + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1err + (JNIEnv *, jclass); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CVec_SignatureZNoneZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CVec_SignatureZNoneZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CVec_PublicKeyZ_free + * Signature: ([[B)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1PublicKeyZ_1free + (JNIEnv *, jclass, jobjectArray); + +/* + * Class: org_ldk_impl_bindings + * Method: CVec_u8Z_free + * Signature: ([B)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1u8Z_1free + (JNIEnv *, jclass, jbyteArray); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CVec_u8ZPeerHandleErrorZ_ok + * Signature: ([B)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1ok + (JNIEnv *, jclass, jbyteArray); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CVec_u8ZPeerHandleErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CVec_u8ZPeerHandleErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CVec_u8ZPeerHandleErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_NonePeerHandleErrorZ_ok + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1ok + (JNIEnv *, jclass); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_NonePeerHandleErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_NonePeerHandleErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_NonePeerHandleErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_boolPeerHandleErrorZ_ok + * Signature: (Z)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1ok + (JNIEnv *, jclass, jboolean); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_boolPeerHandleErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_boolPeerHandleErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_boolPeerHandleErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_InitFeaturesDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1InitFeaturesDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_InitFeaturesDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1InitFeaturesDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_InitFeaturesDecodeErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1InitFeaturesDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_NodeFeaturesDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NodeFeaturesDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_NodeFeaturesDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NodeFeaturesDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_NodeFeaturesDecodeErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NodeFeaturesDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelFeaturesDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelFeaturesDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelFeaturesDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelFeaturesDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelFeaturesDecodeErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelFeaturesDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelConfigDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelConfigDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelConfigDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelConfigDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelConfigDecodeErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelConfigDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelConfigDecodeErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelConfigDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_boolLightningErrorZ_ok + * Signature: (Z)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1ok + (JNIEnv *, jclass, jboolean); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_boolLightningErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_boolLightningErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_boolLightningErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new + * Signature: (JJJ)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1new + (JNIEnv *, jclass, jlong, jlong, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free + * Signature: ([J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZZ_1free + (JNIEnv *, jclass, jlongArray); + +/* + * Class: org_ldk_impl_bindings + * Method: CVec_NodeAnnouncementZ_free + * Signature: ([J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1NodeAnnouncementZ_1free + (JNIEnv *, jclass, jlongArray); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_NoneLightningErrorZ_ok + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneLightningErrorZ_1ok + (JNIEnv *, jclass); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_NoneLightningErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneLightningErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_NoneLightningErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneLightningErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_NoneLightningErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneLightningErrorZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CVec_MessageSendEventZ_free + * Signature: ([J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1MessageSendEventZ_1free + (JNIEnv *, jclass, jlongArray); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_DirectionalChannelInfoDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1DirectionalChannelInfoDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_DirectionalChannelInfoDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1DirectionalChannelInfoDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_DirectionalChannelInfoDecodeErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1DirectionalChannelInfoDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_DirectionalChannelInfoDecodeErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1DirectionalChannelInfoDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelInfoDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelInfoDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelInfoDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelInfoDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ChannelInfoDecodeErrorZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelInfoDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_RoutingFeesDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RoutingFeesDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_RoutingFeesDecodeErrorZ_err + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKPersist_1new - (JNIEnv *, jclass, jobject); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RoutingFeesDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: Persist_persist_new_channel - * Signature: (JJJ)J + * Method: CResult_RoutingFeesDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Persist_1persist_1new_1channel - (JNIEnv *, jclass, jlong, jlong, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1RoutingFeesDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: Persist_update_persisted_channel - * Signature: (JJJJ)J + * Method: CResult_RoutingFeesDecodeErrorZ_clone + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Persist_1update_1persisted_1channel - (JNIEnv *, jclass, jlong, jlong, jlong, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RoutingFeesDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKChannelMessageHandler_new - * Signature: (Lorg/ldk/impl/bindings/LDKChannelMessageHandler;Lorg/ldk/impl/bindings/LDKMessageSendEventsProvider;)J + * Method: CVec_NetAddressZ_free + * Signature: ([J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKChannelMessageHandler_1new - (JNIEnv *, jclass, jobject, jobject); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1NetAddressZ_1free + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_handle_open_channel - * Signature: (J[BJJ)V + * Method: CResult_NodeAnnouncementInfoDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1open_1channel - (JNIEnv *, jclass, jlong, jbyteArray, jlong, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementInfoDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_handle_accept_channel - * Signature: (J[BJJ)V + * Method: CResult_NodeAnnouncementInfoDecodeErrorZ_err + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1accept_1channel - (JNIEnv *, jclass, jlong, jbyteArray, jlong, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementInfoDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_handle_funding_created - * Signature: (J[BJ)V + * Method: CResult_NodeAnnouncementInfoDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1funding_1created - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementInfoDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_handle_funding_signed - * Signature: (J[BJ)V + * Method: CResult_NodeAnnouncementInfoDecodeErrorZ_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1funding_1signed - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementInfoDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_handle_funding_locked - * Signature: (J[BJ)V + * Method: CVec_u64Z_free + * Signature: ([J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1funding_1locked - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1u64Z_1free + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_handle_shutdown - * Signature: (J[BJ)V + * Method: CResult_NodeInfoDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1shutdown - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NodeInfoDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_handle_closing_signed - * Signature: (J[BJ)V + * Method: CResult_NodeInfoDecodeErrorZ_err + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1closing_1signed - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NodeInfoDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_handle_update_add_htlc - * Signature: (J[BJ)V + * Method: CResult_NodeInfoDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1add_1htlc - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NodeInfoDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_handle_update_fulfill_htlc - * Signature: (J[BJ)V + * Method: CResult_NodeInfoDecodeErrorZ_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1fulfill_1htlc - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NodeInfoDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_handle_update_fail_htlc - * Signature: (J[BJ)V + * Method: CResult_NetworkGraphDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1fail_1htlc - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NetworkGraphDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_handle_update_fail_malformed_htlc - * Signature: (J[BJ)V + * Method: CResult_NetworkGraphDecodeErrorZ_err + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1fail_1malformed_1htlc - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NetworkGraphDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_handle_commitment_signed - * Signature: (J[BJ)V + * Method: CResult_NetworkGraphDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1commitment_1signed - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NetworkGraphDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_handle_revoke_and_ack - * Signature: (J[BJ)V + * Method: C2Tuple_usizeTransactionZ_new + * Signature: (J[B)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1revoke_1and_1ack - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1usizeTransactionZ_1new + (JNIEnv *, jclass, jlong, jbyteArray); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_handle_update_fee - * Signature: (J[BJ)V + * Method: C2Tuple_usizeTransactionZ_free + * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1update_1fee - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1usizeTransactionZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_handle_announcement_signatures - * Signature: (J[BJ)V + * Method: CVec_C2Tuple_usizeTransactionZZ_free + * Signature: ([J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1announcement_1signatures - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C2Tuple_1usizeTransactionZZ_1free + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_peer_disconnected - * Signature: (J[BZ)V + * Method: CResult_NoneChannelMonitorUpdateErrZ_ok + * Signature: ()J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1peer_1disconnected - (JNIEnv *, jclass, jlong, jbyteArray, jboolean); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneChannelMonitorUpdateErrZ_1ok + (JNIEnv *, jclass); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_peer_connected - * Signature: (J[BJ)V + * Method: CResult_NoneChannelMonitorUpdateErrZ_err + * Signature: (Lorg/ldk/enums/LDKChannelMonitorUpdateErr;)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1peer_1connected - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneChannelMonitorUpdateErrZ_1err + (JNIEnv *, jclass, jobject); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_handle_channel_reestablish - * Signature: (J[BJ)V + * Method: CResult_NoneChannelMonitorUpdateErrZ_free + * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1channel_1reestablish - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneChannelMonitorUpdateErrZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelMessageHandler_handle_error - * Signature: (J[BJ)V + * Method: CResult_NoneChannelMonitorUpdateErrZ_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1error - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneChannelMonitorUpdateErrZ_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKRoutingMessageHandler_new - * Signature: (Lorg/ldk/impl/bindings/LDKRoutingMessageHandler;Lorg/ldk/impl/bindings/LDKMessageSendEventsProvider;)J + * Method: CVec_MonitorEventZ_free + * Signature: ([J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKRoutingMessageHandler_1new - (JNIEnv *, jclass, jobject, jobject); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1MonitorEventZ_1free + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: RoutingMessageHandler_handle_node_announcement - * Signature: (JJ)J + * Method: CVec_EventZ_free + * Signature: ([J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1node_1announcement - (JNIEnv *, jclass, jlong, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1EventZ_1free + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: RoutingMessageHandler_handle_channel_announcement - * Signature: (JJ)J + * Method: CResult_OutPointDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1channel_1announcement - (JNIEnv *, jclass, jlong, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1OutPointDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: RoutingMessageHandler_handle_channel_update - * Signature: (JJ)J + * Method: CResult_OutPointDecodeErrorZ_err + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1channel_1update - (JNIEnv *, jclass, jlong, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1OutPointDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: RoutingMessageHandler_handle_htlc_fail_channel_update - * Signature: (JJ)V + * Method: CResult_OutPointDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1htlc_1fail_1channel_1update - (JNIEnv *, jclass, jlong, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1OutPointDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: RoutingMessageHandler_get_next_channel_announcements - * Signature: (JJB)[J + * Method: CResult_OutPointDecodeErrorZ_clone + * Signature: (J)J */ -JNIEXPORT jlongArray JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1get_1next_1channel_1announcements - (JNIEnv *, jclass, jlong, jlong, jbyte); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1OutPointDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: RoutingMessageHandler_get_next_node_announcements - * Signature: (J[BB)[J + * Method: CResult_ChannelMonitorUpdateDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT jlongArray JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1get_1next_1node_1announcements - (JNIEnv *, jclass, jlong, jbyteArray, jbyte); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelMonitorUpdateDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: RoutingMessageHandler_sync_routing_table - * Signature: (J[BJ)V + * Method: CResult_ChannelMonitorUpdateDecodeErrorZ_err + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1sync_1routing_1table - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelMonitorUpdateDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: RoutingMessageHandler_handle_reply_channel_range - * Signature: (J[BJ)J + * Method: CResult_ChannelMonitorUpdateDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1reply_1channel_1range - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelMonitorUpdateDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: RoutingMessageHandler_handle_reply_short_channel_ids_end - * Signature: (J[BJ)J + * Method: CResult_ChannelMonitorUpdateDecodeErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelMonitorUpdateDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_HTLCUpdateDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1HTLCUpdateDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_HTLCUpdateDecodeErrorZ_err + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1reply_1short_1channel_1ids_1end - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1HTLCUpdateDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: RoutingMessageHandler_handle_query_channel_range - * Signature: (J[BJ)J + * Method: CResult_HTLCUpdateDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1query_1channel_1range - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1HTLCUpdateDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: RoutingMessageHandler_handle_query_short_channel_ids - * Signature: (J[BJ)J + * Method: CResult_HTLCUpdateDecodeErrorZ_clone + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1query_1short_1channel_1ids - (JNIEnv *, jclass, jlong, jbyteArray, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1HTLCUpdateDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: LDKSocketDescriptor_new - * Signature: (Lorg/ldk/impl/bindings/LDKSocketDescriptor;)J + * Method: CResult_NoneMonitorUpdateErrorZ_ok + * Signature: ()J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKSocketDescriptor_1new - (JNIEnv *, jclass, jobject); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneMonitorUpdateErrorZ_1ok + (JNIEnv *, jclass); /* * Class: org_ldk_impl_bindings - * Method: SocketDescriptor_send_data - * Signature: (J[BZ)J + * Method: CResult_NoneMonitorUpdateErrorZ_err + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_SocketDescriptor_1send_1data - (JNIEnv *, jclass, jlong, jbyteArray, jboolean); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneMonitorUpdateErrorZ_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: SocketDescriptor_disconnect_socket + * Method: CResult_NoneMonitorUpdateErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_SocketDescriptor_1disconnect_1socket +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneMonitorUpdateErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: SocketDescriptor_hash + * Method: CResult_NoneMonitorUpdateErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_SocketDescriptor_1hash +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneMonitorUpdateErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: Transaction_free - * Signature: ([B)V + * Method: C2Tuple_OutPointScriptZ_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Transaction_1free - (JNIEnv *, jclass, jbyteArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1OutPointScriptZ_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: TxOut_free - * Signature: (J)V + * Method: C2Tuple_OutPointScriptZ_new + * Signature: (J[B)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxOut_1free - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1OutPointScriptZ_1new + (JNIEnv *, jclass, jlong, jbyteArray); /* * Class: org_ldk_impl_bindings - * Method: TxOut_clone - * Signature: (J)J + * Method: C2Tuple_OutPointScriptZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxOut_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1OutPointScriptZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_SpendableOutputDescriptorZ_free - * Signature: ([J)V + * Method: CVec_TransactionZ_free + * Signature: ([[B)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1SpendableOutputDescriptorZ_1free - (JNIEnv *, jclass, jlongArray); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1TransactionZ_1free + (JNIEnv *, jclass, jobjectArray); /* * Class: org_ldk_impl_bindings - * Method: CVec_MessageSendEventZ_free - * Signature: ([J)V + * Method: C2Tuple_u32TxOutZ_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1MessageSendEventZ_1free - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u32TxOutZ_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_EventZ_free - * Signature: ([J)V + * Method: C2Tuple_u32TxOutZ_new + * Signature: (IJ)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1EventZ_1free - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u32TxOutZ_1new + (JNIEnv *, jclass, jint, jlong); /* * Class: org_ldk_impl_bindings - * Method: C2Tuple_usizeTransactionZ_free + * Method: C2Tuple_u32TxOutZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1usizeTransactionZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u32TxOutZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: C2Tuple_usizeTransactionZ_new - * Signature: (J[B)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1usizeTransactionZ_1new - (JNIEnv *, jclass, jlong, jbyteArray); - -/* - * Class: org_ldk_impl_bindings - * Method: CVec_C2Tuple_usizeTransactionZZ_free + * Method: CVec_C2Tuple_u32TxOutZZ_free * Signature: ([J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C2Tuple_1usizeTransactionZZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C2Tuple_1u32TxOutZZ_1free (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: CResult_NoneChannelMonitorUpdateErrZ_ok - * Signature: ()J + * Method: C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new + * Signature: ([B[J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneChannelMonitorUpdateErrZ_1ok - (JNIEnv *, jclass); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZ_1new + (JNIEnv *, jclass, jbyteArray, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: CResult_NoneChannelMonitorUpdateErrZ_err - * Signature: (Lorg/ldk/enums/LDKChannelMonitorUpdateErr;)J + * Method: C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneChannelMonitorUpdateErrZ_1err - (JNIEnv *, jclass, jobject); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NoneChannelMonitorUpdateErrZ_free - * Signature: (J)V + * Method: CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free + * Signature: ([J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneChannelMonitorUpdateErrZ_1free - (JNIEnv *, jclass, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZZ_1free + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: CResult_NoneChannelMonitorUpdateErrZ_clone - * Signature: (J)J + * Method: C2Tuple_BlockHashChannelMonitorZ_new + * Signature: ([BJ)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneChannelMonitorUpdateErrZ_1clone - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1BlockHashChannelMonitorZ_1new + (JNIEnv *, jclass, jbyteArray, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_MonitorEventZ_free - * Signature: ([J)V + * Method: C2Tuple_BlockHashChannelMonitorZ_free + * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1MonitorEventZ_1free - (JNIEnv *, jclass, jlongArray); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1BlockHashChannelMonitorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ChannelMonitorUpdateDecodeErrorZ_ok + * Method: CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelMonitorUpdateDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ChannelMonitorUpdateDecodeErrorZ_err + * Method: CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelMonitorUpdateDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ChannelMonitorUpdateDecodeErrorZ_free + * Method: CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelMonitorUpdateDecodeErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NoneMonitorUpdateErrorZ_ok - * Signature: ()J + * Method: CVec_SpendableOutputDescriptorZ_free + * Signature: ([J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneMonitorUpdateErrorZ_1ok - (JNIEnv *, jclass); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1SpendableOutputDescriptorZ_1free + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: CResult_NoneMonitorUpdateErrorZ_err + * Method: CResult_TxOutAccessErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneMonitorUpdateErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TxOutAccessErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NoneMonitorUpdateErrorZ_free + * Method: CResult_TxOutAccessErrorZ_err + * Signature: (Lorg/ldk/enums/LDKAccessError;)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TxOutAccessErrorZ_1err + (JNIEnv *, jclass, jobject); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_TxOutAccessErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneMonitorUpdateErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1TxOutAccessErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NoneMonitorUpdateErrorZ_clone + * Method: CResult_TxOutAccessErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneMonitorUpdateErrorZ_1clone +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TxOutAccessErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: C2Tuple_OutPointScriptZ_free - * Signature: (J)V + * Method: CResult_NoneAPIErrorZ_ok + * Signature: ()J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1OutPointScriptZ_1free - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1ok + (JNIEnv *, jclass); /* * Class: org_ldk_impl_bindings - * Method: C2Tuple_OutPointScriptZ_new - * Signature: (J[B)J + * Method: CResult_NoneAPIErrorZ_err + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1OutPointScriptZ_1new - (JNIEnv *, jclass, jlong, jbyteArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_TransactionZ_free - * Signature: ([[B)V + * Method: CResult_NoneAPIErrorZ_free + * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1TransactionZ_1free - (JNIEnv *, jclass, jobjectArray); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: C2Tuple_u32TxOutZ_clone + * Method: CResult_NoneAPIErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u32TxOutZ_1clone +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: C2Tuple_u32TxOutZ_free - * Signature: (J)V + * Method: CVec_ChannelDetailsZ_free + * Signature: ([J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u32TxOutZ_1free - (JNIEnv *, jclass, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1ChannelDetailsZ_1free + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: C2Tuple_u32TxOutZ_new - * Signature: (IJ)J + * Method: CResult_NonePaymentSendFailureZ_ok + * Signature: ()J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u32TxOutZ_1new - (JNIEnv *, jclass, jint, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1ok + (JNIEnv *, jclass); /* * Class: org_ldk_impl_bindings - * Method: CVec_C2Tuple_u32TxOutZZ_free - * Signature: ([J)V + * Method: CResult_NonePaymentSendFailureZ_err + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C2Tuple_1u32TxOutZZ_1free - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free + * Method: CResult_NonePaymentSendFailureZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new - * Signature: ([B[J)J + * Method: CResult_NonePaymentSendFailureZ_clone + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZ_1new - (JNIEnv *, jclass, jbyteArray, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free + * Method: CVec_ChannelMonitorZ_free * Signature: ([J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C2Tuple_1TxidCVec_1C2Tuple_1u32TxOutZZZZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1ChannelMonitorZ_1free (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: C2Tuple_BlockHashChannelMonitorZ_free - * Signature: (J)V + * Method: C2Tuple_BlockHashChannelManagerZ_new + * Signature: ([BJ)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1BlockHashChannelMonitorZ_1free - (JNIEnv *, jclass, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1BlockHashChannelManagerZ_1new + (JNIEnv *, jclass, jbyteArray, jlong); /* * Class: org_ldk_impl_bindings - * Method: C2Tuple_BlockHashChannelMonitorZ_new - * Signature: ([BJ)J + * Method: C2Tuple_BlockHashChannelManagerZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1BlockHashChannelMonitorZ_1new - (JNIEnv *, jclass, jbyteArray, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1BlockHashChannelManagerZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok + * Method: CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err + * Method: CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free + * Method: CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelMonitorZDecodeErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* @@ -2519,14 +4471,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashCha JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u64u64Z_1clone (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: C2Tuple_u64u64Z_free - * Signature: (J)V - */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u64u64Z_1free - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: C2Tuple_u64u64Z_new @@ -2535,6 +4479,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u64u64Z_1free JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u64u64Z_1new (JNIEnv *, jclass, jlong, jlong); +/* + * Class: org_ldk_impl_bindings + * Method: C2Tuple_u64u64Z_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1u64u64Z_1free + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: CResult_SpendableOutputDescriptorDecodeErrorZ_ok @@ -2567,14 +4519,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1SpendableOutputDescri JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1SpendableOutputDescriptorDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: CVec_SignatureZ_free - * Signature: ([[B)V - */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1SignatureZ_1free - (JNIEnv *, jclass, jobjectArray); - /* * Class: org_ldk_impl_bindings * Method: C2Tuple_SignatureCVec_SignatureZZ_clone @@ -2583,14 +4527,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1SignatureZ_1free JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1SignatureZZ_1clone (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: C2Tuple_SignatureCVec_SignatureZZ_free - * Signature: (J)V - */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1SignatureZZ_1free - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: C2Tuple_SignatureCVec_SignatureZZ_new @@ -2599,6 +4535,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1Signat JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1SignatureZZ_1new (JNIEnv *, jclass, jbyteArray, jobjectArray); +/* + * Class: org_ldk_impl_bindings + * Method: C2Tuple_SignatureCVec_SignatureZZ_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1SignatureCVec_1SignatureZZ_1free + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok @@ -2665,34 +4609,34 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1SignatureNoneZ_1clon /* * Class: org_ldk_impl_bindings - * Method: CResult_ChanKeySignerDecodeErrorZ_ok + * Method: CResult_ChannelKeysDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChanKeySignerDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelKeysDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ChanKeySignerDecodeErrorZ_err + * Method: CResult_ChannelKeysDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChanKeySignerDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelKeysDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ChanKeySignerDecodeErrorZ_free + * Method: CResult_ChannelKeysDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChanKeySignerDecodeErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelKeysDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ChanKeySignerDecodeErrorZ_clone + * Method: CResult_ChannelKeysDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChanKeySignerDecodeErrorZ_1clone +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelKeysDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* @@ -2721,370 +4665,450 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1InMemoryChannelKeysDe /* * Class: org_ldk_impl_bindings - * Method: CResult_TxOutAccessErrorZ_ok + * Method: CResult_InMemoryChannelKeysDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TxOutAccessErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1InMemoryChannelKeysDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_TxOutAccessErrorZ_err - * Signature: (Lorg/ldk/enums/LDKAccessError;)J + * Method: CVec_RouteHopZ_free + * Signature: ([J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TxOutAccessErrorZ_1err - (JNIEnv *, jclass, jobject); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1RouteHopZ_1free + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: CResult_TxOutAccessErrorZ_free + * Method: CVec_CVec_RouteHopZZ_free + * Signature: ([[J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1CVec_1RouteHopZZ_1free + (JNIEnv *, jclass, jobjectArray); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_RouteDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RouteDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_RouteDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RouteDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_RouteDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1TxOutAccessErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1RouteDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_TxOutAccessErrorZ_clone + * Method: CResult_RouteDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TxOutAccessErrorZ_1clone +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RouteDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NoneAPIErrorZ_ok - * Signature: ()J + * Method: CVec_RouteHintZ_free + * Signature: ([J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1ok - (JNIEnv *, jclass); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1RouteHintZ_1free + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: CResult_NoneAPIErrorZ_err + * Method: CResult_RouteLightningErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NoneAPIErrorZ_free + * Method: CResult_RouteLightningErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_RouteLightningErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneAPIErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_ChannelDetailsZ_free - * Signature: ([J)V + * Method: CResult_RouteLightningErrorZ_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1ChannelDetailsZ_1free - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NonePaymentSendFailureZ_ok - * Signature: ()J + * Method: CResult_NetAddressu8Z_ok + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1ok - (JNIEnv *, jclass); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NetAddressu8Z_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NonePaymentSendFailureZ_err + * Method: CResult_NetAddressu8Z_err + * Signature: (B)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NetAddressu8Z_1err + (JNIEnv *, jclass, jbyte); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_NetAddressu8Z_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NetAddressu8Z_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_NetAddressu8Z_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NetAddressu8Z_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NonePaymentSendFailureZ_free + * Method: CResult_CResult_NetAddressu8ZDecodeErrorZ_ok + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CResult_1NetAddressu8ZDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CResult_NetAddressu8ZDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CResult_1NetAddressu8ZDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_CResult_NetAddressu8ZDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CResult_1NetAddressu8ZDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NonePaymentSendFailureZ_clone + * Method: CResult_CResult_NetAddressu8ZDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1clone +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CResult_1NetAddressu8ZDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_NetAddressZ_free + * Method: CVec_UpdateAddHTLCZ_free * Signature: ([J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1NetAddressZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateAddHTLCZ_1free (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: CVec_ChannelMonitorZ_free + * Method: CVec_UpdateFulfillHTLCZ_free * Signature: ([J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1ChannelMonitorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateFulfillHTLCZ_1free (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: C2Tuple_BlockHashChannelManagerZ_free - * Signature: (J)V + * Method: CVec_UpdateFailHTLCZ_free + * Signature: ([J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C2Tuple_1BlockHashChannelManagerZ_1free - (JNIEnv *, jclass, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateFailHTLCZ_1free + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: C2Tuple_BlockHashChannelManagerZ_new - * Signature: ([BJ)J + * Method: CVec_UpdateFailMalformedHTLCZ_free + * Signature: ([J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1BlockHashChannelManagerZ_1new - (JNIEnv *, jclass, jbyteArray, jlong); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateFailMalformedHTLCZ_1free + (JNIEnv *, jclass, jlongArray); /* * Class: org_ldk_impl_bindings - * Method: CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok + * Method: CResult_AcceptChannelDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1AcceptChannelDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err + * Method: CResult_AcceptChannelDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1AcceptChannelDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free + * Method: CResult_AcceptChannelDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1C2Tuple_1BlockHashChannelManagerZDecodeErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1AcceptChannelDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NetAddressu8Z_ok + * Method: CResult_AcceptChannelDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NetAddressu8Z_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1AcceptChannelDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NetAddressu8Z_err - * Signature: (B)J + * Method: CResult_AnnouncementSignaturesDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NetAddressu8Z_1err - (JNIEnv *, jclass, jbyte); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1AnnouncementSignaturesDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NetAddressu8Z_free + * Method: CResult_AnnouncementSignaturesDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1AnnouncementSignaturesDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_AnnouncementSignaturesDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NetAddressu8Z_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1AnnouncementSignaturesDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NetAddressu8Z_clone + * Method: CResult_AnnouncementSignaturesDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NetAddressu8Z_1clone +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1AnnouncementSignaturesDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_CResult_NetAddressu8ZDecodeErrorZ_ok + * Method: CResult_ChannelReestablishDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CResult_1NetAddressu8ZDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelReestablishDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_CResult_NetAddressu8ZDecodeErrorZ_err + * Method: CResult_ChannelReestablishDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CResult_1NetAddressu8ZDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelReestablishDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_CResult_NetAddressu8ZDecodeErrorZ_free + * Method: CResult_ChannelReestablishDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CResult_1NetAddressu8ZDecodeErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelReestablishDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_u64Z_free - * Signature: ([J)V + * Method: CResult_ChannelReestablishDecodeErrorZ_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1u64Z_1free - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelReestablishDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_UpdateAddHTLCZ_free - * Signature: ([J)V + * Method: CResult_ClosingSignedDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateAddHTLCZ_1free - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ClosingSignedDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_UpdateFulfillHTLCZ_free - * Signature: ([J)V - */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateFulfillHTLCZ_1free - (JNIEnv *, jclass, jlongArray); + * Method: CResult_ClosingSignedDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ClosingSignedDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_UpdateFailHTLCZ_free - * Signature: ([J)V + * Method: CResult_ClosingSignedDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateFailHTLCZ_1free - (JNIEnv *, jclass, jlongArray); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ClosingSignedDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_UpdateFailMalformedHTLCZ_free - * Signature: ([J)V + * Method: CResult_ClosingSignedDecodeErrorZ_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1UpdateFailMalformedHTLCZ_1free - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ClosingSignedDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_boolLightningErrorZ_ok - * Signature: (Z)J + * Method: CResult_CommitmentSignedDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1ok - (JNIEnv *, jclass, jboolean); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CommitmentSignedDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_boolLightningErrorZ_err + * Method: CResult_CommitmentSignedDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CommitmentSignedDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_boolLightningErrorZ_free + * Method: CResult_CommitmentSignedDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CommitmentSignedDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_boolLightningErrorZ_clone + * Method: CResult_CommitmentSignedDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolLightningErrorZ_1clone +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CommitmentSignedDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free - * Signature: (J)V + * Method: CResult_FundingCreatedDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1FundingCreatedDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new - * Signature: (JJJ)J + * Method: CResult_FundingCreatedDecodeErrorZ_err + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZ_1new - (JNIEnv *, jclass, jlong, jlong, jlong); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1FundingCreatedDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free - * Signature: ([J)V + * Method: CResult_FundingCreatedDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1C3Tuple_1ChannelAnnouncementChannelUpdateChannelUpdateZZ_1free - (JNIEnv *, jclass, jlongArray); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1FundingCreatedDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_NodeAnnouncementZ_free - * Signature: ([J)V + * Method: CResult_FundingCreatedDecodeErrorZ_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1NodeAnnouncementZ_1free - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1FundingCreatedDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NoneLightningErrorZ_ok - * Signature: ()J + * Method: CResult_FundingSignedDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneLightningErrorZ_1ok - (JNIEnv *, jclass); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1FundingSignedDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NoneLightningErrorZ_err + * Method: CResult_FundingSignedDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneLightningErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1FundingSignedDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NoneLightningErrorZ_free + * Method: CResult_FundingSignedDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NoneLightningErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1FundingSignedDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NoneLightningErrorZ_clone + * Method: CResult_FundingSignedDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NoneLightningErrorZ_1clone +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1FundingSignedDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ChannelReestablishDecodeErrorZ_ok + * Method: CResult_FundingLockedDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelReestablishDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1FundingLockedDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ChannelReestablishDecodeErrorZ_err + * Method: CResult_FundingLockedDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelReestablishDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1FundingLockedDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ChannelReestablishDecodeErrorZ_free + * Method: CResult_FundingLockedDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelReestablishDecodeErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1FundingLockedDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_FundingLockedDecodeErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1FundingLockedDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* @@ -3113,690 +5137,714 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1InitDecodeErrorZ_1fre /* * Class: org_ldk_impl_bindings - * Method: CResult_PingDecodeErrorZ_ok + * Method: CResult_InitDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PingDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1InitDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_PingDecodeErrorZ_err + * Method: CResult_OpenChannelDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PingDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1OpenChannelDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_PingDecodeErrorZ_free - * Signature: (J)V + * Method: CResult_OpenChannelDecodeErrorZ_err + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1PingDecodeErrorZ_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1OpenChannelDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_PongDecodeErrorZ_ok - * Signature: (J)J + * Method: CResult_OpenChannelDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PongDecodeErrorZ_1ok +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1OpenChannelDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_PongDecodeErrorZ_err + * Method: CResult_OpenChannelDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PongDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1OpenChannelDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_PongDecodeErrorZ_free - * Signature: (J)V + * Method: CResult_RevokeAndACKDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1PongDecodeErrorZ_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RevokeAndACKDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok + * Method: CResult_RevokeAndACKDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelAnnouncementDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RevokeAndACKDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_UnsignedChannelAnnouncementDecodeErrorZ_err - * Signature: (J)J + * Method: CResult_RevokeAndACKDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelAnnouncementDecodeErrorZ_1err +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1RevokeAndACKDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_UnsignedChannelAnnouncementDecodeErrorZ_free - * Signature: (J)V + * Method: CResult_RevokeAndACKDecodeErrorZ_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelAnnouncementDecodeErrorZ_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RevokeAndACKDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_UnsignedChannelUpdateDecodeErrorZ_ok + * Method: CResult_ShutdownDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelUpdateDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ShutdownDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_UnsignedChannelUpdateDecodeErrorZ_err + * Method: CResult_ShutdownDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelUpdateDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ShutdownDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_UnsignedChannelUpdateDecodeErrorZ_free + * Method: CResult_ShutdownDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelUpdateDecodeErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ShutdownDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ErrorMessageDecodeErrorZ_ok + * Method: CResult_ShutdownDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ErrorMessageDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ShutdownDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ErrorMessageDecodeErrorZ_err + * Method: CResult_UpdateFailHTLCDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ErrorMessageDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFailHTLCDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ErrorMessageDecodeErrorZ_free - * Signature: (J)V + * Method: CResult_UpdateFailHTLCDecodeErrorZ_err + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ErrorMessageDecodeErrorZ_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFailHTLCDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok - * Signature: (J)J + * Method: CResult_UpdateFailHTLCDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedNodeAnnouncementDecodeErrorZ_1ok +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFailHTLCDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_UnsignedNodeAnnouncementDecodeErrorZ_err + * Method: CResult_UpdateFailHTLCDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedNodeAnnouncementDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFailHTLCDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_UnsignedNodeAnnouncementDecodeErrorZ_free - * Signature: (J)V + * Method: CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedNodeAnnouncementDecodeErrorZ_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFailMalformedHTLCDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_QueryShortChannelIdsDecodeErrorZ_ok + * Method: CResult_UpdateFailMalformedHTLCDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1QueryShortChannelIdsDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFailMalformedHTLCDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_QueryShortChannelIdsDecodeErrorZ_err - * Signature: (J)J + * Method: CResult_UpdateFailMalformedHTLCDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1QueryShortChannelIdsDecodeErrorZ_1err +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFailMalformedHTLCDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_QueryShortChannelIdsDecodeErrorZ_free - * Signature: (J)V + * Method: CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1QueryShortChannelIdsDecodeErrorZ_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFailMalformedHTLCDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok + * Method: CResult_UpdateFeeDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyShortChannelIdsEndDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFeeDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ReplyShortChannelIdsEndDecodeErrorZ_err + * Method: CResult_UpdateFeeDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyShortChannelIdsEndDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFeeDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ReplyShortChannelIdsEndDecodeErrorZ_free + * Method: CResult_UpdateFeeDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyShortChannelIdsEndDecodeErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFeeDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_QueryChannelRangeDecodeErrorZ_ok + * Method: CResult_UpdateFeeDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1QueryChannelRangeDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFeeDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_QueryChannelRangeDecodeErrorZ_err + * Method: CResult_UpdateFulfillHTLCDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1QueryChannelRangeDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFulfillHTLCDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_QueryChannelRangeDecodeErrorZ_free - * Signature: (J)V + * Method: CResult_UpdateFulfillHTLCDecodeErrorZ_err + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1QueryChannelRangeDecodeErrorZ_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFulfillHTLCDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ReplyChannelRangeDecodeErrorZ_ok - * Signature: (J)J + * Method: CResult_UpdateFulfillHTLCDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyChannelRangeDecodeErrorZ_1ok +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFulfillHTLCDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ReplyChannelRangeDecodeErrorZ_err + * Method: CResult_UpdateFulfillHTLCDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyChannelRangeDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateFulfillHTLCDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_ReplyChannelRangeDecodeErrorZ_free - * Signature: (J)V + * Method: CResult_UpdateAddHTLCDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyChannelRangeDecodeErrorZ_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateAddHTLCDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_GossipTimestampFilterDecodeErrorZ_ok + * Method: CResult_UpdateAddHTLCDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1GossipTimestampFilterDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateAddHTLCDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_GossipTimestampFilterDecodeErrorZ_err - * Signature: (J)J + * Method: CResult_UpdateAddHTLCDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1GossipTimestampFilterDecodeErrorZ_1err +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateAddHTLCDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_GossipTimestampFilterDecodeErrorZ_free - * Signature: (J)V + * Method: CResult_UpdateAddHTLCDecodeErrorZ_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1GossipTimestampFilterDecodeErrorZ_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UpdateAddHTLCDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_PublicKeyZ_free - * Signature: ([[B)V + * Method: CResult_PingDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1PublicKeyZ_1free - (JNIEnv *, jclass, jobjectArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PingDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_u8Z_free - * Signature: ([B)V + * Method: CResult_PingDecodeErrorZ_err + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1u8Z_1free - (JNIEnv *, jclass, jbyteArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PingDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_CVec_u8ZPeerHandleErrorZ_ok - * Signature: ([B)J + * Method: CResult_PingDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1ok - (JNIEnv *, jclass, jbyteArray); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1PingDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_CVec_u8ZPeerHandleErrorZ_err + * Method: CResult_PingDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PingDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_CVec_u8ZPeerHandleErrorZ_free - * Signature: (J)V + * Method: CResult_PongDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PongDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_CVec_u8ZPeerHandleErrorZ_clone + * Method: CResult_PongDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1u8ZPeerHandleErrorZ_1clone +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PongDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NonePeerHandleErrorZ_ok - * Signature: ()J + * Method: CResult_PongDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1ok - (JNIEnv *, jclass); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1PongDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NonePeerHandleErrorZ_err + * Method: CResult_PongDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PongDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NonePeerHandleErrorZ_free - * Signature: (J)V + * Method: CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelAnnouncementDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NonePeerHandleErrorZ_clone + * Method: CResult_UnsignedChannelAnnouncementDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePeerHandleErrorZ_1clone +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelAnnouncementDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_boolPeerHandleErrorZ_ok - * Signature: (Z)J + * Method: CResult_UnsignedChannelAnnouncementDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1ok - (JNIEnv *, jclass, jboolean); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelAnnouncementDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_boolPeerHandleErrorZ_err + * Method: CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelAnnouncementDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_boolPeerHandleErrorZ_free - * Signature: (J)V + * Method: CResult_ChannelAnnouncementDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelAnnouncementDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_boolPeerHandleErrorZ_clone + * Method: CResult_ChannelAnnouncementDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1boolPeerHandleErrorZ_1clone +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelAnnouncementDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_SecretKeySecpErrorZ_ok - * Signature: ([B)J + * Method: CResult_ChannelAnnouncementDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1SecretKeySecpErrorZ_1ok - (JNIEnv *, jclass, jbyteArray); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelAnnouncementDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_SecretKeySecpErrorZ_err - * Signature: (Lorg/ldk/enums/LDKSecp256k1Error;)J + * Method: CResult_ChannelAnnouncementDecodeErrorZ_clone + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1SecretKeySecpErrorZ_1err - (JNIEnv *, jclass, jobject); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelAnnouncementDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_SecretKeySecpErrorZ_free - * Signature: (J)V + * Method: CResult_UnsignedChannelUpdateDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1SecretKeySecpErrorZ_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelUpdateDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_PublicKeySecpErrorZ_ok - * Signature: ([B)J + * Method: CResult_UnsignedChannelUpdateDecodeErrorZ_err + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PublicKeySecpErrorZ_1ok - (JNIEnv *, jclass, jbyteArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelUpdateDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_PublicKeySecpErrorZ_err - * Signature: (Lorg/ldk/enums/LDKSecp256k1Error;)J + * Method: CResult_UnsignedChannelUpdateDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PublicKeySecpErrorZ_1err - (JNIEnv *, jclass, jobject); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelUpdateDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_PublicKeySecpErrorZ_free - * Signature: (J)V + * Method: CResult_UnsignedChannelUpdateDecodeErrorZ_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1PublicKeySecpErrorZ_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedChannelUpdateDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_TxCreationKeysSecpErrorZ_ok + * Method: CResult_ChannelUpdateDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysSecpErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelUpdateDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_TxCreationKeysSecpErrorZ_err - * Signature: (Lorg/ldk/enums/LDKSecp256k1Error;)J + * Method: CResult_ChannelUpdateDecodeErrorZ_err + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysSecpErrorZ_1err - (JNIEnv *, jclass, jobject); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelUpdateDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_TxCreationKeysSecpErrorZ_free + * Method: CResult_ChannelUpdateDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1TxCreationKeysSecpErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelUpdateDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_TrustedCommitmentTransactionNoneZ_ok + * Method: CResult_ChannelUpdateDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TrustedCommitmentTransactionNoneZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ChannelUpdateDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_TrustedCommitmentTransactionNoneZ_err - * Signature: ()J + * Method: CResult_ErrorMessageDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1TrustedCommitmentTransactionNoneZ_1err - (JNIEnv *, jclass); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ErrorMessageDecodeErrorZ_1ok + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_TrustedCommitmentTransactionNoneZ_free - * Signature: (J)V + * Method: CResult_ErrorMessageDecodeErrorZ_err + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1TrustedCommitmentTransactionNoneZ_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ErrorMessageDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_CVec_SignatureZNoneZ_ok - * Signature: ([[B)J + * Method: CResult_ErrorMessageDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1ok - (JNIEnv *, jclass, jobjectArray); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ErrorMessageDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_CVec_SignatureZNoneZ_err - * Signature: ()J + * Method: CResult_ErrorMessageDecodeErrorZ_clone + * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1err - (JNIEnv *, jclass); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ErrorMessageDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_CVec_SignatureZNoneZ_free - * Signature: (J)V + * Method: CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedNodeAnnouncementDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_CVec_SignatureZNoneZ_clone + * Method: CResult_UnsignedNodeAnnouncementDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1CVec_1SignatureZNoneZ_1clone +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedNodeAnnouncementDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_RouteHopZ_free - * Signature: ([J)V + * Method: CResult_UnsignedNodeAnnouncementDecodeErrorZ_free + * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1RouteHopZ_1free - (JNIEnv *, jclass, jlongArray); +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedNodeAnnouncementDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_CVec_RouteHopZZ_free - * Signature: ([[J)V + * Method: CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1CVec_1RouteHopZZ_1free - (JNIEnv *, jclass, jobjectArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1UnsignedNodeAnnouncementDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_RouteDecodeErrorZ_ok + * Method: CResult_NodeAnnouncementDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RouteDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_RouteDecodeErrorZ_err + * Method: CResult_NodeAnnouncementDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RouteDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_RouteDecodeErrorZ_free + * Method: CResult_NodeAnnouncementDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1RouteDecodeErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CVec_RouteHintZ_free - * Signature: ([J)V + * Method: CResult_NodeAnnouncementDecodeErrorZ_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1RouteHintZ_1free - (JNIEnv *, jclass, jlongArray); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementDecodeErrorZ_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_RouteLightningErrorZ_ok + * Method: CResult_QueryShortChannelIdsDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1QueryShortChannelIdsDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_RouteLightningErrorZ_err + * Method: CResult_QueryShortChannelIdsDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1QueryShortChannelIdsDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_RouteLightningErrorZ_free + * Method: CResult_QueryShortChannelIdsDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1RouteLightningErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1QueryShortChannelIdsDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_RoutingFeesDecodeErrorZ_ok + * Method: CResult_QueryShortChannelIdsDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RoutingFeesDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1QueryShortChannelIdsDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_RoutingFeesDecodeErrorZ_err + * Method: CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1RoutingFeesDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyShortChannelIdsEndDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_RoutingFeesDecodeErrorZ_free + * Method: CResult_ReplyShortChannelIdsEndDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyShortChannelIdsEndDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_ReplyShortChannelIdsEndDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1RoutingFeesDecodeErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyShortChannelIdsEndDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NodeAnnouncementInfoDecodeErrorZ_ok + * Method: CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementInfoDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyShortChannelIdsEndDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NodeAnnouncementInfoDecodeErrorZ_err + * Method: CResult_QueryChannelRangeDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementInfoDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1QueryChannelRangeDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NodeAnnouncementInfoDecodeErrorZ_free + * Method: CResult_QueryChannelRangeDecodeErrorZ_err + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1QueryChannelRangeDecodeErrorZ_1err + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_QueryChannelRangeDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementInfoDecodeErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1QueryChannelRangeDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NodeAnnouncementInfoDecodeErrorZ_clone + * Method: CResult_QueryChannelRangeDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NodeAnnouncementInfoDecodeErrorZ_1clone +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1QueryChannelRangeDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NodeInfoDecodeErrorZ_ok + * Method: CResult_ReplyChannelRangeDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NodeInfoDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyChannelRangeDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NodeInfoDecodeErrorZ_err + * Method: CResult_ReplyChannelRangeDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NodeInfoDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyChannelRangeDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NodeInfoDecodeErrorZ_free + * Method: CResult_ReplyChannelRangeDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NodeInfoDecodeErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyChannelRangeDecodeErrorZ_1free (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NodeInfoDecodeErrorZ_clone + * Method: CResult_ReplyChannelRangeDecodeErrorZ_clone * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NodeInfoDecodeErrorZ_1clone +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1ReplyChannelRangeDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NetworkGraphDecodeErrorZ_ok + * Method: CResult_GossipTimestampFilterDecodeErrorZ_ok * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NetworkGraphDecodeErrorZ_1ok +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1GossipTimestampFilterDecodeErrorZ_1ok (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NetworkGraphDecodeErrorZ_err + * Method: CResult_GossipTimestampFilterDecodeErrorZ_err * Signature: (J)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NetworkGraphDecodeErrorZ_1err +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1GossipTimestampFilterDecodeErrorZ_1err (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CResult_NetworkGraphDecodeErrorZ_free + * Method: CResult_GossipTimestampFilterDecodeErrorZ_free * Signature: (J)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1NetworkGraphDecodeErrorZ_1free +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1GossipTimestampFilterDecodeErrorZ_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: CResult_GossipTimestampFilterDecodeErrorZ_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1GossipTimestampFilterDecodeErrorZ_1clone (JNIEnv *, jclass, jlong); /* @@ -3903,14 +5951,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Logger_1free JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: ChannelHandshakeConfig_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: ChannelHandshakeConfig_get_minimum_depth @@ -3967,6 +6007,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1set_1o JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1new (JNIEnv *, jclass, jint, jshort, jlong); +/* + * Class: org_ldk_impl_bindings + * Method: ChannelHandshakeConfig_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: ChannelHandshakeConfig_default @@ -3983,14 +6031,6 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeConfig_1defau JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: ChannelHandshakeLimits_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: ChannelHandshakeLimits_get_min_funding_satoshis @@ -4159,6 +6199,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1set_1t JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1new (JNIEnv *, jclass, jlong, jlong, jlong, jlong, jshort, jlong, jlong, jint, jboolean, jshort); +/* + * Class: org_ldk_impl_bindings + * Method: ChannelHandshakeLimits_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: ChannelHandshakeLimits_default @@ -4175,14 +6223,6 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelHandshakeLimits_1defau JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: ChannelConfig_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: ChannelConfig_get_fee_proportional_millionths @@ -4239,6 +6279,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1set_1commit_1up JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1new (JNIEnv *, jclass, jint, jboolean, jboolean); +/* + * Class: org_ldk_impl_bindings + * Method: ChannelConfig_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: ChannelConfig_default @@ -4271,14 +6319,6 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelConfig_1read JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UserConfig_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: UserConfig_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UserConfig_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: UserConfig_get_own_channel_config @@ -4335,6 +6375,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UserConfig_1set_1channel_1opti JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UserConfig_1new (JNIEnv *, jclass, jlong, jlong, jlong); +/* + * Class: org_ldk_impl_bindings + * Method: UserConfig_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UserConfig_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: UserConfig_default @@ -4455,14 +6503,6 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChainMonitor_1as_1EventsProvi JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: ChannelMonitorUpdate_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: ChannelMonitorUpdate_get_update_id @@ -4479,6 +6519,14 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1get_1up JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1set_1update_1id (JNIEnv *, jclass, jlong, jlong); +/* + * Class: org_ldk_impl_bindings + * Method: ChannelMonitorUpdate_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelMonitorUpdate_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: ChannelMonitorUpdate_write @@ -4679,14 +6727,6 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_C2Tuple_1BlockHashChannelMoni JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OutPoint_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: OutPoint_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OutPoint_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: OutPoint_get_txid @@ -4724,8 +6764,16 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OutPoint_1set_1index * Method: OutPoint_new * Signature: ([BS)J */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OutPoint_1new - (JNIEnv *, jclass, jbyteArray, jshort); +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OutPoint_1new + (JNIEnv *, jclass, jbyteArray, jshort); + +/* + * Class: org_ldk_impl_bindings + * Method: OutPoint_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OutPoint_1clone + (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings @@ -4815,14 +6863,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_KeysInterface_1free JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: InMemoryChannelKeys_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: InMemoryChannelKeys_get_funding_key @@ -4919,6 +6959,14 @@ JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1get JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1set_1commitment_1seed (JNIEnv *, jclass, jlong, jbyteArray); +/* + * Class: org_ldk_impl_bindings + * Method: InMemoryChannelKeys_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InMemoryChannelKeys_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: InMemoryChannelKeys_new @@ -5047,14 +7095,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelManager_1free JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: ChannelDetails_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: ChannelDetails_get_channel_id @@ -5183,6 +7223,14 @@ JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1get_1is_1l JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1set_1is_1live (JNIEnv *, jclass, jlong, jboolean); +/* + * Class: org_ldk_impl_bindings + * Method: ChannelDetails_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelDetails_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: PaymentSendFailure_free @@ -5535,14 +7583,6 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Init_1clone JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: ErrorMessage_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: ErrorMessage_get_channel_id @@ -5585,18 +7625,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1new /* * Class: org_ldk_impl_bindings - * Method: Ping_free - * Signature: (J)V + * Method: ErrorMessage_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Ping_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ErrorMessage_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: Ping_clone - * Signature: (J)J + * Method: Ping_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Ping_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Ping_1free (JNIEnv *, jclass, jlong); /* @@ -5641,18 +7681,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Ping_1new /* * Class: org_ldk_impl_bindings - * Method: Pong_free - * Signature: (J)V + * Method: Ping_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Pong_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Ping_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: Pong_clone - * Signature: (J)J + * Method: Pong_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Pong_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Pong_1free (JNIEnv *, jclass, jlong); /* @@ -5681,18 +7721,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Pong_1new /* * Class: org_ldk_impl_bindings - * Method: OpenChannel_free - * Signature: (J)V + * Method: Pong_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Pong_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: OpenChannel_clone - * Signature: (J)J + * Method: OpenChannel_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1free (JNIEnv *, jclass, jlong); /* @@ -5985,18 +8025,18 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_OpenChannel_1set_1channel_1fla /* * Class: org_ldk_impl_bindings - * Method: AcceptChannel_free - * Signature: (J)V + * Method: OpenChannel_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_OpenChannel_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: AcceptChannel_clone - * Signature: (J)J + * Method: AcceptChannel_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1free (JNIEnv *, jclass, jlong); /* @@ -6225,18 +8265,18 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1set_1first_1per /* * Class: org_ldk_impl_bindings - * Method: FundingCreated_free - * Signature: (J)V + * Method: AcceptChannel_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AcceptChannel_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: FundingCreated_clone - * Signature: (J)J + * Method: FundingCreated_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingCreated_1free (JNIEnv *, jclass, jlong); /* @@ -6313,18 +8353,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1new /* * Class: org_ldk_impl_bindings - * Method: FundingSigned_free - * Signature: (J)V + * Method: FundingCreated_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingSigned_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingCreated_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: FundingSigned_clone - * Signature: (J)J + * Method: FundingSigned_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingSigned_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingSigned_1free (JNIEnv *, jclass, jlong); /* @@ -6369,18 +8409,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingSigned_1new /* * Class: org_ldk_impl_bindings - * Method: FundingLocked_free - * Signature: (J)V + * Method: FundingSigned_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingLocked_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingSigned_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: FundingLocked_clone - * Signature: (J)J + * Method: FundingLocked_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingLocked_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_FundingLocked_1free (JNIEnv *, jclass, jlong); /* @@ -6425,18 +8465,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingLocked_1new /* * Class: org_ldk_impl_bindings - * Method: Shutdown_free - * Signature: (J)V + * Method: FundingLocked_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Shutdown_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_FundingLocked_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: Shutdown_clone - * Signature: (J)J + * Method: Shutdown_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Shutdown_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Shutdown_1free (JNIEnv *, jclass, jlong); /* @@ -6481,18 +8521,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Shutdown_1new /* * Class: org_ldk_impl_bindings - * Method: ClosingSigned_free - * Signature: (J)V + * Method: Shutdown_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Shutdown_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ClosingSigned_clone - * Signature: (J)J + * Method: ClosingSigned_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1free (JNIEnv *, jclass, jlong); /* @@ -6553,18 +8593,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1new /* * Class: org_ldk_impl_bindings - * Method: UpdateAddHTLC_free - * Signature: (J)V + * Method: ClosingSigned_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ClosingSigned_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: UpdateAddHTLC_clone - * Signature: (J)J + * Method: UpdateAddHTLC_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1free (JNIEnv *, jclass, jlong); /* @@ -6649,18 +8689,18 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1set_1cltv_1expi /* * Class: org_ldk_impl_bindings - * Method: UpdateFulfillHTLC_free - * Signature: (J)V + * Method: UpdateAddHTLC_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateAddHTLC_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: UpdateFulfillHTLC_clone - * Signature: (J)J + * Method: UpdateFulfillHTLC_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1free (JNIEnv *, jclass, jlong); /* @@ -6721,18 +8761,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1new /* * Class: org_ldk_impl_bindings - * Method: UpdateFailHTLC_free - * Signature: (J)V + * Method: UpdateFulfillHTLC_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFulfillHTLC_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: UpdateFailHTLC_clone - * Signature: (J)J + * Method: UpdateFailHTLC_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1free (JNIEnv *, jclass, jlong); /* @@ -6769,18 +8809,18 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1set_1htlc_1id /* * Class: org_ldk_impl_bindings - * Method: UpdateFailMalformedHTLC_free - * Signature: (J)V + * Method: UpdateFailHTLC_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailHTLC_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: UpdateFailMalformedHTLC_clone - * Signature: (J)J + * Method: UpdateFailMalformedHTLC_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1free (JNIEnv *, jclass, jlong); /* @@ -6833,18 +8873,18 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1set_1 /* * Class: org_ldk_impl_bindings - * Method: CommitmentSigned_free - * Signature: (J)V + * Method: UpdateFailMalformedHTLC_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFailMalformedHTLC_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CommitmentSigned_clone - * Signature: (J)J + * Method: CommitmentSigned_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1free (JNIEnv *, jclass, jlong); /* @@ -6897,18 +8937,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1new /* * Class: org_ldk_impl_bindings - * Method: RevokeAndACK_free - * Signature: (J)V + * Method: CommitmentSigned_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentSigned_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: RevokeAndACK_clone - * Signature: (J)J + * Method: RevokeAndACK_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1free (JNIEnv *, jclass, jlong); /* @@ -6969,18 +9009,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1new /* * Class: org_ldk_impl_bindings - * Method: UpdateFee_free - * Signature: (J)V + * Method: RevokeAndACK_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFee_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RevokeAndACK_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: UpdateFee_clone - * Signature: (J)J + * Method: UpdateFee_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFee_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UpdateFee_1free (JNIEnv *, jclass, jlong); /* @@ -7025,18 +9065,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFee_1new /* * Class: org_ldk_impl_bindings - * Method: DataLossProtect_free - * Signature: (J)V + * Method: UpdateFee_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UpdateFee_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: DataLossProtect_clone - * Signature: (J)J + * Method: DataLossProtect_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1free (JNIEnv *, jclass, jlong); /* @@ -7079,6 +9119,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1set_1my_1curr JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1new (JNIEnv *, jclass, jbyteArray, jbyteArray); +/* + * Class: org_ldk_impl_bindings + * Method: DataLossProtect_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: ChannelReestablish_free @@ -7087,14 +9135,6 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DataLossProtect_1new JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: ChannelReestablish_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: ChannelReestablish_get_channel_id @@ -7145,18 +9185,18 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1set_1next_ /* * Class: org_ldk_impl_bindings - * Method: AnnouncementSignatures_free - * Signature: (J)V + * Method: ChannelReestablish_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelReestablish_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: AnnouncementSignatures_clone - * Signature: (J)J + * Method: AnnouncementSignatures_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1free (JNIEnv *, jclass, jlong); /* @@ -7231,6 +9271,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1set_1b JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1new (JNIEnv *, jclass, jbyteArray, jlong, jbyteArray, jbyteArray); +/* + * Class: org_ldk_impl_bindings + * Method: AnnouncementSignatures_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_AnnouncementSignatures_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: NetAddress_free @@ -7271,14 +9319,6 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Result_1read JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: UnsignedNodeAnnouncement_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: UnsignedNodeAnnouncement_get_features @@ -7369,18 +9409,18 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1set_ /* * Class: org_ldk_impl_bindings - * Method: NodeAnnouncement_free - * Signature: (J)V + * Method: UnsignedNodeAnnouncement_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedNodeAnnouncement_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: NodeAnnouncement_clone - * Signature: (J)J + * Method: NodeAnnouncement_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1free (JNIEnv *, jclass, jlong); /* @@ -7425,18 +9465,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1new /* * Class: org_ldk_impl_bindings - * Method: UnsignedChannelAnnouncement_free - * Signature: (J)V + * Method: NodeAnnouncement_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncement_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: UnsignedChannelAnnouncement_clone - * Signature: (J)J + * Method: UnsignedChannelAnnouncement_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1free (JNIEnv *, jclass, jlong); /* @@ -7553,18 +9593,18 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1s /* * Class: org_ldk_impl_bindings - * Method: ChannelAnnouncement_free - * Signature: (J)V + * Method: UnsignedChannelAnnouncement_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelAnnouncement_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelAnnouncement_clone - * Signature: (J)J + * Method: ChannelAnnouncement_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1free (JNIEnv *, jclass, jlong); /* @@ -7657,18 +9697,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1new /* * Class: org_ldk_impl_bindings - * Method: UnsignedChannelUpdate_free - * Signature: (J)V + * Method: ChannelAnnouncement_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelAnnouncement_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: UnsignedChannelUpdate_clone - * Signature: (J)J + * Method: UnsignedChannelUpdate_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1free (JNIEnv *, jclass, jlong); /* @@ -7801,18 +9841,18 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1set_1fe /* * Class: org_ldk_impl_bindings - * Method: ChannelUpdate_free - * Signature: (J)V + * Method: UnsignedChannelUpdate_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_UnsignedChannelUpdate_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ChannelUpdate_clone - * Signature: (J)J + * Method: ChannelUpdate_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1free (JNIEnv *, jclass, jlong); /* @@ -7857,18 +9897,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1new /* * Class: org_ldk_impl_bindings - * Method: QueryChannelRange_free - * Signature: (J)V + * Method: ChannelUpdate_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_QueryChannelRange_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelUpdate_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: QueryChannelRange_clone - * Signature: (J)J + * Method: QueryChannelRange_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_QueryChannelRange_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_QueryChannelRange_1free (JNIEnv *, jclass, jlong); /* @@ -7929,18 +9969,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_QueryChannelRange_1new /* * Class: org_ldk_impl_bindings - * Method: ReplyChannelRange_free - * Signature: (J)V + * Method: QueryChannelRange_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_QueryChannelRange_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ReplyChannelRange_clone - * Signature: (J)J + * Method: ReplyChannelRange_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1free (JNIEnv *, jclass, jlong); /* @@ -7993,18 +10033,18 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1set_1number /* * Class: org_ldk_impl_bindings - * Method: ReplyChannelRange_get_full_information + * Method: ReplyChannelRange_get_sync_complete * Signature: (J)Z */ -JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1get_1full_1information +JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1get_1sync_1complete (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ReplyChannelRange_set_full_information + * Method: ReplyChannelRange_set_sync_complete * Signature: (JZ)V */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1set_1full_1information +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1set_1sync_1complete (JNIEnv *, jclass, jlong, jboolean); /* @@ -8025,18 +10065,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1new /* * Class: org_ldk_impl_bindings - * Method: QueryShortChannelIds_free - * Signature: (J)V + * Method: ReplyChannelRange_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_QueryShortChannelIds_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ReplyChannelRange_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: QueryShortChannelIds_clone - * Signature: (J)J + * Method: QueryShortChannelIds_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_QueryShortChannelIds_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_QueryShortChannelIds_1free (JNIEnv *, jclass, jlong); /* @@ -8073,18 +10113,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_QueryShortChannelIds_1new /* * Class: org_ldk_impl_bindings - * Method: ReplyShortChannelIdsEnd_free - * Signature: (J)V + * Method: QueryShortChannelIds_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyShortChannelIdsEnd_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_QueryShortChannelIds_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: ReplyShortChannelIdsEnd_clone - * Signature: (J)J + * Method: ReplyShortChannelIdsEnd_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ReplyShortChannelIdsEnd_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ReplyShortChannelIdsEnd_1free (JNIEnv *, jclass, jlong); /* @@ -8129,18 +10169,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ReplyShortChannelIdsEnd_1new /* * Class: org_ldk_impl_bindings - * Method: GossipTimestampFilter_free - * Signature: (J)V + * Method: ReplyShortChannelIdsEnd_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_GossipTimestampFilter_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ReplyShortChannelIdsEnd_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: GossipTimestampFilter_clone - * Signature: (J)J + * Method: GossipTimestampFilter_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_GossipTimestampFilter_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_GossipTimestampFilter_1free (JNIEnv *, jclass, jlong); /* @@ -8199,6 +10239,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_GossipTimestampFilter_1set_1ti JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_GossipTimestampFilter_1new (JNIEnv *, jclass, jbyteArray, jint, jint); +/* + * Class: org_ldk_impl_bindings + * Method: GossipTimestampFilter_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_GossipTimestampFilter_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: ErrorAction_free @@ -8223,14 +10271,6 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ErrorAction_1clone JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_LightningError_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: LightningError_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LightningError_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: LightningError_get_err @@ -8273,18 +10313,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LightningError_1new /* * Class: org_ldk_impl_bindings - * Method: CommitmentUpdate_free - * Signature: (J)V + * Method: LightningError_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LightningError_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CommitmentUpdate_clone - * Signature: (J)J + * Method: CommitmentUpdate_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1free (JNIEnv *, jclass, jlong); /* @@ -8359,6 +10399,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1set_1commitm JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1new (JNIEnv *, jclass, jlongArray, jlongArray, jlongArray, jlongArray, jlong, jlong); +/* + * Class: org_ldk_impl_bindings + * Method: CommitmentUpdate_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CommitmentUpdate_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: HTLCFailChannelUpdate_free @@ -8959,14 +11007,6 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_SocketDescriptor_1free JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: PeerHandleError_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: PeerHandleError_get_no_connection_possible @@ -8991,6 +11031,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1set_1no_1conn JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1new (JNIEnv *, jclass, jboolean); +/* + * Class: org_ldk_impl_bindings + * Method: PeerHandleError_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PeerHandleError_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: PeerManager_free @@ -9127,14 +11175,6 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_derive_1public_1revocation_1k JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: TxCreationKeys_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: TxCreationKeys_get_per_commitment_point @@ -9223,6 +11263,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1set_1broadcast JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1new (JNIEnv *, jclass, jbyteArray, jbyteArray, jbyteArray, jbyteArray, jbyteArray); +/* + * Class: org_ldk_impl_bindings + * Method: TxCreationKeys_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: TxCreationKeys_write @@ -9247,14 +11295,6 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TxCreationKeys_1read JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: ChannelPublicKeys_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: ChannelPublicKeys_get_funding_pubkey @@ -9343,6 +11383,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1set_1htlc_1 JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1new (JNIEnv *, jclass, jbyteArray, jbyteArray, jbyteArray, jbyteArray, jbyteArray); +/* + * Class: org_ldk_impl_bindings + * Method: ChannelPublicKeys_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelPublicKeys_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: ChannelPublicKeys_write @@ -9391,14 +11439,6 @@ JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_get_1revokeable_1redeems JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: HTLCOutputInCommitment_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: HTLCOutputInCommitment_get_offered @@ -9463,6 +11503,14 @@ JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1set_1payment_1hash (JNIEnv *, jclass, jlong, jbyteArray); +/* + * Class: org_ldk_impl_bindings + * Method: HTLCOutputInCommitment_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HTLCOutputInCommitment_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: HTLCOutputInCommitment_write @@ -9511,14 +11559,6 @@ JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_build_1htlc_1transaction JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelTransactionParameters_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: ChannelTransactionParameters_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelTransactionParameters_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: ChannelTransactionParameters_get_holder_pubkeys @@ -9609,18 +11649,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelTransactionParameters_ /* * Class: org_ldk_impl_bindings - * Method: CounterpartyChannelTransactionParameters_free - * Signature: (J)V + * Method: ChannelTransactionParameters_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CounterpartyChannelTransactionParameters_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelTransactionParameters_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: CounterpartyChannelTransactionParameters_clone - * Signature: (J)J + * Method: CounterpartyChannelTransactionParameters_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CounterpartyChannelTransactionParameters_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CounterpartyChannelTransactionParameters_1free (JNIEnv *, jclass, jlong); /* @@ -9663,6 +11703,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CounterpartyChannelTransaction JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CounterpartyChannelTransactionParameters_1new (JNIEnv *, jclass, jlong, jshort); +/* + * Class: org_ldk_impl_bindings + * Method: CounterpartyChannelTransactionParameters_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CounterpartyChannelTransactionParameters_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: ChannelTransactionParameters_is_populated @@ -9775,14 +11823,6 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DirectedChannelTransactionPar JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: HolderCommitmentTransaction_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: HolderCommitmentTransaction_get_counterparty_sig @@ -9807,6 +11847,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1s JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1set_1counterparty_1htlc_1sigs (JNIEnv *, jclass, jlong, jobjectArray); +/* + * Class: org_ldk_impl_bindings + * Method: HolderCommitmentTransaction_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: HolderCommitmentTransaction_write @@ -9839,14 +11887,6 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_HolderCommitmentTransaction_1 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_BuiltCommitmentTransaction_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: BuiltCommitmentTransaction_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_BuiltCommitmentTransaction_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: BuiltCommitmentTransaction_get_transaction @@ -9887,6 +11927,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_BuiltCommitmentTransaction_1se JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_BuiltCommitmentTransaction_1new (JNIEnv *, jclass, jbyteArray, jbyteArray); +/* + * Class: org_ldk_impl_bindings + * Method: BuiltCommitmentTransaction_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_BuiltCommitmentTransaction_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: BuiltCommitmentTransaction_write @@ -10047,6 +12095,30 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_TrustedCommitmentTransaction_ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_get_1commitment_1transaction_1number_1obscure_1factor (JNIEnv *, jclass, jbyteArray, jbyteArray, jboolean); +/* + * Class: org_ldk_impl_bindings + * Method: InitFeatures_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InitFeatures_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: NodeFeatures_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeFeatures_1clone + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelFeatures_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelFeatures_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: InitFeatures_free @@ -10073,18 +12145,106 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelFeatures_1free /* * Class: org_ldk_impl_bindings - * Method: RouteHop_free - * Signature: (J)V + * Method: InitFeatures_empty + * Signature: ()J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InitFeatures_1empty + (JNIEnv *, jclass); + +/* + * Class: org_ldk_impl_bindings + * Method: InitFeatures_known + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InitFeatures_1known + (JNIEnv *, jclass); + +/* + * Class: org_ldk_impl_bindings + * Method: NodeFeatures_empty + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeFeatures_1empty + (JNIEnv *, jclass); + +/* + * Class: org_ldk_impl_bindings + * Method: NodeFeatures_known + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeFeatures_1known + (JNIEnv *, jclass); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelFeatures_empty + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelFeatures_1empty + (JNIEnv *, jclass); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelFeatures_known + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelFeatures_1known + (JNIEnv *, jclass); + +/* + * Class: org_ldk_impl_bindings + * Method: InitFeatures_write + * Signature: (J)[B + */ +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_InitFeatures_1write (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: RouteHop_clone - * Signature: (J)J + * Method: NodeFeatures_write + * Signature: (J)[B */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHop_1clone +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_NodeFeatures_1write + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelFeatures_write + * Signature: (J)[B + */ +JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_ChannelFeatures_1write + (JNIEnv *, jclass, jlong); + +/* + * Class: org_ldk_impl_bindings + * Method: InitFeatures_read + * Signature: ([B)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_InitFeatures_1read + (JNIEnv *, jclass, jbyteArray); + +/* + * Class: org_ldk_impl_bindings + * Method: NodeFeatures_read + * Signature: ([B)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeFeatures_1read + (JNIEnv *, jclass, jbyteArray); + +/* + * Class: org_ldk_impl_bindings + * Method: ChannelFeatures_read + * Signature: ([B)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelFeatures_1read + (JNIEnv *, jclass, jbyteArray); + +/* + * Class: org_ldk_impl_bindings + * Method: RouteHop_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHop_1free (JNIEnv *, jclass, jlong); /* @@ -10193,18 +12353,18 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHop_1new /* * Class: org_ldk_impl_bindings - * Method: Route_free - * Signature: (J)V + * Method: RouteHop_clone + * Signature: (J)J */ -JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Route_1free +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHop_1clone (JNIEnv *, jclass, jlong); /* * Class: org_ldk_impl_bindings - * Method: Route_clone - * Signature: (J)J + * Method: Route_free + * Signature: (J)V */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Route_1clone +JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Route_1free (JNIEnv *, jclass, jlong); /* @@ -10223,6 +12383,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Route_1set_1paths JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Route_1new (JNIEnv *, jclass, jobjectArray); +/* + * Class: org_ldk_impl_bindings + * Method: Route_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Route_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: Route_write @@ -10247,14 +12415,6 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_Route_1read JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHint_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: RouteHint_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHint_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: RouteHint_get_src_node_id @@ -10343,6 +12503,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RouteHint_1set_1htlc_1minimum_ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHint_1new (JNIEnv *, jclass, jbyteArray, jlong, jlong, jshort, jlong); +/* + * Class: org_ldk_impl_bindings + * Method: RouteHint_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHint_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: get_route @@ -10431,14 +12599,6 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NetGraphMsgHandler_1as_1Messa JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: DirectionalChannelInfo_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: DirectionalChannelInfo_get_last_update @@ -10535,6 +12695,14 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1get_1 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1set_1last_1update_1message (JNIEnv *, jclass, jlong, jlong); +/* + * Class: org_ldk_impl_bindings + * Method: DirectionalChannelInfo_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_DirectionalChannelInfo_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: DirectionalChannelInfo_write @@ -10679,14 +12847,6 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelInfo_1read JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingFees_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: RoutingFees_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingFees_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: RoutingFees_get_base_msat @@ -10727,6 +12887,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_RoutingFees_1set_1proportional JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingFees_1new (JNIEnv *, jclass, jint, jint); +/* + * Class: org_ldk_impl_bindings + * Method: RoutingFees_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RoutingFees_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: RoutingFees_read @@ -10751,14 +12919,6 @@ JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_RoutingFees_1write JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: NodeAnnouncementInfo_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: NodeAnnouncementInfo_get_features @@ -10855,6 +13015,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1set_1ann JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1new (JNIEnv *, jclass, jlong, jint, jbyteArray, jbyteArray, jlongArray, jlong); +/* + * Class: org_ldk_impl_bindings + * Method: NodeAnnouncementInfo_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: NodeAnnouncementInfo_write @@ -10879,14 +13047,6 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeAnnouncementInfo_1read JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeInfo_1free (JNIEnv *, jclass, jlong); -/* - * Class: org_ldk_impl_bindings - * Method: NodeInfo_clone - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeInfo_1clone - (JNIEnv *, jclass, jlong); - /* * Class: org_ldk_impl_bindings * Method: NodeInfo_set_channels @@ -10935,6 +13095,14 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_NodeInfo_1set_1announcement_1i JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeInfo_1new (JNIEnv *, jclass, jlongArray, jlong, jlong); +/* + * Class: org_ldk_impl_bindings + * Method: NodeInfo_clone + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_NodeInfo_1clone + (JNIEnv *, jclass, jlong); + /* * Class: org_ldk_impl_bindings * Method: NodeInfo_write diff --git a/ts/bindings.c b/ts/bindings.c index 54308555..7570bb2b 100644 --- a/ts/bindings.c +++ b/ts/bindings.c @@ -185,80 +185,527 @@ static inline LDKCVec_u8Z CVec_u8Z_clone(const LDKCVec_u8Z *orig) { memcpy(ret.data, orig->data, sizeof(int8_t) * ret.datalen); return ret; } -uint32_t __attribute__((visibility("default"))) TS_LDKC2Tuple_u64u64Z_new(int64_t a, int64_t b) { - LDKC2Tuple_u64u64Z* ret = MALLOC(sizeof(LDKC2Tuple_u64u64Z), "LDKC2Tuple_u64u64Z"); - ret->a = a; - ret->b = b; +jboolean __attribute__((visibility("default"))) TS_LDKCResult_SecretKeyErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_SecretKeyErrorZ*)arg)->result_ok; +} +int8_tArray __attribute__((visibility("default"))) TS_LDKCResult_SecretKeyErrorZ_get_ok(uint32_t arg) { + LDKCResult_SecretKeyErrorZ *val = (LDKCResult_SecretKeyErrorZ*)(arg & ~1); + CHECK(val->result_ok); + int8_tArray res_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(res_arr + 4), (*val->contents.result).bytes, 32); + return res_arr; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_SecretKeyErrorZ_get_err(uint32_t arg) { + LDKCResult_SecretKeyErrorZ *val = (LDKCResult_SecretKeyErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + uint32_t err_conv = LDKSecp256k1Error_to_js((*val->contents.err)); + return err_conv; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_PublicKeyErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_PublicKeyErrorZ*)arg)->result_ok; +} +int8_tArray __attribute__((visibility("default"))) TS_LDKCResult_PublicKeyErrorZ_get_ok(uint32_t arg) { + LDKCResult_PublicKeyErrorZ *val = (LDKCResult_PublicKeyErrorZ*)(arg & ~1); + CHECK(val->result_ok); + int8_tArray res_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(res_arr + 4), (*val->contents.result).compressed_form, 33); + return res_arr; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_PublicKeyErrorZ_get_err(uint32_t arg) { + LDKCResult_PublicKeyErrorZ *val = (LDKCResult_PublicKeyErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + uint32_t err_conv = LDKSecp256k1Error_to_js((*val->contents.err)); + return err_conv; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_TxCreationKeysDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_TxCreationKeysDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_TxCreationKeysDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_TxCreationKeysDecodeErrorZ *val = (LDKCResult_TxCreationKeysDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKTxCreationKeys res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_TxCreationKeysDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_TxCreationKeysDecodeErrorZ *val = (LDKCResult_TxCreationKeysDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_ChannelPublicKeysDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_ChannelPublicKeysDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelPublicKeysDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_ChannelPublicKeysDecodeErrorZ *val = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKChannelPublicKeys res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelPublicKeysDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_ChannelPublicKeysDecodeErrorZ *val = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_TxCreationKeysErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_TxCreationKeysErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_TxCreationKeysErrorZ_get_ok(uint32_t arg) { + LDKCResult_TxCreationKeysErrorZ *val = (LDKCResult_TxCreationKeysErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKTxCreationKeys res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_TxCreationKeysErrorZ_get_err(uint32_t arg) { + LDKCResult_TxCreationKeysErrorZ *val = (LDKCResult_TxCreationKeysErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + uint32_t err_conv = LDKSecp256k1Error_to_js((*val->contents.err)); + return err_conv; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *val = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKHTLCOutputInCommitment res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *val = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *val = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKCounterpartyChannelTransactionParameters res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *val = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_ChannelTransactionParametersDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_ChannelTransactionParametersDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelTransactionParametersDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_ChannelTransactionParametersDecodeErrorZ *val = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKChannelTransactionParameters res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelTransactionParametersDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_ChannelTransactionParametersDecodeErrorZ *val = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_HolderCommitmentTransactionDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_HolderCommitmentTransactionDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_HolderCommitmentTransactionDecodeErrorZ *val = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKHolderCommitmentTransaction res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_HolderCommitmentTransactionDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_HolderCommitmentTransactionDecodeErrorZ *val = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *val = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKBuiltCommitmentTransaction res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *val = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_CommitmentTransactionDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_CommitmentTransactionDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_CommitmentTransactionDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_CommitmentTransactionDecodeErrorZ *val = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKCommitmentTransaction res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_CommitmentTransactionDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_CommitmentTransactionDecodeErrorZ *val = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_TrustedCommitmentTransactionNoneZ_result_ok(uint32_t arg) { + return ((LDKCResult_TrustedCommitmentTransactionNoneZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_TrustedCommitmentTransactionNoneZ_get_ok(uint32_t arg) { + LDKCResult_TrustedCommitmentTransactionNoneZ *val = (LDKCResult_TrustedCommitmentTransactionNoneZ*)(arg & ~1); + CHECK(val->result_ok); + LDKTrustedCommitmentTransaction res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +void __attribute__((visibility("default"))) TS_LDKCResult_TrustedCommitmentTransactionNoneZ_get_err(uint32_t arg) { + LDKCResult_TrustedCommitmentTransactionNoneZ *val = (LDKCResult_TrustedCommitmentTransactionNoneZ*)(arg & ~1); + CHECK(!val->result_ok); + return *val->contents.err; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_CVec_SignatureZNoneZ_result_ok(uint32_t arg) { + return ((LDKCResult_CVec_SignatureZNoneZ*)arg)->result_ok; +} +ptrArray __attribute__((visibility("default"))) TS_LDKCResult_CVec_SignatureZNoneZ_get_ok(uint32_t arg) { + LDKCResult_CVec_SignatureZNoneZ *val = (LDKCResult_CVec_SignatureZNoneZ*)(arg & ~1); + CHECK(val->result_ok); + LDKCVec_SignatureZ res_var = (*val->contents.result); + ptrArray res_arr = init_arr(res_var.datalen, sizeof(uint32_t), "Native ptrArray Bytes"); + int8_tArray *res_arr_ptr = (int8_tArray*)(res_arr + 4); + for (size_t m = 0; m < res_var.datalen; m++) { + int8_tArray arr_conv_12_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(arr_conv_12_arr + 4), res_var.data[m].compact_form, 64); + res_arr_ptr[m] = arr_conv_12_arr; + } + return res_arr; +} +void __attribute__((visibility("default"))) TS_LDKCResult_CVec_SignatureZNoneZ_get_err(uint32_t arg) { + LDKCResult_CVec_SignatureZNoneZ *val = (LDKCResult_CVec_SignatureZNoneZ*)(arg & ~1); + CHECK(!val->result_ok); + return *val->contents.err; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_CVec_u8ZPeerHandleErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_CVec_u8ZPeerHandleErrorZ*)arg)->result_ok; +} +int8_tArray __attribute__((visibility("default"))) TS_LDKCResult_CVec_u8ZPeerHandleErrorZ_get_ok(uint32_t arg) { + LDKCResult_CVec_u8ZPeerHandleErrorZ *val = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKCVec_u8Z res_var = (*val->contents.result); + int8_tArray res_arr = init_arr(res_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(res_arr + 4), res_var.data, res_var.datalen); + return res_arr; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_CVec_u8ZPeerHandleErrorZ_get_err(uint32_t arg) { + LDKCResult_CVec_u8ZPeerHandleErrorZ *val = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKPeerHandleError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_NonePeerHandleErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_NonePeerHandleErrorZ*)arg)->result_ok; +} +void __attribute__((visibility("default"))) TS_LDKCResult_NonePeerHandleErrorZ_get_ok(uint32_t arg) { + LDKCResult_NonePeerHandleErrorZ *val = (LDKCResult_NonePeerHandleErrorZ*)(arg & ~1); + CHECK(val->result_ok); + return *val->contents.result; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NonePeerHandleErrorZ_get_err(uint32_t arg) { + LDKCResult_NonePeerHandleErrorZ *val = (LDKCResult_NonePeerHandleErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKPeerHandleError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_boolPeerHandleErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_boolPeerHandleErrorZ*)arg)->result_ok; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_boolPeerHandleErrorZ_get_ok(uint32_t arg) { + LDKCResult_boolPeerHandleErrorZ *val = (LDKCResult_boolPeerHandleErrorZ*)(arg & ~1); + CHECK(val->result_ok); + return *val->contents.result; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_boolPeerHandleErrorZ_get_err(uint32_t arg) { + LDKCResult_boolPeerHandleErrorZ *val = (LDKCResult_boolPeerHandleErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKPeerHandleError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_InitFeaturesDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_InitFeaturesDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_InitFeaturesDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_InitFeaturesDecodeErrorZ *val = (LDKCResult_InitFeaturesDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKInitFeatures res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_InitFeaturesDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_InitFeaturesDecodeErrorZ *val = (LDKCResult_InitFeaturesDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_NodeFeaturesDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_NodeFeaturesDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NodeFeaturesDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_NodeFeaturesDecodeErrorZ *val = (LDKCResult_NodeFeaturesDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKNodeFeatures res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NodeFeaturesDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_NodeFeaturesDecodeErrorZ *val = (LDKCResult_NodeFeaturesDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_ChannelFeaturesDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_ChannelFeaturesDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelFeaturesDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_ChannelFeaturesDecodeErrorZ *val = (LDKCResult_ChannelFeaturesDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKChannelFeatures res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelFeaturesDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_ChannelFeaturesDecodeErrorZ *val = (LDKCResult_ChannelFeaturesDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_ChannelConfigDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_ChannelConfigDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelConfigDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_ChannelConfigDecodeErrorZ *val = (LDKCResult_ChannelConfigDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKChannelConfig res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelConfigDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_ChannelConfigDecodeErrorZ *val = (LDKCResult_ChannelConfigDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_boolLightningErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_boolLightningErrorZ*)arg)->result_ok; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_boolLightningErrorZ_get_ok(uint32_t arg) { + LDKCResult_boolLightningErrorZ *val = (LDKCResult_boolLightningErrorZ*)(arg & ~1); + CHECK(val->result_ok); + return *val->contents.result; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_boolLightningErrorZ_get_err(uint32_t arg) { + LDKCResult_boolLightningErrorZ *val = (LDKCResult_boolLightningErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKLightningError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(uint32_t a, uint32_t b, uint32_t c) { + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ"); + LDKChannelAnnouncement a_conv; + a_conv.inner = (void*)(a & (~1)); + a_conv.is_owned = (a & 1) || (a == 0); + a_conv = ChannelAnnouncement_clone(&a_conv); + ret->a = a_conv; + LDKChannelUpdate b_conv; + b_conv.inner = (void*)(b & (~1)); + b_conv.is_owned = (b & 1) || (b == 0); + b_conv = ChannelUpdate_clone(&b_conv); + ret->b = b_conv; + LDKChannelUpdate c_conv; + c_conv.inner = (void*)(c & (~1)); + c_conv.is_owned = (c & 1) || (c == 0); + c_conv = ChannelUpdate_clone(&c_conv); + ret->c = c_conv; return (long)ret; } -int64_t __attribute__((visibility("default"))) TS_LDKC2Tuple_u64u64Z_get_a(uint32_t ptr) { - LDKC2Tuple_u64u64Z *tuple = (LDKC2Tuple_u64u64Z*)(ptr & ~1); - return tuple->a; +uint32_t __attribute__((visibility("default"))) TS_LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(uint32_t ptr) { + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *tuple = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(ptr & ~1); + LDKChannelAnnouncement a_var = tuple->a; + CHECK((((long)a_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&a_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long a_ref = (long)a_var.inner & ~1; + return a_ref; } -int64_t __attribute__((visibility("default"))) TS_LDKC2Tuple_u64u64Z_get_b(uint32_t ptr) { - LDKC2Tuple_u64u64Z *tuple = (LDKC2Tuple_u64u64Z*)(ptr & ~1); - return tuple->b; +uint32_t __attribute__((visibility("default"))) TS_LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(uint32_t ptr) { + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *tuple = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(ptr & ~1); + LDKChannelUpdate b_var = tuple->b; + CHECK((((long)b_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&b_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long b_ref = (long)b_var.inner & ~1; + return b_ref; } -uint32_t __attribute__((visibility("default"))) TS_LDKSpendableOutputDescriptor_ref_from_ptr(uint32_t ptr) { - LDKSpendableOutputDescriptor *obj = (LDKSpendableOutputDescriptor*)ptr; - switch(obj->tag) { - case LDKSpendableOutputDescriptor_StaticOutput: { - LDKOutPoint outpoint_var = obj->static_output.outpoint; - CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long outpoint_ref = (long)outpoint_var.inner & ~1; - long output_ref = ((long)&obj->static_output.output) | 1; - return 0 /* LDKSpendableOutputDescriptor - StaticOutput */; (void) outpoint_ref; (void) (long)output_ref; - } - case LDKSpendableOutputDescriptor_DynamicOutputP2WSH: { - LDKOutPoint outpoint_var = obj->dynamic_output_p2wsh.outpoint; - CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long outpoint_ref = (long)outpoint_var.inner & ~1; - int8_tArray per_commitment_point_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(per_commitment_point_arr + 4), obj->dynamic_output_p2wsh.per_commitment_point.compressed_form, 33); - long output_ref = ((long)&obj->dynamic_output_p2wsh.output) | 1; - long key_derivation_params_ref = (long)(&obj->dynamic_output_p2wsh.key_derivation_params) | 1; - int8_tArray revocation_pubkey_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(revocation_pubkey_arr + 4), obj->dynamic_output_p2wsh.revocation_pubkey.compressed_form, 33); - return 0 /* LDKSpendableOutputDescriptor - DynamicOutputP2WSH */; (void) outpoint_ref; (void) per_commitment_point_arr; (void) obj->dynamic_output_p2wsh.to_self_delay; (void) (long)output_ref; (void) key_derivation_params_ref; (void) revocation_pubkey_arr; - } - case LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment: { - LDKOutPoint outpoint_var = obj->static_output_counterparty_payment.outpoint; - CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long outpoint_ref = (long)outpoint_var.inner & ~1; - long output_ref = ((long)&obj->static_output_counterparty_payment.output) | 1; - long key_derivation_params_ref = (long)(&obj->static_output_counterparty_payment.key_derivation_params) | 1; - return 0 /* LDKSpendableOutputDescriptor - StaticOutputCounterpartyPayment */; (void) outpoint_ref; (void) (long)output_ref; (void) key_derivation_params_ref; +uint32_t __attribute__((visibility("default"))) TS_LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(uint32_t ptr) { + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *tuple = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(ptr & ~1); + LDKChannelUpdate c_var = tuple->c; + CHECK((((long)c_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&c_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long c_ref = (long)c_var.inner & ~1; + return c_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_new(uint32_tArray elems) { + LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ *ret = MALLOC(sizeof(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ), "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ"); + ret->datalen = *((uint32_t*)elems); + if (ret->datalen == 0) { + ret->data = NULL; + } else { + ret->data = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ) * ret->datalen, "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ Data"); + uint32_t *java_elems = (uint32_t*)(elems + 4); + for (size_t i = 0; i < ret->datalen; i++) { + uint32_t arr_elem = java_elems[i]; + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ arr_elem_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(((uint64_t)arr_elem) & ~1); + FREE((void*)arr_elem); + ret->data[i] = arr_elem_conv; } - default: abort(); } + return (long)ret; } -uint32_t __attribute__((visibility("default"))) TS_LDKCVec_SpendableOutputDescriptorZ_new(uint32_tArray elems) { - LDKCVec_SpendableOutputDescriptorZ *ret = MALLOC(sizeof(LDKCVec_SpendableOutputDescriptorZ), "LDKCVec_SpendableOutputDescriptorZ"); +static inline LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_clone(const LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ *orig) { + LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret = { .data = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ) * orig->datalen, "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ clone bytes"), .datalen = orig->datalen }; + for (size_t i = 0; i < ret.datalen; i++) { + ret.data[i] = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(&orig->data[i]); + } + return ret; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCVec_NodeAnnouncementZ_new(uint32_tArray elems) { + LDKCVec_NodeAnnouncementZ *ret = MALLOC(sizeof(LDKCVec_NodeAnnouncementZ), "LDKCVec_NodeAnnouncementZ"); ret->datalen = *((uint32_t*)elems); if (ret->datalen == 0) { ret->data = NULL; } else { - ret->data = MALLOC(sizeof(LDKSpendableOutputDescriptor) * ret->datalen, "LDKCVec_SpendableOutputDescriptorZ Data"); + ret->data = MALLOC(sizeof(LDKNodeAnnouncement) * ret->datalen, "LDKCVec_NodeAnnouncementZ Data"); uint32_t *java_elems = (uint32_t*)(elems + 4); for (size_t i = 0; i < ret->datalen; i++) { uint32_t arr_elem = java_elems[i]; - LDKSpendableOutputDescriptor arr_elem_conv = *(LDKSpendableOutputDescriptor*)(((uint64_t)arr_elem) & ~1); - FREE((void*)arr_elem); + LDKNodeAnnouncement arr_elem_conv; + arr_elem_conv.inner = (void*)(arr_elem & (~1)); + arr_elem_conv.is_owned = (arr_elem & 1) || (arr_elem == 0); + arr_elem_conv = NodeAnnouncement_clone(&arr_elem_conv); ret->data[i] = arr_elem_conv; } } return (long)ret; } -static inline LDKCVec_SpendableOutputDescriptorZ CVec_SpendableOutputDescriptorZ_clone(const LDKCVec_SpendableOutputDescriptorZ *orig) { - LDKCVec_SpendableOutputDescriptorZ ret = { .data = MALLOC(sizeof(LDKSpendableOutputDescriptor) * orig->datalen, "LDKCVec_SpendableOutputDescriptorZ clone bytes"), .datalen = orig->datalen }; +static inline LDKCVec_NodeAnnouncementZ CVec_NodeAnnouncementZ_clone(const LDKCVec_NodeAnnouncementZ *orig) { + LDKCVec_NodeAnnouncementZ ret = { .data = MALLOC(sizeof(LDKNodeAnnouncement) * orig->datalen, "LDKCVec_NodeAnnouncementZ clone bytes"), .datalen = orig->datalen }; for (size_t i = 0; i < ret.datalen; i++) { - ret.data[i] = SpendableOutputDescriptor_clone(&orig->data[i]); + ret.data[i] = NodeAnnouncement_clone(&orig->data[i]); } return ret; } +jboolean __attribute__((visibility("default"))) TS_LDKCResult_NoneLightningErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_NoneLightningErrorZ*)arg)->result_ok; +} +void __attribute__((visibility("default"))) TS_LDKCResult_NoneLightningErrorZ_get_ok(uint32_t arg) { + LDKCResult_NoneLightningErrorZ *val = (LDKCResult_NoneLightningErrorZ*)(arg & ~1); + CHECK(val->result_ok); + return *val->contents.result; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NoneLightningErrorZ_get_err(uint32_t arg) { + LDKCResult_NoneLightningErrorZ *val = (LDKCResult_NoneLightningErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKLightningError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} uint32_t __attribute__((visibility("default"))) TS_LDKErrorAction_ref_from_ptr(uint32_t ptr) { LDKErrorAction *obj = (LDKErrorAction*)ptr; switch(obj->tag) { @@ -485,81 +932,201 @@ static inline LDKCVec_MessageSendEventZ CVec_MessageSendEventZ_clone(const LDKCV } return ret; } -uint32_t __attribute__((visibility("default"))) TS_LDKEvent_ref_from_ptr(uint32_t ptr) { - LDKEvent *obj = (LDKEvent*)ptr; +jboolean __attribute__((visibility("default"))) TS_LDKCResult_DirectionalChannelInfoDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_DirectionalChannelInfoDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_DirectionalChannelInfoDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_DirectionalChannelInfoDecodeErrorZ *val = (LDKCResult_DirectionalChannelInfoDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKDirectionalChannelInfo res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_DirectionalChannelInfoDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_DirectionalChannelInfoDecodeErrorZ *val = (LDKCResult_DirectionalChannelInfoDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_ChannelInfoDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_ChannelInfoDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelInfoDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_ChannelInfoDecodeErrorZ *val = (LDKCResult_ChannelInfoDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKChannelInfo res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelInfoDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_ChannelInfoDecodeErrorZ *val = (LDKCResult_ChannelInfoDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_RoutingFeesDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_RoutingFeesDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_RoutingFeesDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_RoutingFeesDecodeErrorZ *val = (LDKCResult_RoutingFeesDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKRoutingFees res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_RoutingFeesDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_RoutingFeesDecodeErrorZ *val = (LDKCResult_RoutingFeesDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKNetAddress_ref_from_ptr(uint32_t ptr) { + LDKNetAddress *obj = (LDKNetAddress*)ptr; switch(obj->tag) { - case LDKEvent_FundingGenerationReady: { - int8_tArray temporary_channel_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(temporary_channel_id_arr + 4), obj->funding_generation_ready.temporary_channel_id.data, 32); - LDKCVec_u8Z output_script_var = obj->funding_generation_ready.output_script; - int8_tArray output_script_arr = init_arr(output_script_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(output_script_arr + 4), output_script_var.data, output_script_var.datalen); - return 0 /* LDKEvent - FundingGenerationReady */; (void) temporary_channel_id_arr; (void) obj->funding_generation_ready.channel_value_satoshis; (void) output_script_arr; (void) obj->funding_generation_ready.user_channel_id; - } - case LDKEvent_FundingBroadcastSafe: { - LDKOutPoint funding_txo_var = obj->funding_broadcast_safe.funding_txo; - CHECK((((long)funding_txo_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&funding_txo_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long funding_txo_ref = (long)funding_txo_var.inner & ~1; - return 0 /* LDKEvent - FundingBroadcastSafe */; (void) funding_txo_ref; (void) obj->funding_broadcast_safe.user_channel_id; - } - case LDKEvent_PaymentReceived: { - int8_tArray payment_hash_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(payment_hash_arr + 4), obj->payment_received.payment_hash.data, 32); - int8_tArray payment_secret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(payment_secret_arr + 4), obj->payment_received.payment_secret.data, 32); - return 0 /* LDKEvent - PaymentReceived */; (void) payment_hash_arr; (void) payment_secret_arr; (void) obj->payment_received.amt; - } - case LDKEvent_PaymentSent: { - int8_tArray payment_preimage_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(payment_preimage_arr + 4), obj->payment_sent.payment_preimage.data, 32); - return 0 /* LDKEvent - PaymentSent */; (void) payment_preimage_arr; + case LDKNetAddress_IPv4: { + int8_tArray addr_arr = init_arr(4, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(addr_arr + 4), obj->i_pv4.addr.data, 4); + return 0 /* LDKNetAddress - IPv4 */; (void) addr_arr; (void) obj->i_pv4.port; } - case LDKEvent_PaymentFailed: { - int8_tArray payment_hash_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(payment_hash_arr + 4), obj->payment_failed.payment_hash.data, 32); - return 0 /* LDKEvent - PaymentFailed */; (void) payment_hash_arr; (void) obj->payment_failed.rejected_by_dest; + case LDKNetAddress_IPv6: { + int8_tArray addr_arr = init_arr(16, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(addr_arr + 4), obj->i_pv6.addr.data, 16); + return 0 /* LDKNetAddress - IPv6 */; (void) addr_arr; (void) obj->i_pv6.port; } - case LDKEvent_PendingHTLCsForwardable: { - return 0 /* LDKEvent - PendingHTLCsForwardable */; (void) obj->pending_htl_cs_forwardable.time_forwardable; + case LDKNetAddress_OnionV2: { + int8_tArray addr_arr = init_arr(10, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(addr_arr + 4), obj->onion_v2.addr.data, 10); + return 0 /* LDKNetAddress - OnionV2 */; (void) addr_arr; (void) obj->onion_v2.port; } - case LDKEvent_SpendableOutputs: { - LDKCVec_SpendableOutputDescriptorZ outputs_var = obj->spendable_outputs.outputs; - uint32_tArray outputs_arr = init_arr(outputs_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes"); - uint32_t *outputs_arr_ptr = (uint32_t*)(outputs_arr + 4); - for (size_t b = 0; b < outputs_var.datalen; b++) { - long arr_conv_27_ref = ((long)&outputs_var.data[b]) | 1; - outputs_arr_ptr[b] = arr_conv_27_ref; - } - return 0 /* LDKEvent - SpendableOutputs */; (void) outputs_arr; + case LDKNetAddress_OnionV3: { + int8_tArray ed25519_pubkey_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(ed25519_pubkey_arr + 4), obj->onion_v3.ed25519_pubkey.data, 32); + return 0 /* LDKNetAddress - OnionV3 */; (void) ed25519_pubkey_arr; (void) obj->onion_v3.checksum; (void) obj->onion_v3.version; (void) obj->onion_v3.port; } default: abort(); } } -uint32_t __attribute__((visibility("default"))) TS_LDKCVec_EventZ_new(uint32_tArray elems) { - LDKCVec_EventZ *ret = MALLOC(sizeof(LDKCVec_EventZ), "LDKCVec_EventZ"); +uint32_t __attribute__((visibility("default"))) TS_LDKCVec_NetAddressZ_new(uint32_tArray elems) { + LDKCVec_NetAddressZ *ret = MALLOC(sizeof(LDKCVec_NetAddressZ), "LDKCVec_NetAddressZ"); ret->datalen = *((uint32_t*)elems); if (ret->datalen == 0) { ret->data = NULL; } else { - ret->data = MALLOC(sizeof(LDKEvent) * ret->datalen, "LDKCVec_EventZ Data"); + ret->data = MALLOC(sizeof(LDKNetAddress) * ret->datalen, "LDKCVec_NetAddressZ Data"); uint32_t *java_elems = (uint32_t*)(elems + 4); for (size_t i = 0; i < ret->datalen; i++) { uint32_t arr_elem = java_elems[i]; - LDKEvent arr_elem_conv = *(LDKEvent*)(((uint64_t)arr_elem) & ~1); + LDKNetAddress arr_elem_conv = *(LDKNetAddress*)(((uint64_t)arr_elem) & ~1); FREE((void*)arr_elem); ret->data[i] = arr_elem_conv; } } return (long)ret; } -static inline LDKCVec_EventZ CVec_EventZ_clone(const LDKCVec_EventZ *orig) { - LDKCVec_EventZ ret = { .data = MALLOC(sizeof(LDKEvent) * orig->datalen, "LDKCVec_EventZ clone bytes"), .datalen = orig->datalen }; +static inline LDKCVec_NetAddressZ CVec_NetAddressZ_clone(const LDKCVec_NetAddressZ *orig) { + LDKCVec_NetAddressZ ret = { .data = MALLOC(sizeof(LDKNetAddress) * orig->datalen, "LDKCVec_NetAddressZ clone bytes"), .datalen = orig->datalen }; for (size_t i = 0; i < ret.datalen; i++) { - ret.data[i] = Event_clone(&orig->data[i]); + ret.data[i] = NetAddress_clone(&orig->data[i]); + } + return ret; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_NodeAnnouncementInfoDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_NodeAnnouncementInfoDecodeErrorZ *val = (LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKNodeAnnouncementInfo res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_NodeAnnouncementInfoDecodeErrorZ *val = (LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCVec_u64Z_new(int64_tArray elems) { + LDKCVec_u64Z *ret = MALLOC(sizeof(LDKCVec_u64Z), "LDKCVec_u64Z"); + ret->datalen = *((uint32_t*)elems); + if (ret->datalen == 0) { + ret->data = NULL; + } else { + ret->data = MALLOC(sizeof(uint64_t) * ret->datalen, "LDKCVec_u64Z Data"); + int64_t *java_elems = (int64_t*)(elems + 4); + for (size_t i = 0; i < ret->datalen; i++) { + ret->data[i] = java_elems[i]; + } } + return (long)ret; +} +static inline LDKCVec_u64Z CVec_u64Z_clone(const LDKCVec_u64Z *orig) { + LDKCVec_u64Z ret = { .data = MALLOC(sizeof(int64_t) * orig->datalen, "LDKCVec_u64Z clone bytes"), .datalen = orig->datalen }; + memcpy(ret.data, orig->data, sizeof(int64_t) * ret.datalen); return ret; } +jboolean __attribute__((visibility("default"))) TS_LDKCResult_NodeInfoDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_NodeInfoDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NodeInfoDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_NodeInfoDecodeErrorZ *val = (LDKCResult_NodeInfoDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKNodeInfo res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NodeInfoDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_NodeInfoDecodeErrorZ *val = (LDKCResult_NodeInfoDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_NetworkGraphDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_NetworkGraphDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NetworkGraphDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_NetworkGraphDecodeErrorZ *val = (LDKCResult_NetworkGraphDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKNetworkGraph res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NetworkGraphDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_NetworkGraphDecodeErrorZ *val = (LDKCResult_NetworkGraphDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} uint32_t __attribute__((visibility("default"))) TS_LDKC2Tuple_usizeTransactionZ_new(int64_t a, int8_tArray b) { LDKC2Tuple_usizeTransactionZ* ret = MALLOC(sizeof(LDKC2Tuple_usizeTransactionZ), "LDKC2Tuple_usizeTransactionZ"); ret->a = a; @@ -613,32 +1180,202 @@ uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NoneChannelMonito uint32_t err_conv = LDKChannelMonitorUpdateErr_to_js((*val->contents.err)); return err_conv; } -uint32_t __attribute__((visibility("default"))) TS_LDKCVec_MonitorEventZ_new(uint32_tArray elems) { - LDKCVec_MonitorEventZ *ret = MALLOC(sizeof(LDKCVec_MonitorEventZ), "LDKCVec_MonitorEventZ"); +uint32_t __attribute__((visibility("default"))) TS_LDKCVec_MonitorEventZ_new(uint32_tArray elems) { + LDKCVec_MonitorEventZ *ret = MALLOC(sizeof(LDKCVec_MonitorEventZ), "LDKCVec_MonitorEventZ"); + ret->datalen = *((uint32_t*)elems); + if (ret->datalen == 0) { + ret->data = NULL; + } else { + ret->data = MALLOC(sizeof(LDKMonitorEvent) * ret->datalen, "LDKCVec_MonitorEventZ Data"); + uint32_t *java_elems = (uint32_t*)(elems + 4); + for (size_t i = 0; i < ret->datalen; i++) { + uint32_t arr_elem = java_elems[i]; + LDKMonitorEvent arr_elem_conv; + arr_elem_conv.inner = (void*)(arr_elem & (~1)); + arr_elem_conv.is_owned = (arr_elem & 1) || (arr_elem == 0); + arr_elem_conv = MonitorEvent_clone(&arr_elem_conv); + ret->data[i] = arr_elem_conv; + } + } + return (long)ret; +} +static inline LDKCVec_MonitorEventZ CVec_MonitorEventZ_clone(const LDKCVec_MonitorEventZ *orig) { + LDKCVec_MonitorEventZ ret = { .data = MALLOC(sizeof(LDKMonitorEvent) * orig->datalen, "LDKCVec_MonitorEventZ clone bytes"), .datalen = orig->datalen }; + for (size_t i = 0; i < ret.datalen; i++) { + ret.data[i] = MonitorEvent_clone(&orig->data[i]); + } + return ret; +} +uint32_t __attribute__((visibility("default"))) TS_LDKC2Tuple_u64u64Z_new(int64_t a, int64_t b) { + LDKC2Tuple_u64u64Z* ret = MALLOC(sizeof(LDKC2Tuple_u64u64Z), "LDKC2Tuple_u64u64Z"); + ret->a = a; + ret->b = b; + return (long)ret; +} +int64_t __attribute__((visibility("default"))) TS_LDKC2Tuple_u64u64Z_get_a(uint32_t ptr) { + LDKC2Tuple_u64u64Z *tuple = (LDKC2Tuple_u64u64Z*)(ptr & ~1); + return tuple->a; +} +int64_t __attribute__((visibility("default"))) TS_LDKC2Tuple_u64u64Z_get_b(uint32_t ptr) { + LDKC2Tuple_u64u64Z *tuple = (LDKC2Tuple_u64u64Z*)(ptr & ~1); + return tuple->b; +} +uint32_t __attribute__((visibility("default"))) TS_LDKSpendableOutputDescriptor_ref_from_ptr(uint32_t ptr) { + LDKSpendableOutputDescriptor *obj = (LDKSpendableOutputDescriptor*)ptr; + switch(obj->tag) { + case LDKSpendableOutputDescriptor_StaticOutput: { + LDKOutPoint outpoint_var = obj->static_output.outpoint; + CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long outpoint_ref = (long)outpoint_var.inner & ~1; + long output_ref = ((long)&obj->static_output.output) | 1; + return 0 /* LDKSpendableOutputDescriptor - StaticOutput */; (void) outpoint_ref; (void) (long)output_ref; + } + case LDKSpendableOutputDescriptor_DynamicOutputP2WSH: { + LDKOutPoint outpoint_var = obj->dynamic_output_p2wsh.outpoint; + CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long outpoint_ref = (long)outpoint_var.inner & ~1; + int8_tArray per_commitment_point_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(per_commitment_point_arr + 4), obj->dynamic_output_p2wsh.per_commitment_point.compressed_form, 33); + long output_ref = ((long)&obj->dynamic_output_p2wsh.output) | 1; + long key_derivation_params_ref = (long)(&obj->dynamic_output_p2wsh.key_derivation_params) | 1; + int8_tArray revocation_pubkey_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(revocation_pubkey_arr + 4), obj->dynamic_output_p2wsh.revocation_pubkey.compressed_form, 33); + return 0 /* LDKSpendableOutputDescriptor - DynamicOutputP2WSH */; (void) outpoint_ref; (void) per_commitment_point_arr; (void) obj->dynamic_output_p2wsh.to_self_delay; (void) (long)output_ref; (void) key_derivation_params_ref; (void) revocation_pubkey_arr; + } + case LDKSpendableOutputDescriptor_StaticOutputCounterpartyPayment: { + LDKOutPoint outpoint_var = obj->static_output_counterparty_payment.outpoint; + CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long outpoint_ref = (long)outpoint_var.inner & ~1; + long output_ref = ((long)&obj->static_output_counterparty_payment.output) | 1; + long key_derivation_params_ref = (long)(&obj->static_output_counterparty_payment.key_derivation_params) | 1; + return 0 /* LDKSpendableOutputDescriptor - StaticOutputCounterpartyPayment */; (void) outpoint_ref; (void) (long)output_ref; (void) key_derivation_params_ref; + } + default: abort(); + } +} +uint32_t __attribute__((visibility("default"))) TS_LDKCVec_SpendableOutputDescriptorZ_new(uint32_tArray elems) { + LDKCVec_SpendableOutputDescriptorZ *ret = MALLOC(sizeof(LDKCVec_SpendableOutputDescriptorZ), "LDKCVec_SpendableOutputDescriptorZ"); + ret->datalen = *((uint32_t*)elems); + if (ret->datalen == 0) { + ret->data = NULL; + } else { + ret->data = MALLOC(sizeof(LDKSpendableOutputDescriptor) * ret->datalen, "LDKCVec_SpendableOutputDescriptorZ Data"); + uint32_t *java_elems = (uint32_t*)(elems + 4); + for (size_t i = 0; i < ret->datalen; i++) { + uint32_t arr_elem = java_elems[i]; + LDKSpendableOutputDescriptor arr_elem_conv = *(LDKSpendableOutputDescriptor*)(((uint64_t)arr_elem) & ~1); + FREE((void*)arr_elem); + ret->data[i] = arr_elem_conv; + } + } + return (long)ret; +} +static inline LDKCVec_SpendableOutputDescriptorZ CVec_SpendableOutputDescriptorZ_clone(const LDKCVec_SpendableOutputDescriptorZ *orig) { + LDKCVec_SpendableOutputDescriptorZ ret = { .data = MALLOC(sizeof(LDKSpendableOutputDescriptor) * orig->datalen, "LDKCVec_SpendableOutputDescriptorZ clone bytes"), .datalen = orig->datalen }; + for (size_t i = 0; i < ret.datalen; i++) { + ret.data[i] = SpendableOutputDescriptor_clone(&orig->data[i]); + } + return ret; +} +uint32_t __attribute__((visibility("default"))) TS_LDKEvent_ref_from_ptr(uint32_t ptr) { + LDKEvent *obj = (LDKEvent*)ptr; + switch(obj->tag) { + case LDKEvent_FundingGenerationReady: { + int8_tArray temporary_channel_id_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(temporary_channel_id_arr + 4), obj->funding_generation_ready.temporary_channel_id.data, 32); + LDKCVec_u8Z output_script_var = obj->funding_generation_ready.output_script; + int8_tArray output_script_arr = init_arr(output_script_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(output_script_arr + 4), output_script_var.data, output_script_var.datalen); + return 0 /* LDKEvent - FundingGenerationReady */; (void) temporary_channel_id_arr; (void) obj->funding_generation_ready.channel_value_satoshis; (void) output_script_arr; (void) obj->funding_generation_ready.user_channel_id; + } + case LDKEvent_FundingBroadcastSafe: { + LDKOutPoint funding_txo_var = obj->funding_broadcast_safe.funding_txo; + CHECK((((long)funding_txo_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&funding_txo_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long funding_txo_ref = (long)funding_txo_var.inner & ~1; + return 0 /* LDKEvent - FundingBroadcastSafe */; (void) funding_txo_ref; (void) obj->funding_broadcast_safe.user_channel_id; + } + case LDKEvent_PaymentReceived: { + int8_tArray payment_hash_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(payment_hash_arr + 4), obj->payment_received.payment_hash.data, 32); + int8_tArray payment_secret_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(payment_secret_arr + 4), obj->payment_received.payment_secret.data, 32); + return 0 /* LDKEvent - PaymentReceived */; (void) payment_hash_arr; (void) payment_secret_arr; (void) obj->payment_received.amt; + } + case LDKEvent_PaymentSent: { + int8_tArray payment_preimage_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(payment_preimage_arr + 4), obj->payment_sent.payment_preimage.data, 32); + return 0 /* LDKEvent - PaymentSent */; (void) payment_preimage_arr; + } + case LDKEvent_PaymentFailed: { + int8_tArray payment_hash_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(payment_hash_arr + 4), obj->payment_failed.payment_hash.data, 32); + return 0 /* LDKEvent - PaymentFailed */; (void) payment_hash_arr; (void) obj->payment_failed.rejected_by_dest; + } + case LDKEvent_PendingHTLCsForwardable: { + return 0 /* LDKEvent - PendingHTLCsForwardable */; (void) obj->pending_htl_cs_forwardable.time_forwardable; + } + case LDKEvent_SpendableOutputs: { + LDKCVec_SpendableOutputDescriptorZ outputs_var = obj->spendable_outputs.outputs; + uint32_tArray outputs_arr = init_arr(outputs_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes"); + uint32_t *outputs_arr_ptr = (uint32_t*)(outputs_arr + 4); + for (size_t b = 0; b < outputs_var.datalen; b++) { + long arr_conv_27_ref = ((long)&outputs_var.data[b]) | 1; + outputs_arr_ptr[b] = arr_conv_27_ref; + } + return 0 /* LDKEvent - SpendableOutputs */; (void) outputs_arr; + } + default: abort(); + } +} +uint32_t __attribute__((visibility("default"))) TS_LDKCVec_EventZ_new(uint32_tArray elems) { + LDKCVec_EventZ *ret = MALLOC(sizeof(LDKCVec_EventZ), "LDKCVec_EventZ"); ret->datalen = *((uint32_t*)elems); if (ret->datalen == 0) { ret->data = NULL; } else { - ret->data = MALLOC(sizeof(LDKMonitorEvent) * ret->datalen, "LDKCVec_MonitorEventZ Data"); + ret->data = MALLOC(sizeof(LDKEvent) * ret->datalen, "LDKCVec_EventZ Data"); uint32_t *java_elems = (uint32_t*)(elems + 4); for (size_t i = 0; i < ret->datalen; i++) { uint32_t arr_elem = java_elems[i]; - LDKMonitorEvent arr_elem_conv; - arr_elem_conv.inner = (void*)(arr_elem & (~1)); - arr_elem_conv.is_owned = (arr_elem & 1) || (arr_elem == 0); - arr_elem_conv = MonitorEvent_clone(&arr_elem_conv); + LDKEvent arr_elem_conv = *(LDKEvent*)(((uint64_t)arr_elem) & ~1); + FREE((void*)arr_elem); ret->data[i] = arr_elem_conv; } } return (long)ret; } -static inline LDKCVec_MonitorEventZ CVec_MonitorEventZ_clone(const LDKCVec_MonitorEventZ *orig) { - LDKCVec_MonitorEventZ ret = { .data = MALLOC(sizeof(LDKMonitorEvent) * orig->datalen, "LDKCVec_MonitorEventZ clone bytes"), .datalen = orig->datalen }; +static inline LDKCVec_EventZ CVec_EventZ_clone(const LDKCVec_EventZ *orig) { + LDKCVec_EventZ ret = { .data = MALLOC(sizeof(LDKEvent) * orig->datalen, "LDKCVec_EventZ clone bytes"), .datalen = orig->datalen }; for (size_t i = 0; i < ret.datalen; i++) { - ret.data[i] = MonitorEvent_clone(&orig->data[i]); + ret.data[i] = Event_clone(&orig->data[i]); } return ret; } +jboolean __attribute__((visibility("default"))) TS_LDKCResult_OutPointDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_OutPointDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_OutPointDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_OutPointDecodeErrorZ *val = (LDKCResult_OutPointDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKOutPoint res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_OutPointDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_OutPointDecodeErrorZ *val = (LDKCResult_OutPointDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} jboolean __attribute__((visibility("default"))) TS_LDKCResult_ChannelMonitorUpdateDecodeErrorZ_result_ok(uint32_t arg) { return ((LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)arg)->result_ok; } @@ -660,6 +1397,27 @@ uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelMonitorUpd long err_ref = (long)err_var.inner & ~1; return err_ref; } +jboolean __attribute__((visibility("default"))) TS_LDKCResult_HTLCUpdateDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_HTLCUpdateDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_HTLCUpdateDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_HTLCUpdateDecodeErrorZ *val = (LDKCResult_HTLCUpdateDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKHTLCUpdate res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_HTLCUpdateDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_HTLCUpdateDecodeErrorZ *val = (LDKCResult_HTLCUpdateDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} jboolean __attribute__((visibility("default"))) TS_LDKCResult_NoneMonitorUpdateErrorZ_result_ok(uint32_t arg) { return ((LDKCResult_NoneMonitorUpdateErrorZ*)arg)->result_ok; } @@ -1265,64 +2023,6 @@ uint32_t __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_BlockHash long err_ref = (long)err_var.inner & ~1; return err_ref; } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_SpendableOutputDescriptorDecodeErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)arg)->result_ok; -} -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(uint32_t arg) { - LDKCResult_SpendableOutputDescriptorDecodeErrorZ *val = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(arg & ~1); - CHECK(val->result_ok); - long res_ref = ((long)&(*val->contents.result)) | 1; - return res_ref; -} -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_err(uint32_t arg) { - LDKCResult_SpendableOutputDescriptorDecodeErrorZ *val = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; -} -jboolean __attribute__((visibility("default"))) TS_LDKCResult_ChanKeySignerDecodeErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_ChanKeySignerDecodeErrorZ*)arg)->result_ok; -} -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChanKeySignerDecodeErrorZ_get_ok(uint32_t arg) { - LDKCResult_ChanKeySignerDecodeErrorZ *val = (LDKCResult_ChanKeySignerDecodeErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKChannelKeys* ret = MALLOC(sizeof(LDKChannelKeys), "LDKChannelKeys"); - *ret = ChannelKeys_clone(&(*val->contents.result)); - return (long)ret; -} -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChanKeySignerDecodeErrorZ_get_err(uint32_t arg) { - LDKCResult_ChanKeySignerDecodeErrorZ *val = (LDKCResult_ChanKeySignerDecodeErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; -} -jboolean __attribute__((visibility("default"))) TS_LDKCResult_InMemoryChannelKeysDecodeErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_InMemoryChannelKeysDecodeErrorZ*)arg)->result_ok; -} -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_InMemoryChannelKeysDecodeErrorZ_get_ok(uint32_t arg) { - LDKCResult_InMemoryChannelKeysDecodeErrorZ *val = (LDKCResult_InMemoryChannelKeysDecodeErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKInMemoryChannelKeys res_var = (*val->contents.result); - CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long res_ref = (long)res_var.inner & ~1; - return res_ref; -} -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_InMemoryChannelKeysDecodeErrorZ_get_err(uint32_t arg) { - LDKCResult_InMemoryChannelKeysDecodeErrorZ *val = (LDKCResult_InMemoryChannelKeysDecodeErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; -} jboolean __attribute__((visibility("default"))) TS_LDKCResult_TxOutAccessErrorZ_result_ok(uint32_t arg) { return ((LDKCResult_TxOutAccessErrorZ*)arg)->result_ok; } @@ -1427,56 +2127,6 @@ uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NonePaymentSendFa long err_ref = (long)err_var.inner & ~1; return err_ref; } -uint32_t __attribute__((visibility("default"))) TS_LDKNetAddress_ref_from_ptr(uint32_t ptr) { - LDKNetAddress *obj = (LDKNetAddress*)ptr; - switch(obj->tag) { - case LDKNetAddress_IPv4: { - int8_tArray addr_arr = init_arr(4, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(addr_arr + 4), obj->i_pv4.addr.data, 4); - return 0 /* LDKNetAddress - IPv4 */; (void) addr_arr; (void) obj->i_pv4.port; - } - case LDKNetAddress_IPv6: { - int8_tArray addr_arr = init_arr(16, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(addr_arr + 4), obj->i_pv6.addr.data, 16); - return 0 /* LDKNetAddress - IPv6 */; (void) addr_arr; (void) obj->i_pv6.port; - } - case LDKNetAddress_OnionV2: { - int8_tArray addr_arr = init_arr(10, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(addr_arr + 4), obj->onion_v2.addr.data, 10); - return 0 /* LDKNetAddress - OnionV2 */; (void) addr_arr; (void) obj->onion_v2.port; - } - case LDKNetAddress_OnionV3: { - int8_tArray ed25519_pubkey_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(ed25519_pubkey_arr + 4), obj->onion_v3.ed25519_pubkey.data, 32); - return 0 /* LDKNetAddress - OnionV3 */; (void) ed25519_pubkey_arr; (void) obj->onion_v3.checksum; (void) obj->onion_v3.version; (void) obj->onion_v3.port; - } - default: abort(); - } -} -uint32_t __attribute__((visibility("default"))) TS_LDKCVec_NetAddressZ_new(uint32_tArray elems) { - LDKCVec_NetAddressZ *ret = MALLOC(sizeof(LDKCVec_NetAddressZ), "LDKCVec_NetAddressZ"); - ret->datalen = *((uint32_t*)elems); - if (ret->datalen == 0) { - ret->data = NULL; - } else { - ret->data = MALLOC(sizeof(LDKNetAddress) * ret->datalen, "LDKCVec_NetAddressZ Data"); - uint32_t *java_elems = (uint32_t*)(elems + 4); - for (size_t i = 0; i < ret->datalen; i++) { - uint32_t arr_elem = java_elems[i]; - LDKNetAddress arr_elem_conv = *(LDKNetAddress*)(((uint64_t)arr_elem) & ~1); - FREE((void*)arr_elem); - ret->data[i] = arr_elem_conv; - } - } - return (long)ret; -} -static inline LDKCVec_NetAddressZ CVec_NetAddressZ_clone(const LDKCVec_NetAddressZ *orig) { - LDKCVec_NetAddressZ ret = { .data = MALLOC(sizeof(LDKNetAddress) * orig->datalen, "LDKCVec_NetAddressZ clone bytes"), .datalen = orig->datalen }; - for (size_t i = 0; i < ret.datalen; i++) { - ret.data[i] = NetAddress_clone(&orig->data[i]); - } - return ret; -} uint32_t __attribute__((visibility("default"))) TS_LDKCVec_ChannelMonitorZ_new(uint32_tArray elems) { LDKCVec_ChannelMonitorZ *ret = MALLOC(sizeof(LDKCVec_ChannelMonitorZ), "LDKCVec_ChannelMonitorZ"); ret->datalen = *((uint32_t*)elems); @@ -1704,6 +2354,25 @@ void __attribute__((visibility("default"))) TS_BroadcasterInterface_broadcast_t (this_arg_conv->broadcast_transaction)(this_arg_conv->this_arg, tx_ref); } +jboolean __attribute__((visibility("default"))) TS_LDKCResult_ChannelKeysDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_ChannelKeysDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelKeysDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_ChannelKeysDecodeErrorZ *val = (LDKCResult_ChannelKeysDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKChannelKeys* ret = MALLOC(sizeof(LDKChannelKeys), "LDKChannelKeys"); + *ret = ChannelKeys_clone(&(*val->contents.result)); + return (long)ret; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelKeysDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_ChannelKeysDecodeErrorZ *val = (LDKCResult_ChannelKeysDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} typedef struct LDKKeysInterface_JCalls { atomic_size_t refcnt; uint32_t get_node_secret_meth; @@ -1765,14 +2434,14 @@ LDKThirtyTwoBytes get_secure_random_bytes_jcall(const void* this_arg) { memcpy(arg_ref.data, (uint8_t*)(arg + 4), 32); return arg_ref; } -LDKCResult_ChanKeySignerDecodeErrorZ read_chan_signer_jcall(const void* this_arg, LDKu8slice reader) { +LDKCResult_ChannelKeysDecodeErrorZ read_chan_signer_jcall(const void* this_arg, LDKu8slice reader) { LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg; LDKu8slice reader_var = reader; int8_tArray reader_arr = init_arr(reader_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes"); memcpy((uint8_t*)(reader_arr + 4), reader_var.data, reader_var.datalen); - LDKCResult_ChanKeySignerDecodeErrorZ* ret = (LDKCResult_ChanKeySignerDecodeErrorZ*)js_invoke_function_1(j_calls->read_chan_signer_meth, reader_arr); - LDKCResult_ChanKeySignerDecodeErrorZ ret_conv = *(LDKCResult_ChanKeySignerDecodeErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_ChanKeySignerDecodeErrorZ_clone((LDKCResult_ChanKeySignerDecodeErrorZ*)ret); + LDKCResult_ChannelKeysDecodeErrorZ* ret = (LDKCResult_ChannelKeysDecodeErrorZ*)js_invoke_function_1(j_calls->read_chan_signer_meth, reader_arr); + LDKCResult_ChannelKeysDecodeErrorZ ret_conv = *(LDKCResult_ChannelKeysDecodeErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_ChannelKeysDecodeErrorZ_clone((LDKCResult_ChannelKeysDecodeErrorZ*)ret); return ret_conv; } static void* LDKKeysInterface_JCalls_clone(const void* this_arg) { @@ -1844,7 +2513,7 @@ uint32_t __attribute__((visibility("default"))) TS_KeysInterface_read_chan_sign LDKu8slice reader_ref; reader_ref.datalen = *((uint32_t*)reader); reader_ref.data = (int8_t*)(reader + 4); - LDKCResult_ChanKeySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChanKeySignerDecodeErrorZ), "LDKCResult_ChanKeySignerDecodeErrorZ"); + LDKCResult_ChannelKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelKeysDecodeErrorZ), "LDKCResult_ChannelKeysDecodeErrorZ"); *ret_conv = (this_arg_conv->read_chan_signer)(this_arg_conv->this_arg, reader_ref); return (long)ret_conv; } @@ -1946,31 +2615,124 @@ uint32_t __attribute__((visibility("default"))) TS_LDKC2Tuple_BlockHashChannelM ret->b = b_conv; return (long)ret; } -int8_tArray __attribute__((visibility("default"))) TS_LDKC2Tuple_BlockHashChannelManagerZ_get_a(uint32_t ptr) { - LDKC2Tuple_BlockHashChannelManagerZ *tuple = (LDKC2Tuple_BlockHashChannelManagerZ*)(ptr & ~1); - int8_tArray a_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(a_arr + 4), tuple->a.data, 32); - return a_arr; +int8_tArray __attribute__((visibility("default"))) TS_LDKC2Tuple_BlockHashChannelManagerZ_get_a(uint32_t ptr) { + LDKC2Tuple_BlockHashChannelManagerZ *tuple = (LDKC2Tuple_BlockHashChannelManagerZ*)(ptr & ~1); + int8_tArray a_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(a_arr + 4), tuple->a.data, 32); + return a_arr; +} +uint32_t __attribute__((visibility("default"))) TS_LDKC2Tuple_BlockHashChannelManagerZ_get_b(uint32_t ptr) { + LDKC2Tuple_BlockHashChannelManagerZ *tuple = (LDKC2Tuple_BlockHashChannelManagerZ*)(ptr & ~1); + LDKChannelManager b_var = tuple->b; + CHECK((((long)b_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&b_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long b_ref = (long)b_var.inner & ~1; + return b_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *val = (LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + long res_ref = (long)(&(*val->contents.result)) | 1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *val = (LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_SpendableOutputDescriptorDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_SpendableOutputDescriptorDecodeErrorZ *val = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + long res_ref = ((long)&(*val->contents.result)) | 1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_SpendableOutputDescriptorDecodeErrorZ *val = (LDKCResult_SpendableOutputDescriptorDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_InMemoryChannelKeysDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_InMemoryChannelKeysDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_InMemoryChannelKeysDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_InMemoryChannelKeysDecodeErrorZ *val = (LDKCResult_InMemoryChannelKeysDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKInMemoryChannelKeys res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_InMemoryChannelKeysDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_InMemoryChannelKeysDecodeErrorZ *val = (LDKCResult_InMemoryChannelKeysDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCVec_RouteHopZ_new(uint32_tArray elems) { + LDKCVec_RouteHopZ *ret = MALLOC(sizeof(LDKCVec_RouteHopZ), "LDKCVec_RouteHopZ"); + ret->datalen = *((uint32_t*)elems); + if (ret->datalen == 0) { + ret->data = NULL; + } else { + ret->data = MALLOC(sizeof(LDKRouteHop) * ret->datalen, "LDKCVec_RouteHopZ Data"); + uint32_t *java_elems = (uint32_t*)(elems + 4); + for (size_t i = 0; i < ret->datalen; i++) { + uint32_t arr_elem = java_elems[i]; + LDKRouteHop arr_elem_conv; + arr_elem_conv.inner = (void*)(arr_elem & (~1)); + arr_elem_conv.is_owned = (arr_elem & 1) || (arr_elem == 0); + arr_elem_conv = RouteHop_clone(&arr_elem_conv); + ret->data[i] = arr_elem_conv; + } + } + return (long)ret; +} +static inline LDKCVec_RouteHopZ CVec_RouteHopZ_clone(const LDKCVec_RouteHopZ *orig) { + LDKCVec_RouteHopZ ret = { .data = MALLOC(sizeof(LDKRouteHop) * orig->datalen, "LDKCVec_RouteHopZ clone bytes"), .datalen = orig->datalen }; + for (size_t i = 0; i < ret.datalen; i++) { + ret.data[i] = RouteHop_clone(&orig->data[i]); + } + return ret; } -uint32_t __attribute__((visibility("default"))) TS_LDKC2Tuple_BlockHashChannelManagerZ_get_b(uint32_t ptr) { - LDKC2Tuple_BlockHashChannelManagerZ *tuple = (LDKC2Tuple_BlockHashChannelManagerZ*)(ptr & ~1); - LDKChannelManager b_var = tuple->b; - CHECK((((long)b_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&b_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long b_ref = (long)b_var.inner & ~1; - return b_ref; +static inline LDKCVec_CVec_RouteHopZZ CVec_CVec_RouteHopZZ_clone(const LDKCVec_CVec_RouteHopZZ *orig) { + LDKCVec_CVec_RouteHopZZ ret = { .data = MALLOC(sizeof(LDKCVec_RouteHopZ) * orig->datalen, "LDKCVec_CVec_RouteHopZZ clone bytes"), .datalen = orig->datalen }; + for (size_t i = 0; i < ret.datalen; i++) { + ret.data[i] = CVec_RouteHopZ_clone(&orig->data[i]); + } + return ret; } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)arg)->result_ok; +jboolean __attribute__((visibility("default"))) TS_LDKCResult_RouteDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_RouteDecodeErrorZ*)arg)->result_ok; } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(uint32_t arg) { - LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *val = (LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(arg & ~1); +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_RouteDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_RouteDecodeErrorZ *val = (LDKCResult_RouteDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - long res_ref = (long)(&(*val->contents.result)) | 1; + LDKRoute res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; return res_ref; } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(uint32_t arg) { - LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *val = (LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(arg & ~1); +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_RouteDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_RouteDecodeErrorZ *val = (LDKCResult_RouteDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -1978,6 +2740,53 @@ uint32_t __attribute__((visibility("default"))) TS_LDKCResult_C2Tuple_BlockHash long err_ref = (long)err_var.inner & ~1; return err_ref; } +uint32_t __attribute__((visibility("default"))) TS_LDKCVec_RouteHintZ_new(uint32_tArray elems) { + LDKCVec_RouteHintZ *ret = MALLOC(sizeof(LDKCVec_RouteHintZ), "LDKCVec_RouteHintZ"); + ret->datalen = *((uint32_t*)elems); + if (ret->datalen == 0) { + ret->data = NULL; + } else { + ret->data = MALLOC(sizeof(LDKRouteHint) * ret->datalen, "LDKCVec_RouteHintZ Data"); + uint32_t *java_elems = (uint32_t*)(elems + 4); + for (size_t i = 0; i < ret->datalen; i++) { + uint32_t arr_elem = java_elems[i]; + LDKRouteHint arr_elem_conv; + arr_elem_conv.inner = (void*)(arr_elem & (~1)); + arr_elem_conv.is_owned = (arr_elem & 1) || (arr_elem == 0); + arr_elem_conv = RouteHint_clone(&arr_elem_conv); + ret->data[i] = arr_elem_conv; + } + } + return (long)ret; +} +static inline LDKCVec_RouteHintZ CVec_RouteHintZ_clone(const LDKCVec_RouteHintZ *orig) { + LDKCVec_RouteHintZ ret = { .data = MALLOC(sizeof(LDKRouteHint) * orig->datalen, "LDKCVec_RouteHintZ clone bytes"), .datalen = orig->datalen }; + for (size_t i = 0; i < ret.datalen; i++) { + ret.data[i] = RouteHint_clone(&orig->data[i]); + } + return ret; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_RouteLightningErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_RouteLightningErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_RouteLightningErrorZ_get_ok(uint32_t arg) { + LDKCResult_RouteLightningErrorZ *val = (LDKCResult_RouteLightningErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKRoute res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_RouteLightningErrorZ_get_err(uint32_t arg) { + LDKCResult_RouteLightningErrorZ *val = (LDKCResult_RouteLightningErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKLightningError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} jboolean __attribute__((visibility("default"))) TS_LDKCResult_NetAddressu8Z_result_ok(uint32_t arg) { return ((LDKCResult_NetAddressu8Z*)arg)->result_ok; } @@ -2012,25 +2821,6 @@ uint32_t __attribute__((visibility("default"))) TS_LDKCResult_CResult_NetAddres long err_ref = (long)err_var.inner & ~1; return err_ref; } -uint32_t __attribute__((visibility("default"))) TS_LDKCVec_u64Z_new(int64_tArray elems) { - LDKCVec_u64Z *ret = MALLOC(sizeof(LDKCVec_u64Z), "LDKCVec_u64Z"); - ret->datalen = *((uint32_t*)elems); - if (ret->datalen == 0) { - ret->data = NULL; - } else { - ret->data = MALLOC(sizeof(uint64_t) * ret->datalen, "LDKCVec_u64Z Data"); - int64_t *java_elems = (int64_t*)(elems + 4); - for (size_t i = 0; i < ret->datalen; i++) { - ret->data[i] = java_elems[i]; - } - } - return (long)ret; -} -static inline LDKCVec_u64Z CVec_u64Z_clone(const LDKCVec_u64Z *orig) { - LDKCVec_u64Z ret = { .data = MALLOC(sizeof(int64_t) * orig->datalen, "LDKCVec_u64Z clone bytes"), .datalen = orig->datalen }; - memcpy(ret.data, orig->data, sizeof(int64_t) * ret.datalen); - return ret; -} uint32_t __attribute__((visibility("default"))) TS_LDKCVec_UpdateAddHTLCZ_new(uint32_tArray elems) { LDKCVec_UpdateAddHTLCZ *ret = MALLOC(sizeof(LDKCVec_UpdateAddHTLCZ), "LDKCVec_UpdateAddHTLCZ"); ret->datalen = *((uint32_t*)elems); @@ -2128,147 +2918,342 @@ uint32_t __attribute__((visibility("default"))) TS_LDKCVec_UpdateFailMalformedH } return (long)ret; } -static inline LDKCVec_UpdateFailMalformedHTLCZ CVec_UpdateFailMalformedHTLCZ_clone(const LDKCVec_UpdateFailMalformedHTLCZ *orig) { - LDKCVec_UpdateFailMalformedHTLCZ ret = { .data = MALLOC(sizeof(LDKUpdateFailMalformedHTLC) * orig->datalen, "LDKCVec_UpdateFailMalformedHTLCZ clone bytes"), .datalen = orig->datalen }; - for (size_t i = 0; i < ret.datalen; i++) { - ret.data[i] = UpdateFailMalformedHTLC_clone(&orig->data[i]); - } - return ret; +static inline LDKCVec_UpdateFailMalformedHTLCZ CVec_UpdateFailMalformedHTLCZ_clone(const LDKCVec_UpdateFailMalformedHTLCZ *orig) { + LDKCVec_UpdateFailMalformedHTLCZ ret = { .data = MALLOC(sizeof(LDKUpdateFailMalformedHTLC) * orig->datalen, "LDKCVec_UpdateFailMalformedHTLCZ clone bytes"), .datalen = orig->datalen }; + for (size_t i = 0; i < ret.datalen; i++) { + ret.data[i] = UpdateFailMalformedHTLC_clone(&orig->data[i]); + } + return ret; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_AcceptChannelDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_AcceptChannelDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_AcceptChannelDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_AcceptChannelDecodeErrorZ *val = (LDKCResult_AcceptChannelDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKAcceptChannel res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_AcceptChannelDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_AcceptChannelDecodeErrorZ *val = (LDKCResult_AcceptChannelDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_AnnouncementSignaturesDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_AnnouncementSignaturesDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_AnnouncementSignaturesDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_AnnouncementSignaturesDecodeErrorZ *val = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKAnnouncementSignatures res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_AnnouncementSignaturesDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_AnnouncementSignaturesDecodeErrorZ *val = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_ChannelReestablishDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_ChannelReestablishDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelReestablishDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_ChannelReestablishDecodeErrorZ *val = (LDKCResult_ChannelReestablishDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKChannelReestablish res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelReestablishDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_ChannelReestablishDecodeErrorZ *val = (LDKCResult_ChannelReestablishDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_ClosingSignedDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_ClosingSignedDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ClosingSignedDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_ClosingSignedDecodeErrorZ *val = (LDKCResult_ClosingSignedDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKClosingSigned res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ClosingSignedDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_ClosingSignedDecodeErrorZ *val = (LDKCResult_ClosingSignedDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_CommitmentSignedDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_CommitmentSignedDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_CommitmentSignedDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_CommitmentSignedDecodeErrorZ *val = (LDKCResult_CommitmentSignedDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKCommitmentSigned res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_CommitmentSignedDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_CommitmentSignedDecodeErrorZ *val = (LDKCResult_CommitmentSignedDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_FundingCreatedDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_FundingCreatedDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_FundingCreatedDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_FundingCreatedDecodeErrorZ *val = (LDKCResult_FundingCreatedDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKFundingCreated res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_FundingCreatedDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_FundingCreatedDecodeErrorZ *val = (LDKCResult_FundingCreatedDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_FundingSignedDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_FundingSignedDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_FundingSignedDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_FundingSignedDecodeErrorZ *val = (LDKCResult_FundingSignedDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKFundingSigned res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_FundingSignedDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_FundingSignedDecodeErrorZ *val = (LDKCResult_FundingSignedDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_FundingLockedDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_FundingLockedDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_FundingLockedDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_FundingLockedDecodeErrorZ *val = (LDKCResult_FundingLockedDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKFundingLocked res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_FundingLockedDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_FundingLockedDecodeErrorZ *val = (LDKCResult_FundingLockedDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_InitDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_InitDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_InitDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_InitDecodeErrorZ *val = (LDKCResult_InitDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKInit res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_InitDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_InitDecodeErrorZ *val = (LDKCResult_InitDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_OpenChannelDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_OpenChannelDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_OpenChannelDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_OpenChannelDecodeErrorZ *val = (LDKCResult_OpenChannelDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKOpenChannel res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_boolLightningErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_boolLightningErrorZ*)arg)->result_ok; +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_OpenChannelDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_OpenChannelDecodeErrorZ *val = (LDKCResult_OpenChannelDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_boolLightningErrorZ_get_ok(uint32_t arg) { - LDKCResult_boolLightningErrorZ *val = (LDKCResult_boolLightningErrorZ*)(arg & ~1); +jboolean __attribute__((visibility("default"))) TS_LDKCResult_RevokeAndACKDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_RevokeAndACKDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_RevokeAndACKDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_RevokeAndACKDecodeErrorZ *val = (LDKCResult_RevokeAndACKDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - return *val->contents.result; + LDKRevokeAndACK res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_boolLightningErrorZ_get_err(uint32_t arg) { - LDKCResult_boolLightningErrorZ *val = (LDKCResult_boolLightningErrorZ*)(arg & ~1); +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_RevokeAndACKDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_RevokeAndACKDecodeErrorZ *val = (LDKCResult_RevokeAndACKDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); - LDKLightningError err_var = (*val->contents.err); + LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long err_ref = (long)err_var.inner & ~1; return err_ref; } -uint32_t __attribute__((visibility("default"))) TS_LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(uint32_t a, uint32_t b, uint32_t c) { - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ"); - LDKChannelAnnouncement a_conv; - a_conv.inner = (void*)(a & (~1)); - a_conv.is_owned = (a & 1) || (a == 0); - a_conv = ChannelAnnouncement_clone(&a_conv); - ret->a = a_conv; - LDKChannelUpdate b_conv; - b_conv.inner = (void*)(b & (~1)); - b_conv.is_owned = (b & 1) || (b == 0); - b_conv = ChannelUpdate_clone(&b_conv); - ret->b = b_conv; - LDKChannelUpdate c_conv; - c_conv.inner = (void*)(c & (~1)); - c_conv.is_owned = (c & 1) || (c == 0); - c_conv = ChannelUpdate_clone(&c_conv); - ret->c = c_conv; - return (long)ret; +jboolean __attribute__((visibility("default"))) TS_LDKCResult_ShutdownDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_ShutdownDecodeErrorZ*)arg)->result_ok; } -uint32_t __attribute__((visibility("default"))) TS_LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(uint32_t ptr) { - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *tuple = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(ptr & ~1); - LDKChannelAnnouncement a_var = tuple->a; - CHECK((((long)a_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&a_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long a_ref = (long)a_var.inner & ~1; - return a_ref; +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ShutdownDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_ShutdownDecodeErrorZ *val = (LDKCResult_ShutdownDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKShutdown res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -uint32_t __attribute__((visibility("default"))) TS_LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(uint32_t ptr) { - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *tuple = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(ptr & ~1); - LDKChannelUpdate b_var = tuple->b; - CHECK((((long)b_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&b_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long b_ref = (long)b_var.inner & ~1; - return b_ref; +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ShutdownDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_ShutdownDecodeErrorZ *val = (LDKCResult_ShutdownDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; } -uint32_t __attribute__((visibility("default"))) TS_LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(uint32_t ptr) { - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *tuple = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(ptr & ~1); - LDKChannelUpdate c_var = tuple->c; - CHECK((((long)c_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&c_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long c_ref = (long)c_var.inner & ~1; - return c_ref; +jboolean __attribute__((visibility("default"))) TS_LDKCResult_UpdateFailHTLCDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_UpdateFailHTLCDecodeErrorZ*)arg)->result_ok; } -uint32_t __attribute__((visibility("default"))) TS_LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_new(uint32_tArray elems) { - LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ *ret = MALLOC(sizeof(LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ), "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ"); - ret->datalen = *((uint32_t*)elems); - if (ret->datalen == 0) { - ret->data = NULL; - } else { - ret->data = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ) * ret->datalen, "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ Data"); - uint32_t *java_elems = (uint32_t*)(elems + 4); - for (size_t i = 0; i < ret->datalen; i++) { - uint32_t arr_elem = java_elems[i]; - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ arr_elem_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(((uint64_t)arr_elem) & ~1); - FREE((void*)arr_elem); - ret->data[i] = arr_elem_conv; - } - } - return (long)ret; +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_UpdateFailHTLCDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_UpdateFailHTLCDecodeErrorZ *val = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKUpdateFailHTLC res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -uint32_t __attribute__((visibility("default"))) TS_LDKCVec_NodeAnnouncementZ_new(uint32_tArray elems) { - LDKCVec_NodeAnnouncementZ *ret = MALLOC(sizeof(LDKCVec_NodeAnnouncementZ), "LDKCVec_NodeAnnouncementZ"); - ret->datalen = *((uint32_t*)elems); - if (ret->datalen == 0) { - ret->data = NULL; - } else { - ret->data = MALLOC(sizeof(LDKNodeAnnouncement) * ret->datalen, "LDKCVec_NodeAnnouncementZ Data"); - uint32_t *java_elems = (uint32_t*)(elems + 4); - for (size_t i = 0; i < ret->datalen; i++) { - uint32_t arr_elem = java_elems[i]; - LDKNodeAnnouncement arr_elem_conv; - arr_elem_conv.inner = (void*)(arr_elem & (~1)); - arr_elem_conv.is_owned = (arr_elem & 1) || (arr_elem == 0); - arr_elem_conv = NodeAnnouncement_clone(&arr_elem_conv); - ret->data[i] = arr_elem_conv; - } - } - return (long)ret; +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_UpdateFailHTLCDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_UpdateFailHTLCDecodeErrorZ *val = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; } -static inline LDKCVec_NodeAnnouncementZ CVec_NodeAnnouncementZ_clone(const LDKCVec_NodeAnnouncementZ *orig) { - LDKCVec_NodeAnnouncementZ ret = { .data = MALLOC(sizeof(LDKNodeAnnouncement) * orig->datalen, "LDKCVec_NodeAnnouncementZ clone bytes"), .datalen = orig->datalen }; - for (size_t i = 0; i < ret.datalen; i++) { - ret.data[i] = NodeAnnouncement_clone(&orig->data[i]); - } - return ret; +jboolean __attribute__((visibility("default"))) TS_LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)arg)->result_ok; } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_NoneLightningErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_NoneLightningErrorZ*)arg)->result_ok; +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *val = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKUpdateFailMalformedHTLC res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -void __attribute__((visibility("default"))) TS_LDKCResult_NoneLightningErrorZ_get_ok(uint32_t arg) { - LDKCResult_NoneLightningErrorZ *val = (LDKCResult_NoneLightningErrorZ*)(arg & ~1); +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *val = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_UpdateFeeDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_UpdateFeeDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_UpdateFeeDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_UpdateFeeDecodeErrorZ *val = (LDKCResult_UpdateFeeDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - return *val->contents.result; + LDKUpdateFee res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NoneLightningErrorZ_get_err(uint32_t arg) { - LDKCResult_NoneLightningErrorZ *val = (LDKCResult_NoneLightningErrorZ*)(arg & ~1); +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_UpdateFeeDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_UpdateFeeDecodeErrorZ *val = (LDKCResult_UpdateFeeDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); - LDKLightningError err_var = (*val->contents.err); + LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long err_ref = (long)err_var.inner & ~1; return err_ref; } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_ChannelReestablishDecodeErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_ChannelReestablishDecodeErrorZ*)arg)->result_ok; +jboolean __attribute__((visibility("default"))) TS_LDKCResult_UpdateFulfillHTLCDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)arg)->result_ok; } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelReestablishDecodeErrorZ_get_ok(uint32_t arg) { - LDKCResult_ChannelReestablishDecodeErrorZ *val = (LDKCResult_ChannelReestablishDecodeErrorZ*)(arg & ~1); +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_UpdateFulfillHTLCDecodeErrorZ *val = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKChannelReestablish res_var = (*val->contents.result); + LDKUpdateFulfillHTLC res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelReestablishDecodeErrorZ_get_err(uint32_t arg) { - LDKCResult_ChannelReestablishDecodeErrorZ *val = (LDKCResult_ChannelReestablishDecodeErrorZ*)(arg & ~1); +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_UpdateFulfillHTLCDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_UpdateFulfillHTLCDecodeErrorZ *val = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -2276,20 +3261,20 @@ uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelReestablis long err_ref = (long)err_var.inner & ~1; return err_ref; } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_InitDecodeErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_InitDecodeErrorZ*)arg)->result_ok; +jboolean __attribute__((visibility("default"))) TS_LDKCResult_UpdateAddHTLCDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_UpdateAddHTLCDecodeErrorZ*)arg)->result_ok; } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_InitDecodeErrorZ_get_ok(uint32_t arg) { - LDKCResult_InitDecodeErrorZ *val = (LDKCResult_InitDecodeErrorZ*)(arg & ~1); +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_UpdateAddHTLCDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_UpdateAddHTLCDecodeErrorZ *val = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKInit res_var = (*val->contents.result); + LDKUpdateAddHTLC res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_InitDecodeErrorZ_get_err(uint32_t arg) { - LDKCResult_InitDecodeErrorZ *val = (LDKCResult_InitDecodeErrorZ*)(arg & ~1); +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_UpdateAddHTLCDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_UpdateAddHTLCDecodeErrorZ *val = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -2360,6 +3345,27 @@ uint32_t __attribute__((visibility("default"))) TS_LDKCResult_UnsignedChannelAn long err_ref = (long)err_var.inner & ~1; return err_ref; } +jboolean __attribute__((visibility("default"))) TS_LDKCResult_ChannelAnnouncementDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_ChannelAnnouncementDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelAnnouncementDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_ChannelAnnouncementDecodeErrorZ *val = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKChannelAnnouncement res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelAnnouncementDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_ChannelAnnouncementDecodeErrorZ *val = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} jboolean __attribute__((visibility("default"))) TS_LDKCResult_UnsignedChannelUpdateDecodeErrorZ_result_ok(uint32_t arg) { return ((LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)arg)->result_ok; } @@ -2381,6 +3387,27 @@ uint32_t __attribute__((visibility("default"))) TS_LDKCResult_UnsignedChannelUp long err_ref = (long)err_var.inner & ~1; return err_ref; } +jboolean __attribute__((visibility("default"))) TS_LDKCResult_ChannelUpdateDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_ChannelUpdateDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelUpdateDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_ChannelUpdateDecodeErrorZ *val = (LDKCResult_ChannelUpdateDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKChannelUpdate res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ChannelUpdateDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_ChannelUpdateDecodeErrorZ *val = (LDKCResult_ChannelUpdateDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} jboolean __attribute__((visibility("default"))) TS_LDKCResult_ErrorMessageDecodeErrorZ_result_ok(uint32_t arg) { return ((LDKCResult_ErrorMessageDecodeErrorZ*)arg)->result_ok; } @@ -2423,6 +3450,27 @@ uint32_t __attribute__((visibility("default"))) TS_LDKCResult_UnsignedNodeAnnou long err_ref = (long)err_var.inner & ~1; return err_ref; } +jboolean __attribute__((visibility("default"))) TS_LDKCResult_NodeAnnouncementDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_NodeAnnouncementDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NodeAnnouncementDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_NodeAnnouncementDecodeErrorZ *val = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKNodeAnnouncement res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NodeAnnouncementDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_NodeAnnouncementDecodeErrorZ *val = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} jboolean __attribute__((visibility("default"))) TS_LDKCResult_QueryShortChannelIdsDecodeErrorZ_result_ok(uint32_t arg) { return ((LDKCResult_QueryShortChannelIdsDecodeErrorZ*)arg)->result_ok; } @@ -2456,8 +3504,50 @@ uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ReplyShortChannel long res_ref = (long)res_var.inner & ~1; return res_ref; } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err(uint32_t arg) { - LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *val = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(arg & ~1); +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *val = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_QueryChannelRangeDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_QueryChannelRangeDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_QueryChannelRangeDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_QueryChannelRangeDecodeErrorZ *val = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKQueryChannelRange res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_QueryChannelRangeDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_QueryChannelRangeDecodeErrorZ *val = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(arg & ~1); + CHECK(!val->result_ok); + LDKDecodeError err_var = (*val->contents.err); + CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long err_ref = (long)err_var.inner & ~1; + return err_ref; +} +jboolean __attribute__((visibility("default"))) TS_LDKCResult_ReplyChannelRangeDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_ReplyChannelRangeDecodeErrorZ*)arg)->result_ok; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ReplyChannelRangeDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_ReplyChannelRangeDecodeErrorZ *val = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(arg & ~1); + CHECK(val->result_ok); + LDKReplyChannelRange res_var = (*val->contents.result); + CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long res_ref = (long)res_var.inner & ~1; + return res_ref; +} +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ReplyChannelRangeDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_ReplyChannelRangeDecodeErrorZ *val = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -2465,20 +3555,20 @@ uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ReplyShortChannel long err_ref = (long)err_var.inner & ~1; return err_ref; } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_QueryChannelRangeDecodeErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_QueryChannelRangeDecodeErrorZ*)arg)->result_ok; +jboolean __attribute__((visibility("default"))) TS_LDKCResult_GossipTimestampFilterDecodeErrorZ_result_ok(uint32_t arg) { + return ((LDKCResult_GossipTimestampFilterDecodeErrorZ*)arg)->result_ok; } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_QueryChannelRangeDecodeErrorZ_get_ok(uint32_t arg) { - LDKCResult_QueryChannelRangeDecodeErrorZ *val = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(arg & ~1); +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_GossipTimestampFilterDecodeErrorZ_get_ok(uint32_t arg) { + LDKCResult_GossipTimestampFilterDecodeErrorZ *val = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(arg & ~1); CHECK(val->result_ok); - LDKQueryChannelRange res_var = (*val->contents.result); + LDKGossipTimestampFilter res_var = (*val->contents.result); CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long res_ref = (long)res_var.inner & ~1; return res_ref; } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_QueryChannelRangeDecodeErrorZ_get_err(uint32_t arg) { - LDKCResult_QueryChannelRangeDecodeErrorZ *val = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(arg & ~1); +uint32_t __attribute__((visibility("default"))) TS_LDKCResult_GossipTimestampFilterDecodeErrorZ_get_err(uint32_t arg) { + LDKCResult_GossipTimestampFilterDecodeErrorZ *val = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(arg & ~1); CHECK(!val->result_ok); LDKDecodeError err_var = (*val->contents.err); CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -2486,1876 +3576,2473 @@ uint32_t __attribute__((visibility("default"))) TS_LDKCResult_QueryChannelRange long err_ref = (long)err_var.inner & ~1; return err_ref; } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_ReplyChannelRangeDecodeErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_ReplyChannelRangeDecodeErrorZ*)arg)->result_ok; +typedef struct LDKMessageSendEventsProvider_JCalls { + atomic_size_t refcnt; + uint32_t get_and_clear_pending_msg_events_meth; +} LDKMessageSendEventsProvider_JCalls; +static void LDKMessageSendEventsProvider_JCalls_free(void* this_arg) { + LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg; + if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { + js_free(j_calls->get_and_clear_pending_msg_events_meth); + FREE(j_calls); + } } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ReplyChannelRangeDecodeErrorZ_get_ok(uint32_t arg) { - LDKCResult_ReplyChannelRangeDecodeErrorZ *val = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKReplyChannelRange res_var = (*val->contents.result); - CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long res_ref = (long)res_var.inner & ~1; - return res_ref; +LDKCVec_MessageSendEventZ get_and_clear_pending_msg_events_jcall(const void* this_arg) { + LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg; + uint32_tArray arg = js_invoke_function_0(j_calls->get_and_clear_pending_msg_events_meth); + LDKCVec_MessageSendEventZ arg_constr; + arg_constr.datalen = *((uint32_t*)arg); + if (arg_constr.datalen > 0) + arg_constr.data = MALLOC(arg_constr.datalen * sizeof(LDKMessageSendEvent), "LDKCVec_MessageSendEventZ Elements"); + else + arg_constr.data = NULL; + uint32_t* arg_vals = (uint32_t*)(arg + 4); + for (size_t s = 0; s < arg_constr.datalen; s++) { + uint32_t arr_conv_18 = arg_vals[s]; + LDKMessageSendEvent arr_conv_18_conv = *(LDKMessageSendEvent*)(((uint64_t)arr_conv_18) & ~1); + FREE((void*)arr_conv_18); + arg_constr.data[s] = arr_conv_18_conv; + } + return arg_constr; +} +static void* LDKMessageSendEventsProvider_JCalls_clone(const void* this_arg) { + LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg; + atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); + return (void*) this_arg; +} +static inline LDKMessageSendEventsProvider LDKMessageSendEventsProvider_init (/*TODO: JS Object Reference */void* o) { + LDKMessageSendEventsProvider_JCalls *calls = MALLOC(sizeof(LDKMessageSendEventsProvider_JCalls), "LDKMessageSendEventsProvider_JCalls"); + atomic_init(&calls->refcnt, 1); + //TODO: Assign calls->o from o + + LDKMessageSendEventsProvider ret = { + .this_arg = (void*) calls, + .get_and_clear_pending_msg_events = get_and_clear_pending_msg_events_jcall, + .free = LDKMessageSendEventsProvider_JCalls_free, + }; + return ret; +} +long __attribute__((visibility("default"))) TS_LDKMessageSendEventsProvider_new(/*TODO: JS Object Reference */void* o) { + LDKMessageSendEventsProvider *res_ptr = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider"); + *res_ptr = LDKMessageSendEventsProvider_init(o); + return (long)res_ptr; +} +uint32_tArray __attribute__((visibility("default"))) TS_MessageSendEventsProvider_get_and_clear_pending_msg_events(uint32_t this_arg) { + LDKMessageSendEventsProvider* this_arg_conv = (LDKMessageSendEventsProvider*)this_arg; + LDKCVec_MessageSendEventZ ret_var = (this_arg_conv->get_and_clear_pending_msg_events)(this_arg_conv->this_arg); + uint32_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes"); + uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4); + for (size_t s = 0; s < ret_var.datalen; s++) { + LDKMessageSendEvent *arr_conv_18_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent"); + *arr_conv_18_copy = MessageSendEvent_clone(&ret_var.data[s]); + long arr_conv_18_ref = (long)arr_conv_18_copy; + ret_arr_ptr[s] = arr_conv_18_ref; + } + FREE(ret_var.data); + return ret_arr; +} + +typedef struct LDKEventsProvider_JCalls { + atomic_size_t refcnt; + uint32_t get_and_clear_pending_events_meth; +} LDKEventsProvider_JCalls; +static void LDKEventsProvider_JCalls_free(void* this_arg) { + LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg; + if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { + js_free(j_calls->get_and_clear_pending_events_meth); + FREE(j_calls); + } +} +LDKCVec_EventZ get_and_clear_pending_events_jcall(const void* this_arg) { + LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg; + uint32_tArray arg = js_invoke_function_0(j_calls->get_and_clear_pending_events_meth); + LDKCVec_EventZ arg_constr; + arg_constr.datalen = *((uint32_t*)arg); + if (arg_constr.datalen > 0) + arg_constr.data = MALLOC(arg_constr.datalen * sizeof(LDKEvent), "LDKCVec_EventZ Elements"); + else + arg_constr.data = NULL; + uint32_t* arg_vals = (uint32_t*)(arg + 4); + for (size_t h = 0; h < arg_constr.datalen; h++) { + uint32_t arr_conv_7 = arg_vals[h]; + LDKEvent arr_conv_7_conv = *(LDKEvent*)(((uint64_t)arr_conv_7) & ~1); + FREE((void*)arr_conv_7); + arg_constr.data[h] = arr_conv_7_conv; + } + return arg_constr; +} +static void* LDKEventsProvider_JCalls_clone(const void* this_arg) { + LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg; + atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); + return (void*) this_arg; +} +static inline LDKEventsProvider LDKEventsProvider_init (/*TODO: JS Object Reference */void* o) { + LDKEventsProvider_JCalls *calls = MALLOC(sizeof(LDKEventsProvider_JCalls), "LDKEventsProvider_JCalls"); + atomic_init(&calls->refcnt, 1); + //TODO: Assign calls->o from o + + LDKEventsProvider ret = { + .this_arg = (void*) calls, + .get_and_clear_pending_events = get_and_clear_pending_events_jcall, + .free = LDKEventsProvider_JCalls_free, + }; + return ret; +} +long __attribute__((visibility("default"))) TS_LDKEventsProvider_new(/*TODO: JS Object Reference */void* o) { + LDKEventsProvider *res_ptr = MALLOC(sizeof(LDKEventsProvider), "LDKEventsProvider"); + *res_ptr = LDKEventsProvider_init(o); + return (long)res_ptr; +} +uint32_tArray __attribute__((visibility("default"))) TS_EventsProvider_get_and_clear_pending_events(uint32_t this_arg) { + LDKEventsProvider* this_arg_conv = (LDKEventsProvider*)this_arg; + LDKCVec_EventZ ret_var = (this_arg_conv->get_and_clear_pending_events)(this_arg_conv->this_arg); + uint32_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes"); + uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4); + for (size_t h = 0; h < ret_var.datalen; h++) { + LDKEvent *arr_conv_7_copy = MALLOC(sizeof(LDKEvent), "LDKEvent"); + *arr_conv_7_copy = Event_clone(&ret_var.data[h]); + long arr_conv_7_ref = (long)arr_conv_7_copy; + ret_arr_ptr[h] = arr_conv_7_ref; + } + FREE(ret_var.data); + return ret_arr; +} + +typedef struct LDKAccess_JCalls { + atomic_size_t refcnt; + uint32_t get_utxo_meth; +} LDKAccess_JCalls; +static void LDKAccess_JCalls_free(void* this_arg) { + LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) this_arg; + if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { + js_free(j_calls->get_utxo_meth); + FREE(j_calls); + } +} +LDKCResult_TxOutAccessErrorZ get_utxo_jcall(const void* this_arg, const uint8_t (* genesis_hash)[32], uint64_t short_channel_id) { + LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) this_arg; + int8_tArray genesis_hash_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(genesis_hash_arr + 4), *genesis_hash, 32); + LDKCResult_TxOutAccessErrorZ* ret = (LDKCResult_TxOutAccessErrorZ*)js_invoke_function_2(j_calls->get_utxo_meth, genesis_hash_arr, short_channel_id); + LDKCResult_TxOutAccessErrorZ ret_conv = *(LDKCResult_TxOutAccessErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_TxOutAccessErrorZ_clone((LDKCResult_TxOutAccessErrorZ*)ret); + return ret_conv; +} +static void* LDKAccess_JCalls_clone(const void* this_arg) { + LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) this_arg; + atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); + return (void*) this_arg; +} +static inline LDKAccess LDKAccess_init (/*TODO: JS Object Reference */void* o) { + LDKAccess_JCalls *calls = MALLOC(sizeof(LDKAccess_JCalls), "LDKAccess_JCalls"); + atomic_init(&calls->refcnt, 1); + //TODO: Assign calls->o from o + + LDKAccess ret = { + .this_arg = (void*) calls, + .get_utxo = get_utxo_jcall, + .free = LDKAccess_JCalls_free, + }; + return ret; +} +long __attribute__((visibility("default"))) TS_LDKAccess_new(/*TODO: JS Object Reference */void* o) { + LDKAccess *res_ptr = MALLOC(sizeof(LDKAccess), "LDKAccess"); + *res_ptr = LDKAccess_init(o); + return (long)res_ptr; +} +uint32_t __attribute__((visibility("default"))) TS_Access_get_utxo(uint32_t this_arg, int8_tArray genesis_hash, int64_t short_channel_id) { + LDKAccess* this_arg_conv = (LDKAccess*)this_arg; + unsigned char genesis_hash_arr[32]; + CHECK(*((uint32_t*)genesis_hash) == 32); + memcpy(genesis_hash_arr, (uint8_t*)(genesis_hash + 4), 32); + unsigned char (*genesis_hash_ref)[32] = &genesis_hash_arr; + LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ"); + *ret_conv = (this_arg_conv->get_utxo)(this_arg_conv->this_arg, genesis_hash_ref, short_channel_id); + return (long)ret_conv; +} + +typedef struct LDKFilter_JCalls { + atomic_size_t refcnt; + uint32_t register_tx_meth; + uint32_t register_output_meth; +} LDKFilter_JCalls; +static void LDKFilter_JCalls_free(void* this_arg) { + LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg; + if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { + js_free(j_calls->register_tx_meth); + js_free(j_calls->register_output_meth); + FREE(j_calls); + } +} +void register_tx_jcall(const void* this_arg, const uint8_t (* txid)[32], LDKu8slice script_pubkey) { + LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg; + int8_tArray txid_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(txid_arr + 4), *txid, 32); + LDKu8slice script_pubkey_var = script_pubkey; + int8_tArray script_pubkey_arr = init_arr(script_pubkey_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(script_pubkey_arr + 4), script_pubkey_var.data, script_pubkey_var.datalen); + js_invoke_function_2(j_calls->register_tx_meth, txid_arr, script_pubkey_arr); +} +void register_output_jcall(const void* this_arg, const LDKOutPoint * outpoint, LDKu8slice script_pubkey) { + LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg; + LDKOutPoint outpoint_var = *outpoint; + outpoint_var = OutPoint_clone(outpoint); + CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long outpoint_ref = (long)outpoint_var.inner; + if (outpoint_var.is_owned) { + outpoint_ref |= 1; + } + LDKu8slice script_pubkey_var = script_pubkey; + int8_tArray script_pubkey_arr = init_arr(script_pubkey_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(script_pubkey_arr + 4), script_pubkey_var.data, script_pubkey_var.datalen); + js_invoke_function_2(j_calls->register_output_meth, outpoint_ref, script_pubkey_arr); +} +static void* LDKFilter_JCalls_clone(const void* this_arg) { + LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg; + atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); + return (void*) this_arg; +} +static inline LDKFilter LDKFilter_init (/*TODO: JS Object Reference */void* o) { + LDKFilter_JCalls *calls = MALLOC(sizeof(LDKFilter_JCalls), "LDKFilter_JCalls"); + atomic_init(&calls->refcnt, 1); + //TODO: Assign calls->o from o + + LDKFilter ret = { + .this_arg = (void*) calls, + .register_tx = register_tx_jcall, + .register_output = register_output_jcall, + .free = LDKFilter_JCalls_free, + }; + return ret; } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_ReplyChannelRangeDecodeErrorZ_get_err(uint32_t arg) { - LDKCResult_ReplyChannelRangeDecodeErrorZ *val = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; +long __attribute__((visibility("default"))) TS_LDKFilter_new(/*TODO: JS Object Reference */void* o) { + LDKFilter *res_ptr = MALLOC(sizeof(LDKFilter), "LDKFilter"); + *res_ptr = LDKFilter_init(o); + return (long)res_ptr; } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_GossipTimestampFilterDecodeErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_GossipTimestampFilterDecodeErrorZ*)arg)->result_ok; +void __attribute__((visibility("default"))) TS_Filter_register_tx(uint32_t this_arg, int8_tArray txid, int8_tArray script_pubkey) { + LDKFilter* this_arg_conv = (LDKFilter*)this_arg; + unsigned char txid_arr[32]; + CHECK(*((uint32_t*)txid) == 32); + memcpy(txid_arr, (uint8_t*)(txid + 4), 32); + unsigned char (*txid_ref)[32] = &txid_arr; + LDKu8slice script_pubkey_ref; + script_pubkey_ref.datalen = *((uint32_t*)script_pubkey); + script_pubkey_ref.data = (int8_t*)(script_pubkey + 4); + (this_arg_conv->register_tx)(this_arg_conv->this_arg, txid_ref, script_pubkey_ref); } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_GossipTimestampFilterDecodeErrorZ_get_ok(uint32_t arg) { - LDKCResult_GossipTimestampFilterDecodeErrorZ *val = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKGossipTimestampFilter res_var = (*val->contents.result); - CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long res_ref = (long)res_var.inner & ~1; - return res_ref; + +void __attribute__((visibility("default"))) TS_Filter_register_output(uint32_t this_arg, uint32_t outpoint, int8_tArray script_pubkey) { + LDKFilter* this_arg_conv = (LDKFilter*)this_arg; + LDKOutPoint outpoint_conv; + outpoint_conv.inner = (void*)(outpoint & (~1)); + outpoint_conv.is_owned = false; + LDKu8slice script_pubkey_ref; + script_pubkey_ref.datalen = *((uint32_t*)script_pubkey); + script_pubkey_ref.data = (int8_t*)(script_pubkey + 4); + (this_arg_conv->register_output)(this_arg_conv->this_arg, &outpoint_conv, script_pubkey_ref); } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_GossipTimestampFilterDecodeErrorZ_get_err(uint32_t arg) { - LDKCResult_GossipTimestampFilterDecodeErrorZ *val = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; + +typedef struct LDKPersist_JCalls { + atomic_size_t refcnt; + uint32_t persist_new_channel_meth; + uint32_t update_persisted_channel_meth; +} LDKPersist_JCalls; +static void LDKPersist_JCalls_free(void* this_arg) { + LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg; + if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { + js_free(j_calls->persist_new_channel_meth); + js_free(j_calls->update_persisted_channel_meth); + FREE(j_calls); + } } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_CVec_u8ZPeerHandleErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_CVec_u8ZPeerHandleErrorZ*)arg)->result_ok; +LDKCResult_NoneChannelMonitorUpdateErrZ persist_new_channel_jcall(const void* this_arg, LDKOutPoint id, const LDKChannelMonitor * data) { + LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg; + LDKOutPoint id_var = id; + CHECK((((long)id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long id_ref = (long)id_var.inner; + if (id_var.is_owned) { + id_ref |= 1; + } + LDKChannelMonitor data_var = *data; + data_var = ChannelMonitor_clone(data); + CHECK((((long)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long data_ref = (long)data_var.inner; + if (data_var.is_owned) { + data_ref |= 1; + } + LDKCResult_NoneChannelMonitorUpdateErrZ* ret = (LDKCResult_NoneChannelMonitorUpdateErrZ*)js_invoke_function_2(j_calls->persist_new_channel_meth, id_ref, data_ref); + LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone((LDKCResult_NoneChannelMonitorUpdateErrZ*)ret); + return ret_conv; } -int8_tArray __attribute__((visibility("default"))) TS_LDKCResult_CVec_u8ZPeerHandleErrorZ_get_ok(uint32_t arg) { - LDKCResult_CVec_u8ZPeerHandleErrorZ *val = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKCVec_u8Z res_var = (*val->contents.result); - int8_tArray res_arr = init_arr(res_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(res_arr + 4), res_var.data, res_var.datalen); - return res_arr; +LDKCResult_NoneChannelMonitorUpdateErrZ update_persisted_channel_jcall(const void* this_arg, LDKOutPoint id, const LDKChannelMonitorUpdate * update, const LDKChannelMonitor * data) { + LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg; + LDKOutPoint id_var = id; + CHECK((((long)id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long id_ref = (long)id_var.inner; + if (id_var.is_owned) { + id_ref |= 1; + } + LDKChannelMonitorUpdate update_var = *update; + update_var = ChannelMonitorUpdate_clone(update); + CHECK((((long)update_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&update_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long update_ref = (long)update_var.inner; + if (update_var.is_owned) { + update_ref |= 1; + } + LDKChannelMonitor data_var = *data; + data_var = ChannelMonitor_clone(data); + CHECK((((long)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long data_ref = (long)data_var.inner; + if (data_var.is_owned) { + data_ref |= 1; + } + LDKCResult_NoneChannelMonitorUpdateErrZ* ret = (LDKCResult_NoneChannelMonitorUpdateErrZ*)js_invoke_function_3(j_calls->update_persisted_channel_meth, id_ref, update_ref, data_ref); + LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone((LDKCResult_NoneChannelMonitorUpdateErrZ*)ret); + return ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_CVec_u8ZPeerHandleErrorZ_get_err(uint32_t arg) { - LDKCResult_CVec_u8ZPeerHandleErrorZ *val = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKPeerHandleError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; +static void* LDKPersist_JCalls_clone(const void* this_arg) { + LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg; + atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); + return (void*) this_arg; } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_NonePeerHandleErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_NonePeerHandleErrorZ*)arg)->result_ok; +static inline LDKPersist LDKPersist_init (/*TODO: JS Object Reference */void* o) { + LDKPersist_JCalls *calls = MALLOC(sizeof(LDKPersist_JCalls), "LDKPersist_JCalls"); + atomic_init(&calls->refcnt, 1); + //TODO: Assign calls->o from o + + LDKPersist ret = { + .this_arg = (void*) calls, + .persist_new_channel = persist_new_channel_jcall, + .update_persisted_channel = update_persisted_channel_jcall, + .free = LDKPersist_JCalls_free, + }; + return ret; } -void __attribute__((visibility("default"))) TS_LDKCResult_NonePeerHandleErrorZ_get_ok(uint32_t arg) { - LDKCResult_NonePeerHandleErrorZ *val = (LDKCResult_NonePeerHandleErrorZ*)(arg & ~1); - CHECK(val->result_ok); - return *val->contents.result; +long __attribute__((visibility("default"))) TS_LDKPersist_new(/*TODO: JS Object Reference */void* o) { + LDKPersist *res_ptr = MALLOC(sizeof(LDKPersist), "LDKPersist"); + *res_ptr = LDKPersist_init(o); + return (long)res_ptr; } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NonePeerHandleErrorZ_get_err(uint32_t arg) { - LDKCResult_NonePeerHandleErrorZ *val = (LDKCResult_NonePeerHandleErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKPeerHandleError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; +uint32_t __attribute__((visibility("default"))) TS_Persist_persist_new_channel(uint32_t this_arg, uint32_t id, uint32_t data) { + LDKPersist* this_arg_conv = (LDKPersist*)this_arg; + LDKOutPoint id_conv; + id_conv.inner = (void*)(id & (~1)); + id_conv.is_owned = (id & 1) || (id == 0); + id_conv = OutPoint_clone(&id_conv); + LDKChannelMonitor data_conv; + data_conv.inner = (void*)(data & (~1)); + data_conv.is_owned = false; + LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ"); + *ret_conv = (this_arg_conv->persist_new_channel)(this_arg_conv->this_arg, id_conv, &data_conv); + return (long)ret_conv; } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_boolPeerHandleErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_boolPeerHandleErrorZ*)arg)->result_ok; + +uint32_t __attribute__((visibility("default"))) TS_Persist_update_persisted_channel(uint32_t this_arg, uint32_t id, uint32_t update, uint32_t data) { + LDKPersist* this_arg_conv = (LDKPersist*)this_arg; + LDKOutPoint id_conv; + id_conv.inner = (void*)(id & (~1)); + id_conv.is_owned = (id & 1) || (id == 0); + id_conv = OutPoint_clone(&id_conv); + LDKChannelMonitorUpdate update_conv; + update_conv.inner = (void*)(update & (~1)); + update_conv.is_owned = false; + LDKChannelMonitor data_conv; + data_conv.inner = (void*)(data & (~1)); + data_conv.is_owned = false; + LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ"); + *ret_conv = (this_arg_conv->update_persisted_channel)(this_arg_conv->this_arg, id_conv, &update_conv, &data_conv); + return (long)ret_conv; } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_boolPeerHandleErrorZ_get_ok(uint32_t arg) { - LDKCResult_boolPeerHandleErrorZ *val = (LDKCResult_boolPeerHandleErrorZ*)(arg & ~1); - CHECK(val->result_ok); - return *val->contents.result; + +typedef struct LDKChannelMessageHandler_JCalls { + atomic_size_t refcnt; + LDKMessageSendEventsProvider_JCalls* MessageSendEventsProvider; + uint32_t handle_open_channel_meth; + uint32_t handle_accept_channel_meth; + uint32_t handle_funding_created_meth; + uint32_t handle_funding_signed_meth; + uint32_t handle_funding_locked_meth; + uint32_t handle_shutdown_meth; + uint32_t handle_closing_signed_meth; + uint32_t handle_update_add_htlc_meth; + uint32_t handle_update_fulfill_htlc_meth; + uint32_t handle_update_fail_htlc_meth; + uint32_t handle_update_fail_malformed_htlc_meth; + uint32_t handle_commitment_signed_meth; + uint32_t handle_revoke_and_ack_meth; + uint32_t handle_update_fee_meth; + uint32_t handle_announcement_signatures_meth; + uint32_t peer_disconnected_meth; + uint32_t peer_connected_meth; + uint32_t handle_channel_reestablish_meth; + uint32_t handle_error_meth; +} LDKChannelMessageHandler_JCalls; +static void LDKChannelMessageHandler_JCalls_free(void* this_arg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { + js_free(j_calls->handle_open_channel_meth); + js_free(j_calls->handle_accept_channel_meth); + js_free(j_calls->handle_funding_created_meth); + js_free(j_calls->handle_funding_signed_meth); + js_free(j_calls->handle_funding_locked_meth); + js_free(j_calls->handle_shutdown_meth); + js_free(j_calls->handle_closing_signed_meth); + js_free(j_calls->handle_update_add_htlc_meth); + js_free(j_calls->handle_update_fulfill_htlc_meth); + js_free(j_calls->handle_update_fail_htlc_meth); + js_free(j_calls->handle_update_fail_malformed_htlc_meth); + js_free(j_calls->handle_commitment_signed_meth); + js_free(j_calls->handle_revoke_and_ack_meth); + js_free(j_calls->handle_update_fee_meth); + js_free(j_calls->handle_announcement_signatures_meth); + js_free(j_calls->peer_disconnected_meth); + js_free(j_calls->peer_connected_meth); + js_free(j_calls->handle_channel_reestablish_meth); + js_free(j_calls->handle_error_meth); + FREE(j_calls); + } } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_boolPeerHandleErrorZ_get_err(uint32_t arg) { - LDKCResult_boolPeerHandleErrorZ *val = (LDKCResult_boolPeerHandleErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKPeerHandleError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; +void handle_open_channel_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKInitFeatures their_features, const LDKOpenChannel * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKInitFeatures their_features_var = their_features; + CHECK((((long)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long their_features_ref = (long)their_features_var.inner; + if (their_features_var.is_owned) { + their_features_ref |= 1; + } + LDKOpenChannel msg_var = *msg; + msg_var = OpenChannel_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + js_invoke_function_3(j_calls->handle_open_channel_meth, their_node_id_arr, their_features_ref, msg_ref); } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_SecretKeySecpErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_SecretKeySecpErrorZ*)arg)->result_ok; +void handle_accept_channel_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKInitFeatures their_features, const LDKAcceptChannel * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKInitFeatures their_features_var = their_features; + CHECK((((long)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long their_features_ref = (long)their_features_var.inner; + if (their_features_var.is_owned) { + their_features_ref |= 1; + } + LDKAcceptChannel msg_var = *msg; + msg_var = AcceptChannel_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + js_invoke_function_3(j_calls->handle_accept_channel_meth, their_node_id_arr, their_features_ref, msg_ref); } -int8_tArray __attribute__((visibility("default"))) TS_LDKCResult_SecretKeySecpErrorZ_get_ok(uint32_t arg) { - LDKCResult_SecretKeySecpErrorZ *val = (LDKCResult_SecretKeySecpErrorZ*)(arg & ~1); - CHECK(val->result_ok); - int8_tArray res_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(res_arr + 4), (*val->contents.result).bytes, 32); - return res_arr; +void handle_funding_created_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKFundingCreated * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKFundingCreated msg_var = *msg; + msg_var = FundingCreated_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + js_invoke_function_2(j_calls->handle_funding_created_meth, their_node_id_arr, msg_ref); } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_SecretKeySecpErrorZ_get_err(uint32_t arg) { - LDKCResult_SecretKeySecpErrorZ *val = (LDKCResult_SecretKeySecpErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - uint32_t err_conv = LDKSecp256k1Error_to_js((*val->contents.err)); - return err_conv; +void handle_funding_signed_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKFundingSigned * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKFundingSigned msg_var = *msg; + msg_var = FundingSigned_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + js_invoke_function_2(j_calls->handle_funding_signed_meth, their_node_id_arr, msg_ref); } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_PublicKeySecpErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_PublicKeySecpErrorZ*)arg)->result_ok; +void handle_funding_locked_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKFundingLocked * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKFundingLocked msg_var = *msg; + msg_var = FundingLocked_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + js_invoke_function_2(j_calls->handle_funding_locked_meth, their_node_id_arr, msg_ref); } -int8_tArray __attribute__((visibility("default"))) TS_LDKCResult_PublicKeySecpErrorZ_get_ok(uint32_t arg) { - LDKCResult_PublicKeySecpErrorZ *val = (LDKCResult_PublicKeySecpErrorZ*)(arg & ~1); - CHECK(val->result_ok); - int8_tArray res_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(res_arr + 4), (*val->contents.result).compressed_form, 33); - return res_arr; +void handle_shutdown_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKShutdown * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKShutdown msg_var = *msg; + msg_var = Shutdown_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + js_invoke_function_2(j_calls->handle_shutdown_meth, their_node_id_arr, msg_ref); } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_PublicKeySecpErrorZ_get_err(uint32_t arg) { - LDKCResult_PublicKeySecpErrorZ *val = (LDKCResult_PublicKeySecpErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - uint32_t err_conv = LDKSecp256k1Error_to_js((*val->contents.err)); - return err_conv; +void handle_closing_signed_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKClosingSigned * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKClosingSigned msg_var = *msg; + msg_var = ClosingSigned_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + js_invoke_function_2(j_calls->handle_closing_signed_meth, their_node_id_arr, msg_ref); } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_TxCreationKeysSecpErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_TxCreationKeysSecpErrorZ*)arg)->result_ok; +void handle_update_add_htlc_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateAddHTLC * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKUpdateAddHTLC msg_var = *msg; + msg_var = UpdateAddHTLC_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + js_invoke_function_2(j_calls->handle_update_add_htlc_meth, their_node_id_arr, msg_ref); } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_TxCreationKeysSecpErrorZ_get_ok(uint32_t arg) { - LDKCResult_TxCreationKeysSecpErrorZ *val = (LDKCResult_TxCreationKeysSecpErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKTxCreationKeys res_var = (*val->contents.result); - CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long res_ref = (long)res_var.inner & ~1; - return res_ref; +void handle_update_fulfill_htlc_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateFulfillHTLC * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKUpdateFulfillHTLC msg_var = *msg; + msg_var = UpdateFulfillHTLC_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + js_invoke_function_2(j_calls->handle_update_fulfill_htlc_meth, their_node_id_arr, msg_ref); } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_TxCreationKeysSecpErrorZ_get_err(uint32_t arg) { - LDKCResult_TxCreationKeysSecpErrorZ *val = (LDKCResult_TxCreationKeysSecpErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - uint32_t err_conv = LDKSecp256k1Error_to_js((*val->contents.err)); - return err_conv; +void handle_update_fail_htlc_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateFailHTLC * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKUpdateFailHTLC msg_var = *msg; + msg_var = UpdateFailHTLC_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + js_invoke_function_2(j_calls->handle_update_fail_htlc_meth, their_node_id_arr, msg_ref); } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_TrustedCommitmentTransactionNoneZ_result_ok(uint32_t arg) { - return ((LDKCResult_TrustedCommitmentTransactionNoneZ*)arg)->result_ok; +void handle_update_fail_malformed_htlc_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateFailMalformedHTLC * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKUpdateFailMalformedHTLC msg_var = *msg; + msg_var = UpdateFailMalformedHTLC_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + js_invoke_function_2(j_calls->handle_update_fail_malformed_htlc_meth, their_node_id_arr, msg_ref); } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_TrustedCommitmentTransactionNoneZ_get_ok(uint32_t arg) { - LDKCResult_TrustedCommitmentTransactionNoneZ *val = (LDKCResult_TrustedCommitmentTransactionNoneZ*)(arg & ~1); - CHECK(val->result_ok); - LDKTrustedCommitmentTransaction res_var = (*val->contents.result); - CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long res_ref = (long)res_var.inner & ~1; - return res_ref; +void handle_commitment_signed_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKCommitmentSigned * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKCommitmentSigned msg_var = *msg; + msg_var = CommitmentSigned_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + js_invoke_function_2(j_calls->handle_commitment_signed_meth, their_node_id_arr, msg_ref); } -void __attribute__((visibility("default"))) TS_LDKCResult_TrustedCommitmentTransactionNoneZ_get_err(uint32_t arg) { - LDKCResult_TrustedCommitmentTransactionNoneZ *val = (LDKCResult_TrustedCommitmentTransactionNoneZ*)(arg & ~1); - CHECK(!val->result_ok); - return *val->contents.err; +void handle_revoke_and_ack_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKRevokeAndACK * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKRevokeAndACK msg_var = *msg; + msg_var = RevokeAndACK_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + js_invoke_function_2(j_calls->handle_revoke_and_ack_meth, their_node_id_arr, msg_ref); } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_CVec_SignatureZNoneZ_result_ok(uint32_t arg) { - return ((LDKCResult_CVec_SignatureZNoneZ*)arg)->result_ok; +void handle_update_fee_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateFee * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKUpdateFee msg_var = *msg; + msg_var = UpdateFee_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + js_invoke_function_2(j_calls->handle_update_fee_meth, their_node_id_arr, msg_ref); } -ptrArray __attribute__((visibility("default"))) TS_LDKCResult_CVec_SignatureZNoneZ_get_ok(uint32_t arg) { - LDKCResult_CVec_SignatureZNoneZ *val = (LDKCResult_CVec_SignatureZNoneZ*)(arg & ~1); - CHECK(val->result_ok); - LDKCVec_SignatureZ res_var = (*val->contents.result); - ptrArray res_arr = init_arr(res_var.datalen, sizeof(uint32_t), "Native ptrArray Bytes"); - int8_tArray *res_arr_ptr = (int8_tArray*)(res_arr + 4); - for (size_t m = 0; m < res_var.datalen; m++) { - int8_tArray arr_conv_12_arr = init_arr(64, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(arr_conv_12_arr + 4), res_var.data[m].compact_form, 64); - res_arr_ptr[m] = arr_conv_12_arr; +void handle_announcement_signatures_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKAnnouncementSignatures * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKAnnouncementSignatures msg_var = *msg; + msg_var = AnnouncementSignatures_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; } - return res_arr; + js_invoke_function_2(j_calls->handle_announcement_signatures_meth, their_node_id_arr, msg_ref); } -void __attribute__((visibility("default"))) TS_LDKCResult_CVec_SignatureZNoneZ_get_err(uint32_t arg) { - LDKCResult_CVec_SignatureZNoneZ *val = (LDKCResult_CVec_SignatureZNoneZ*)(arg & ~1); - CHECK(!val->result_ok); - return *val->contents.err; +void peer_disconnected_jcall(const void* this_arg, LDKPublicKey their_node_id, bool no_connection_possible) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + js_invoke_function_2(j_calls->peer_disconnected_meth, their_node_id_arr, no_connection_possible); } -uint32_t __attribute__((visibility("default"))) TS_LDKCVec_RouteHopZ_new(uint32_tArray elems) { - LDKCVec_RouteHopZ *ret = MALLOC(sizeof(LDKCVec_RouteHopZ), "LDKCVec_RouteHopZ"); - ret->datalen = *((uint32_t*)elems); - if (ret->datalen == 0) { - ret->data = NULL; - } else { - ret->data = MALLOC(sizeof(LDKRouteHop) * ret->datalen, "LDKCVec_RouteHopZ Data"); - uint32_t *java_elems = (uint32_t*)(elems + 4); - for (size_t i = 0; i < ret->datalen; i++) { - uint32_t arr_elem = java_elems[i]; - LDKRouteHop arr_elem_conv; - arr_elem_conv.inner = (void*)(arr_elem & (~1)); - arr_elem_conv.is_owned = (arr_elem & 1) || (arr_elem == 0); - arr_elem_conv = RouteHop_clone(&arr_elem_conv); - ret->data[i] = arr_elem_conv; - } +void peer_connected_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKInit * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKInit msg_var = *msg; + msg_var = Init_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; } - return (long)ret; + js_invoke_function_2(j_calls->peer_connected_meth, their_node_id_arr, msg_ref); } -static inline LDKCVec_RouteHopZ CVec_RouteHopZ_clone(const LDKCVec_RouteHopZ *orig) { - LDKCVec_RouteHopZ ret = { .data = MALLOC(sizeof(LDKRouteHop) * orig->datalen, "LDKCVec_RouteHopZ clone bytes"), .datalen = orig->datalen }; - for (size_t i = 0; i < ret.datalen; i++) { - ret.data[i] = RouteHop_clone(&orig->data[i]); +void handle_channel_reestablish_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKChannelReestablish * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKChannelReestablish msg_var = *msg; + msg_var = ChannelReestablish_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; } - return ret; + js_invoke_function_2(j_calls->handle_channel_reestablish_meth, their_node_id_arr, msg_ref); } -static inline LDKCVec_CVec_RouteHopZZ CVec_CVec_RouteHopZZ_clone(const LDKCVec_CVec_RouteHopZZ *orig) { - LDKCVec_CVec_RouteHopZZ ret = { .data = MALLOC(sizeof(LDKCVec_RouteHopZ) * orig->datalen, "LDKCVec_CVec_RouteHopZZ clone bytes"), .datalen = orig->datalen }; - for (size_t i = 0; i < ret.datalen; i++) { - ret.data[i] = CVec_RouteHopZ_clone(&orig->data[i]); +void handle_error_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKErrorMessage * msg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKErrorMessage msg_var = *msg; + msg_var = ErrorMessage_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; } + js_invoke_function_2(j_calls->handle_error_meth, their_node_id_arr, msg_ref); +} +static void* LDKChannelMessageHandler_JCalls_clone(const void* this_arg) { + LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; + atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); + atomic_fetch_add_explicit(&j_calls->MessageSendEventsProvider->refcnt, 1, memory_order_release); + return (void*) this_arg; +} +static inline LDKChannelMessageHandler LDKChannelMessageHandler_init (/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */void* MessageSendEventsProvider) { + LDKChannelMessageHandler_JCalls *calls = MALLOC(sizeof(LDKChannelMessageHandler_JCalls), "LDKChannelMessageHandler_JCalls"); + atomic_init(&calls->refcnt, 1); + //TODO: Assign calls->o from o + + LDKChannelMessageHandler ret = { + .this_arg = (void*) calls, + .handle_open_channel = handle_open_channel_jcall, + .handle_accept_channel = handle_accept_channel_jcall, + .handle_funding_created = handle_funding_created_jcall, + .handle_funding_signed = handle_funding_signed_jcall, + .handle_funding_locked = handle_funding_locked_jcall, + .handle_shutdown = handle_shutdown_jcall, + .handle_closing_signed = handle_closing_signed_jcall, + .handle_update_add_htlc = handle_update_add_htlc_jcall, + .handle_update_fulfill_htlc = handle_update_fulfill_htlc_jcall, + .handle_update_fail_htlc = handle_update_fail_htlc_jcall, + .handle_update_fail_malformed_htlc = handle_update_fail_malformed_htlc_jcall, + .handle_commitment_signed = handle_commitment_signed_jcall, + .handle_revoke_and_ack = handle_revoke_and_ack_jcall, + .handle_update_fee = handle_update_fee_jcall, + .handle_announcement_signatures = handle_announcement_signatures_jcall, + .peer_disconnected = peer_disconnected_jcall, + .peer_connected = peer_connected_jcall, + .handle_channel_reestablish = handle_channel_reestablish_jcall, + .handle_error = handle_error_jcall, + .free = LDKChannelMessageHandler_JCalls_free, + .MessageSendEventsProvider = LDKMessageSendEventsProvider_init(MessageSendEventsProvider), + }; + calls->MessageSendEventsProvider = ret.MessageSendEventsProvider.this_arg; return ret; } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_RouteDecodeErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_RouteDecodeErrorZ*)arg)->result_ok; +long __attribute__((visibility("default"))) TS_LDKChannelMessageHandler_new(/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */ void* MessageSendEventsProvider) { + LDKChannelMessageHandler *res_ptr = MALLOC(sizeof(LDKChannelMessageHandler), "LDKChannelMessageHandler"); + *res_ptr = LDKChannelMessageHandler_init(o, MessageSendEventsProvider); + return (long)res_ptr; } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_RouteDecodeErrorZ_get_ok(uint32_t arg) { - LDKCResult_RouteDecodeErrorZ *val = (LDKCResult_RouteDecodeErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKRoute res_var = (*val->contents.result); - CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long res_ref = (long)res_var.inner & ~1; - return res_ref; +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_open_channel(uint32_t this_arg, int8_tArray their_node_id, uint32_t their_features, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKInitFeatures their_features_conv; + their_features_conv.inner = (void*)(their_features & (~1)); + their_features_conv.is_owned = (their_features & 1) || (their_features == 0); + their_features_conv = InitFeatures_clone(&their_features_conv); + LDKOpenChannel msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_open_channel)(this_arg_conv->this_arg, their_node_id_ref, their_features_conv, &msg_conv); } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_RouteDecodeErrorZ_get_err(uint32_t arg) { - LDKCResult_RouteDecodeErrorZ *val = (LDKCResult_RouteDecodeErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_accept_channel(uint32_t this_arg, int8_tArray their_node_id, uint32_t their_features, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKInitFeatures their_features_conv; + their_features_conv.inner = (void*)(their_features & (~1)); + their_features_conv.is_owned = (their_features & 1) || (their_features == 0); + their_features_conv = InitFeatures_clone(&their_features_conv); + LDKAcceptChannel msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_accept_channel)(this_arg_conv->this_arg, their_node_id_ref, their_features_conv, &msg_conv); } -uint32_t __attribute__((visibility("default"))) TS_LDKCVec_RouteHintZ_new(uint32_tArray elems) { - LDKCVec_RouteHintZ *ret = MALLOC(sizeof(LDKCVec_RouteHintZ), "LDKCVec_RouteHintZ"); - ret->datalen = *((uint32_t*)elems); - if (ret->datalen == 0) { - ret->data = NULL; - } else { - ret->data = MALLOC(sizeof(LDKRouteHint) * ret->datalen, "LDKCVec_RouteHintZ Data"); - uint32_t *java_elems = (uint32_t*)(elems + 4); - for (size_t i = 0; i < ret->datalen; i++) { - uint32_t arr_elem = java_elems[i]; - LDKRouteHint arr_elem_conv; - arr_elem_conv.inner = (void*)(arr_elem & (~1)); - arr_elem_conv.is_owned = (arr_elem & 1) || (arr_elem == 0); - arr_elem_conv = RouteHint_clone(&arr_elem_conv); - ret->data[i] = arr_elem_conv; - } - } - return (long)ret; + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_created(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKFundingCreated msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_funding_created)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); } -static inline LDKCVec_RouteHintZ CVec_RouteHintZ_clone(const LDKCVec_RouteHintZ *orig) { - LDKCVec_RouteHintZ ret = { .data = MALLOC(sizeof(LDKRouteHint) * orig->datalen, "LDKCVec_RouteHintZ clone bytes"), .datalen = orig->datalen }; - for (size_t i = 0; i < ret.datalen; i++) { - ret.data[i] = RouteHint_clone(&orig->data[i]); - } - return ret; + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKFundingSigned msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_funding_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_locked(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKFundingLocked msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_funding_locked)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_shutdown(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKShutdown msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_shutdown)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_closing_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKClosingSigned msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_closing_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_add_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKUpdateAddHTLC msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_update_add_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +} + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fulfill_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKUpdateFulfillHTLC msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_update_fulfill_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_RouteLightningErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_RouteLightningErrorZ*)arg)->result_ok; + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fail_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKUpdateFailHTLC msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_update_fail_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_RouteLightningErrorZ_get_ok(uint32_t arg) { - LDKCResult_RouteLightningErrorZ *val = (LDKCResult_RouteLightningErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKRoute res_var = (*val->contents.result); - CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long res_ref = (long)res_var.inner & ~1; - return res_ref; + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fail_malformed_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKUpdateFailMalformedHTLC msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_update_fail_malformed_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_RouteLightningErrorZ_get_err(uint32_t arg) { - LDKCResult_RouteLightningErrorZ *val = (LDKCResult_RouteLightningErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKLightningError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_commitment_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKCommitmentSigned msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_commitment_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_RoutingFeesDecodeErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_RoutingFeesDecodeErrorZ*)arg)->result_ok; + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_revoke_and_ack(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKRevokeAndACK msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_revoke_and_ack)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_RoutingFeesDecodeErrorZ_get_ok(uint32_t arg) { - LDKCResult_RoutingFeesDecodeErrorZ *val = (LDKCResult_RoutingFeesDecodeErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKRoutingFees res_var = (*val->contents.result); - CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long res_ref = (long)res_var.inner & ~1; - return res_ref; + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fee(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKUpdateFee msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_update_fee)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_RoutingFeesDecodeErrorZ_get_err(uint32_t arg) { - LDKCResult_RoutingFeesDecodeErrorZ *val = (LDKCResult_RoutingFeesDecodeErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_announcement_signatures(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKAnnouncementSignatures msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_announcement_signatures)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_NodeAnnouncementInfoDecodeErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)arg)->result_ok; + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_peer_disconnected(uint32_t this_arg, int8_tArray their_node_id, jboolean no_connection_possible) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + (this_arg_conv->peer_disconnected)(this_arg_conv->this_arg, their_node_id_ref, no_connection_possible); } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(uint32_t arg) { - LDKCResult_NodeAnnouncementInfoDecodeErrorZ *val = (LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKNodeAnnouncementInfo res_var = (*val->contents.result); - CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long res_ref = (long)res_var.inner & ~1; - return res_ref; + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_peer_connected(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKInit msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->peer_connected)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_err(uint32_t arg) { - LDKCResult_NodeAnnouncementInfoDecodeErrorZ *val = (LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_channel_reestablish(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKChannelReestablish msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_channel_reestablish)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_NodeInfoDecodeErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_NodeInfoDecodeErrorZ*)arg)->result_ok; + +void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_error(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKErrorMessage msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + (this_arg_conv->handle_error)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NodeInfoDecodeErrorZ_get_ok(uint32_t arg) { - LDKCResult_NodeInfoDecodeErrorZ *val = (LDKCResult_NodeInfoDecodeErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKNodeInfo res_var = (*val->contents.result); - CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long res_ref = (long)res_var.inner & ~1; - return res_ref; + +typedef struct LDKRoutingMessageHandler_JCalls { + atomic_size_t refcnt; + LDKMessageSendEventsProvider_JCalls* MessageSendEventsProvider; + uint32_t handle_node_announcement_meth; + uint32_t handle_channel_announcement_meth; + uint32_t handle_channel_update_meth; + uint32_t handle_htlc_fail_channel_update_meth; + uint32_t get_next_channel_announcements_meth; + uint32_t get_next_node_announcements_meth; + uint32_t sync_routing_table_meth; + uint32_t handle_reply_channel_range_meth; + uint32_t handle_reply_short_channel_ids_end_meth; + uint32_t handle_query_channel_range_meth; + uint32_t handle_query_short_channel_ids_meth; +} LDKRoutingMessageHandler_JCalls; +static void LDKRoutingMessageHandler_JCalls_free(void* this_arg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; + if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { + js_free(j_calls->handle_node_announcement_meth); + js_free(j_calls->handle_channel_announcement_meth); + js_free(j_calls->handle_channel_update_meth); + js_free(j_calls->handle_htlc_fail_channel_update_meth); + js_free(j_calls->get_next_channel_announcements_meth); + js_free(j_calls->get_next_node_announcements_meth); + js_free(j_calls->sync_routing_table_meth); + js_free(j_calls->handle_reply_channel_range_meth); + js_free(j_calls->handle_reply_short_channel_ids_end_meth); + js_free(j_calls->handle_query_channel_range_meth); + js_free(j_calls->handle_query_short_channel_ids_meth); + FREE(j_calls); + } } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NodeInfoDecodeErrorZ_get_err(uint32_t arg) { - LDKCResult_NodeInfoDecodeErrorZ *val = (LDKCResult_NodeInfoDecodeErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; +LDKCResult_boolLightningErrorZ handle_node_announcement_jcall(const void* this_arg, const LDKNodeAnnouncement * msg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; + LDKNodeAnnouncement msg_var = *msg; + msg_var = NodeAnnouncement_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + LDKCResult_boolLightningErrorZ* ret = (LDKCResult_boolLightningErrorZ*)js_invoke_function_1(j_calls->handle_node_announcement_meth, msg_ref); + LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_boolLightningErrorZ_clone((LDKCResult_boolLightningErrorZ*)ret); + return ret_conv; } -jboolean __attribute__((visibility("default"))) TS_LDKCResult_NetworkGraphDecodeErrorZ_result_ok(uint32_t arg) { - return ((LDKCResult_NetworkGraphDecodeErrorZ*)arg)->result_ok; +LDKCResult_boolLightningErrorZ handle_channel_announcement_jcall(const void* this_arg, const LDKChannelAnnouncement * msg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; + LDKChannelAnnouncement msg_var = *msg; + msg_var = ChannelAnnouncement_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + LDKCResult_boolLightningErrorZ* ret = (LDKCResult_boolLightningErrorZ*)js_invoke_function_1(j_calls->handle_channel_announcement_meth, msg_ref); + LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_boolLightningErrorZ_clone((LDKCResult_boolLightningErrorZ*)ret); + return ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NetworkGraphDecodeErrorZ_get_ok(uint32_t arg) { - LDKCResult_NetworkGraphDecodeErrorZ *val = (LDKCResult_NetworkGraphDecodeErrorZ*)(arg & ~1); - CHECK(val->result_ok); - LDKNetworkGraph res_var = (*val->contents.result); - CHECK((((long)res_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&res_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long res_ref = (long)res_var.inner & ~1; - return res_ref; +LDKCResult_boolLightningErrorZ handle_channel_update_jcall(const void* this_arg, const LDKChannelUpdate * msg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; + LDKChannelUpdate msg_var = *msg; + msg_var = ChannelUpdate_clone(msg); + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + LDKCResult_boolLightningErrorZ* ret = (LDKCResult_boolLightningErrorZ*)js_invoke_function_1(j_calls->handle_channel_update_meth, msg_ref); + LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_boolLightningErrorZ_clone((LDKCResult_boolLightningErrorZ*)ret); + return ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_LDKCResult_NetworkGraphDecodeErrorZ_get_err(uint32_t arg) { - LDKCResult_NetworkGraphDecodeErrorZ *val = (LDKCResult_NetworkGraphDecodeErrorZ*)(arg & ~1); - CHECK(!val->result_ok); - LDKDecodeError err_var = (*val->contents.err); - CHECK((((long)err_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&err_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long err_ref = (long)err_var.inner & ~1; - return err_ref; +void handle_htlc_fail_channel_update_jcall(const void* this_arg, const LDKHTLCFailChannelUpdate * update) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; + long ret_update = (long)update; + js_invoke_function_1(j_calls->handle_htlc_fail_channel_update_meth, ret_update); } -typedef struct LDKMessageSendEventsProvider_JCalls { - atomic_size_t refcnt; - uint32_t get_and_clear_pending_msg_events_meth; -} LDKMessageSendEventsProvider_JCalls; -static void LDKMessageSendEventsProvider_JCalls_free(void* this_arg) { - LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg; - if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { - js_free(j_calls->get_and_clear_pending_msg_events_meth); - FREE(j_calls); +LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcements_jcall(const void* this_arg, uint64_t starting_point, uint8_t batch_amount) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; + uint32_tArray arg = js_invoke_function_2(j_calls->get_next_channel_announcements_meth, starting_point, batch_amount); + LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ arg_constr; + arg_constr.datalen = *((uint32_t*)arg); + if (arg_constr.datalen > 0) + arg_constr.data = MALLOC(arg_constr.datalen * sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ Elements"); + else + arg_constr.data = NULL; + uint32_t* arg_vals = (uint32_t*)(arg + 4); + for (size_t l = 0; l < arg_constr.datalen; l++) { + uint32_t arr_conv_63 = arg_vals[l]; + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ arr_conv_63_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(((uint64_t)arr_conv_63) & ~1); + FREE((void*)arr_conv_63); + arg_constr.data[l] = arr_conv_63_conv; } + return arg_constr; } -LDKCVec_MessageSendEventZ get_and_clear_pending_msg_events_jcall(const void* this_arg) { - LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg; - uint32_tArray arg = js_invoke_function_0(j_calls->get_and_clear_pending_msg_events_meth); - LDKCVec_MessageSendEventZ arg_constr; +LDKCVec_NodeAnnouncementZ get_next_node_announcements_jcall(const void* this_arg, LDKPublicKey starting_point, uint8_t batch_amount) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; + int8_tArray starting_point_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(starting_point_arr + 4), starting_point.compressed_form, 33); + uint32_tArray arg = js_invoke_function_2(j_calls->get_next_node_announcements_meth, starting_point_arr, batch_amount); + LDKCVec_NodeAnnouncementZ arg_constr; arg_constr.datalen = *((uint32_t*)arg); if (arg_constr.datalen > 0) - arg_constr.data = MALLOC(arg_constr.datalen * sizeof(LDKMessageSendEvent), "LDKCVec_MessageSendEventZ Elements"); + arg_constr.data = MALLOC(arg_constr.datalen * sizeof(LDKNodeAnnouncement), "LDKCVec_NodeAnnouncementZ Elements"); else arg_constr.data = NULL; uint32_t* arg_vals = (uint32_t*)(arg + 4); for (size_t s = 0; s < arg_constr.datalen; s++) { uint32_t arr_conv_18 = arg_vals[s]; - LDKMessageSendEvent arr_conv_18_conv = *(LDKMessageSendEvent*)(((uint64_t)arr_conv_18) & ~1); - FREE((void*)arr_conv_18); + LDKNodeAnnouncement arr_conv_18_conv; + arr_conv_18_conv.inner = (void*)(arr_conv_18 & (~1)); + arr_conv_18_conv.is_owned = (arr_conv_18 & 1) || (arr_conv_18 == 0); + arr_conv_18_conv = NodeAnnouncement_clone(&arr_conv_18_conv); arg_constr.data[s] = arr_conv_18_conv; } return arg_constr; } -static void* LDKMessageSendEventsProvider_JCalls_clone(const void* this_arg) { - LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg; - atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); - return (void*) this_arg; -} -static inline LDKMessageSendEventsProvider LDKMessageSendEventsProvider_init (/*TODO: JS Object Reference */void* o) { - LDKMessageSendEventsProvider_JCalls *calls = MALLOC(sizeof(LDKMessageSendEventsProvider_JCalls), "LDKMessageSendEventsProvider_JCalls"); - atomic_init(&calls->refcnt, 1); - //TODO: Assign calls->o from o - - LDKMessageSendEventsProvider ret = { - .this_arg = (void*) calls, - .get_and_clear_pending_msg_events = get_and_clear_pending_msg_events_jcall, - .free = LDKMessageSendEventsProvider_JCalls_free, - }; - return ret; +void sync_routing_table_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKInit * init) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKInit init_var = *init; + init_var = Init_clone(init); + CHECK((((long)init_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&init_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long init_ref = (long)init_var.inner; + if (init_var.is_owned) { + init_ref |= 1; + } + js_invoke_function_2(j_calls->sync_routing_table_meth, their_node_id_arr, init_ref); } -long __attribute__((visibility("default"))) TS_LDKMessageSendEventsProvider_new(/*TODO: JS Object Reference */void* o) { - LDKMessageSendEventsProvider *res_ptr = MALLOC(sizeof(LDKMessageSendEventsProvider), "LDKMessageSendEventsProvider"); - *res_ptr = LDKMessageSendEventsProvider_init(o); - return (long)res_ptr; +LDKCResult_NoneLightningErrorZ handle_reply_channel_range_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKReplyChannelRange msg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKReplyChannelRange msg_var = msg; + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; + } + LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)js_invoke_function_2(j_calls->handle_reply_channel_range_meth, their_node_id_arr, msg_ref); + LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)ret); + return ret_conv; } -uint32_tArray __attribute__((visibility("default"))) TS_MessageSendEventsProvider_get_and_clear_pending_msg_events(uint32_t this_arg) { - LDKMessageSendEventsProvider* this_arg_conv = (LDKMessageSendEventsProvider*)this_arg; - LDKCVec_MessageSendEventZ ret_var = (this_arg_conv->get_and_clear_pending_msg_events)(this_arg_conv->this_arg); - uint32_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes"); - uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4); - for (size_t s = 0; s < ret_var.datalen; s++) { - LDKMessageSendEvent *arr_conv_18_copy = MALLOC(sizeof(LDKMessageSendEvent), "LDKMessageSendEvent"); - *arr_conv_18_copy = MessageSendEvent_clone(&ret_var.data[s]); - long arr_conv_18_ref = (long)arr_conv_18_copy; - ret_arr_ptr[s] = arr_conv_18_ref; +LDKCResult_NoneLightningErrorZ handle_reply_short_channel_ids_end_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKReplyShortChannelIdsEnd msg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKReplyShortChannelIdsEnd msg_var = msg; + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; } - FREE(ret_var.data); - return ret_arr; + LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)js_invoke_function_2(j_calls->handle_reply_short_channel_ids_end_meth, their_node_id_arr, msg_ref); + LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)ret); + return ret_conv; } - -typedef struct LDKEventsProvider_JCalls { - atomic_size_t refcnt; - uint32_t get_and_clear_pending_events_meth; -} LDKEventsProvider_JCalls; -static void LDKEventsProvider_JCalls_free(void* this_arg) { - LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg; - if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { - js_free(j_calls->get_and_clear_pending_events_meth); - FREE(j_calls); +LDKCResult_NoneLightningErrorZ handle_query_channel_range_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKQueryChannelRange msg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKQueryChannelRange msg_var = msg; + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; } + LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)js_invoke_function_2(j_calls->handle_query_channel_range_meth, their_node_id_arr, msg_ref); + LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)ret); + return ret_conv; } -LDKCVec_EventZ get_and_clear_pending_events_jcall(const void* this_arg) { - LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg; - uint32_tArray arg = js_invoke_function_0(j_calls->get_and_clear_pending_events_meth); - LDKCVec_EventZ arg_constr; - arg_constr.datalen = *((uint32_t*)arg); - if (arg_constr.datalen > 0) - arg_constr.data = MALLOC(arg_constr.datalen * sizeof(LDKEvent), "LDKCVec_EventZ Elements"); - else - arg_constr.data = NULL; - uint32_t* arg_vals = (uint32_t*)(arg + 4); - for (size_t h = 0; h < arg_constr.datalen; h++) { - uint32_t arr_conv_7 = arg_vals[h]; - LDKEvent arr_conv_7_conv = *(LDKEvent*)(((uint64_t)arr_conv_7) & ~1); - FREE((void*)arr_conv_7); - arg_constr.data[h] = arr_conv_7_conv; +LDKCResult_NoneLightningErrorZ handle_query_short_channel_ids_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKQueryShortChannelIds msg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; + int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); + LDKQueryShortChannelIds msg_var = msg; + CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long msg_ref = (long)msg_var.inner; + if (msg_var.is_owned) { + msg_ref |= 1; } - return arg_constr; + LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)js_invoke_function_2(j_calls->handle_query_short_channel_ids_meth, their_node_id_arr, msg_ref); + LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1); + ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)ret); + return ret_conv; } -static void* LDKEventsProvider_JCalls_clone(const void* this_arg) { - LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg; +static void* LDKRoutingMessageHandler_JCalls_clone(const void* this_arg) { + LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); + atomic_fetch_add_explicit(&j_calls->MessageSendEventsProvider->refcnt, 1, memory_order_release); return (void*) this_arg; } -static inline LDKEventsProvider LDKEventsProvider_init (/*TODO: JS Object Reference */void* o) { - LDKEventsProvider_JCalls *calls = MALLOC(sizeof(LDKEventsProvider_JCalls), "LDKEventsProvider_JCalls"); +static inline LDKRoutingMessageHandler LDKRoutingMessageHandler_init (/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */void* MessageSendEventsProvider) { + LDKRoutingMessageHandler_JCalls *calls = MALLOC(sizeof(LDKRoutingMessageHandler_JCalls), "LDKRoutingMessageHandler_JCalls"); atomic_init(&calls->refcnt, 1); //TODO: Assign calls->o from o - LDKEventsProvider ret = { + LDKRoutingMessageHandler ret = { .this_arg = (void*) calls, - .get_and_clear_pending_events = get_and_clear_pending_events_jcall, - .free = LDKEventsProvider_JCalls_free, + .handle_node_announcement = handle_node_announcement_jcall, + .handle_channel_announcement = handle_channel_announcement_jcall, + .handle_channel_update = handle_channel_update_jcall, + .handle_htlc_fail_channel_update = handle_htlc_fail_channel_update_jcall, + .get_next_channel_announcements = get_next_channel_announcements_jcall, + .get_next_node_announcements = get_next_node_announcements_jcall, + .sync_routing_table = sync_routing_table_jcall, + .handle_reply_channel_range = handle_reply_channel_range_jcall, + .handle_reply_short_channel_ids_end = handle_reply_short_channel_ids_end_jcall, + .handle_query_channel_range = handle_query_channel_range_jcall, + .handle_query_short_channel_ids = handle_query_short_channel_ids_jcall, + .free = LDKRoutingMessageHandler_JCalls_free, + .MessageSendEventsProvider = LDKMessageSendEventsProvider_init(MessageSendEventsProvider), }; + calls->MessageSendEventsProvider = ret.MessageSendEventsProvider.this_arg; return ret; } -long __attribute__((visibility("default"))) TS_LDKEventsProvider_new(/*TODO: JS Object Reference */void* o) { - LDKEventsProvider *res_ptr = MALLOC(sizeof(LDKEventsProvider), "LDKEventsProvider"); - *res_ptr = LDKEventsProvider_init(o); +long __attribute__((visibility("default"))) TS_LDKRoutingMessageHandler_new(/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */ void* MessageSendEventsProvider) { + LDKRoutingMessageHandler *res_ptr = MALLOC(sizeof(LDKRoutingMessageHandler), "LDKRoutingMessageHandler"); + *res_ptr = LDKRoutingMessageHandler_init(o, MessageSendEventsProvider); return (long)res_ptr; } -uint32_tArray __attribute__((visibility("default"))) TS_EventsProvider_get_and_clear_pending_events(uint32_t this_arg) { - LDKEventsProvider* this_arg_conv = (LDKEventsProvider*)this_arg; - LDKCVec_EventZ ret_var = (this_arg_conv->get_and_clear_pending_events)(this_arg_conv->this_arg); +uint32_t __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_node_announcement(uint32_t this_arg, uint32_t msg) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKNodeAnnouncement msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); + *ret_conv = (this_arg_conv->handle_node_announcement)(this_arg_conv->this_arg, &msg_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_channel_announcement(uint32_t this_arg, uint32_t msg) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKChannelAnnouncement msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); + *ret_conv = (this_arg_conv->handle_channel_announcement)(this_arg_conv->this_arg, &msg_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_channel_update(uint32_t this_arg, uint32_t msg) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKChannelUpdate msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = false; + LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); + *ret_conv = (this_arg_conv->handle_channel_update)(this_arg_conv->this_arg, &msg_conv); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_htlc_fail_channel_update(uint32_t this_arg, uint32_t update) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKHTLCFailChannelUpdate* update_conv = (LDKHTLCFailChannelUpdate*)update; + (this_arg_conv->handle_htlc_fail_channel_update)(this_arg_conv->this_arg, update_conv); +} + +uint32_tArray __attribute__((visibility("default"))) TS_RoutingMessageHandler_get_next_channel_announcements(uint32_t this_arg, int64_t starting_point, int8_t batch_amount) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret_var = (this_arg_conv->get_next_channel_announcements)(this_arg_conv->this_arg, starting_point, batch_amount); uint32_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes"); uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4); - for (size_t h = 0; h < ret_var.datalen; h++) { - LDKEvent *arr_conv_7_copy = MALLOC(sizeof(LDKEvent), "LDKEvent"); - *arr_conv_7_copy = Event_clone(&ret_var.data[h]); - long arr_conv_7_ref = (long)arr_conv_7_copy; - ret_arr_ptr[h] = arr_conv_7_ref; + for (size_t l = 0; l < ret_var.datalen; l++) { + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* arr_conv_63_ref = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ"); + *arr_conv_63_ref = ret_var.data[l]; + ret_arr_ptr[l] = (long)arr_conv_63_ref; } FREE(ret_var.data); return ret_arr; } -typedef struct LDKAccess_JCalls { +uint32_tArray __attribute__((visibility("default"))) TS_RoutingMessageHandler_get_next_node_announcements(uint32_t this_arg, int8_tArray starting_point, int8_t batch_amount) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKPublicKey starting_point_ref; + CHECK(*((uint32_t*)starting_point) == 33); + memcpy(starting_point_ref.compressed_form, (uint8_t*)(starting_point + 4), 33); + LDKCVec_NodeAnnouncementZ ret_var = (this_arg_conv->get_next_node_announcements)(this_arg_conv->this_arg, starting_point_ref, batch_amount); + uint32_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes"); + uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4); + for (size_t s = 0; s < ret_var.datalen; s++) { + LDKNodeAnnouncement arr_conv_18_var = ret_var.data[s]; + CHECK((((long)arr_conv_18_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&arr_conv_18_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long arr_conv_18_ref = (long)arr_conv_18_var.inner; + if (arr_conv_18_var.is_owned) { + arr_conv_18_ref |= 1; + } + ret_arr_ptr[s] = arr_conv_18_ref; + } + FREE(ret_var.data); + return ret_arr; +} + +void __attribute__((visibility("default"))) TS_RoutingMessageHandler_sync_routing_table(uint32_t this_arg, int8_tArray their_node_id, uint32_t init) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKInit init_conv; + init_conv.inner = (void*)(init & (~1)); + init_conv.is_owned = false; + (this_arg_conv->sync_routing_table)(this_arg_conv->this_arg, their_node_id_ref, &init_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_reply_channel_range(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKReplyChannelRange msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = (msg & 1) || (msg == 0); + msg_conv = ReplyChannelRange_clone(&msg_conv); + LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); + *ret_conv = (this_arg_conv->handle_reply_channel_range)(this_arg_conv->this_arg, their_node_id_ref, msg_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_reply_short_channel_ids_end(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKReplyShortChannelIdsEnd msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = (msg & 1) || (msg == 0); + msg_conv = ReplyShortChannelIdsEnd_clone(&msg_conv); + LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); + *ret_conv = (this_arg_conv->handle_reply_short_channel_ids_end)(this_arg_conv->this_arg, their_node_id_ref, msg_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_query_channel_range(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKQueryChannelRange msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = (msg & 1) || (msg == 0); + msg_conv = QueryChannelRange_clone(&msg_conv); + LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); + *ret_conv = (this_arg_conv->handle_query_channel_range)(this_arg_conv->this_arg, their_node_id_ref, msg_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_query_short_channel_ids(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { + LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; + LDKPublicKey their_node_id_ref; + CHECK(*((uint32_t*)their_node_id) == 33); + memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); + LDKQueryShortChannelIds msg_conv; + msg_conv.inner = (void*)(msg & (~1)); + msg_conv.is_owned = (msg & 1) || (msg == 0); + msg_conv = QueryShortChannelIds_clone(&msg_conv); + LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); + *ret_conv = (this_arg_conv->handle_query_short_channel_ids)(this_arg_conv->this_arg, their_node_id_ref, msg_conv); + return (long)ret_conv; +} + +typedef struct LDKSocketDescriptor_JCalls { atomic_size_t refcnt; - uint32_t get_utxo_meth; -} LDKAccess_JCalls; -static void LDKAccess_JCalls_free(void* this_arg) { - LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) this_arg; + uint32_t send_data_meth; + uint32_t disconnect_socket_meth; + uint32_t eq_meth; + uint32_t hash_meth; +} LDKSocketDescriptor_JCalls; +static void LDKSocketDescriptor_JCalls_free(void* this_arg) { + LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { - js_free(j_calls->get_utxo_meth); + js_free(j_calls->send_data_meth); + js_free(j_calls->disconnect_socket_meth); + js_free(j_calls->eq_meth); + js_free(j_calls->hash_meth); FREE(j_calls); } } -LDKCResult_TxOutAccessErrorZ get_utxo_jcall(const void* this_arg, const uint8_t (* genesis_hash)[32], uint64_t short_channel_id) { - LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) this_arg; - int8_tArray genesis_hash_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(genesis_hash_arr + 4), *genesis_hash, 32); - LDKCResult_TxOutAccessErrorZ* ret = (LDKCResult_TxOutAccessErrorZ*)js_invoke_function_2(j_calls->get_utxo_meth, genesis_hash_arr, short_channel_id); - LDKCResult_TxOutAccessErrorZ ret_conv = *(LDKCResult_TxOutAccessErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_TxOutAccessErrorZ_clone((LDKCResult_TxOutAccessErrorZ*)ret); - return ret_conv; +uintptr_t send_data_jcall(void* this_arg, LDKu8slice data, bool resume_read) { + LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; + LDKu8slice data_var = data; + int8_tArray data_arr = init_arr(data_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(data_arr + 4), data_var.data, data_var.datalen); + return js_invoke_function_2(j_calls->send_data_meth, data_arr, resume_read); } -static void* LDKAccess_JCalls_clone(const void* this_arg) { - LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) this_arg; +void disconnect_socket_jcall(void* this_arg) { + LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; + js_invoke_function_0(j_calls->disconnect_socket_meth); +} +bool eq_jcall(const void* this_arg, const LDKSocketDescriptor * other_arg) { + LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; + LDKSocketDescriptor *other_arg_clone = MALLOC(sizeof(LDKSocketDescriptor), "LDKSocketDescriptor"); + *other_arg_clone = SocketDescriptor_clone(other_arg); + return js_invoke_function_1(j_calls->eq_meth, (long)other_arg_clone); +} +uint64_t hash_jcall(const void* this_arg) { + LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; + return js_invoke_function_0(j_calls->hash_meth); +} +static void* LDKSocketDescriptor_JCalls_clone(const void* this_arg) { + LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); return (void*) this_arg; } -static inline LDKAccess LDKAccess_init (/*TODO: JS Object Reference */void* o) { - LDKAccess_JCalls *calls = MALLOC(sizeof(LDKAccess_JCalls), "LDKAccess_JCalls"); +static inline LDKSocketDescriptor LDKSocketDescriptor_init (/*TODO: JS Object Reference */void* o) { + LDKSocketDescriptor_JCalls *calls = MALLOC(sizeof(LDKSocketDescriptor_JCalls), "LDKSocketDescriptor_JCalls"); atomic_init(&calls->refcnt, 1); //TODO: Assign calls->o from o - LDKAccess ret = { + LDKSocketDescriptor ret = { .this_arg = (void*) calls, - .get_utxo = get_utxo_jcall, - .free = LDKAccess_JCalls_free, + .send_data = send_data_jcall, + .disconnect_socket = disconnect_socket_jcall, + .eq = eq_jcall, + .hash = hash_jcall, + .clone = LDKSocketDescriptor_JCalls_clone, + .free = LDKSocketDescriptor_JCalls_free, }; return ret; } -long __attribute__((visibility("default"))) TS_LDKAccess_new(/*TODO: JS Object Reference */void* o) { - LDKAccess *res_ptr = MALLOC(sizeof(LDKAccess), "LDKAccess"); - *res_ptr = LDKAccess_init(o); +long __attribute__((visibility("default"))) TS_LDKSocketDescriptor_new(/*TODO: JS Object Reference */void* o) { + LDKSocketDescriptor *res_ptr = MALLOC(sizeof(LDKSocketDescriptor), "LDKSocketDescriptor"); + *res_ptr = LDKSocketDescriptor_init(o); return (long)res_ptr; } -uint32_t __attribute__((visibility("default"))) TS_Access_get_utxo(uint32_t this_arg, int8_tArray genesis_hash, int64_t short_channel_id) { - LDKAccess* this_arg_conv = (LDKAccess*)this_arg; - unsigned char genesis_hash_arr[32]; - CHECK(*((uint32_t*)genesis_hash) == 32); - memcpy(genesis_hash_arr, (uint8_t*)(genesis_hash + 4), 32); - unsigned char (*genesis_hash_ref)[32] = &genesis_hash_arr; - LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ"); - *ret_conv = (this_arg_conv->get_utxo)(this_arg_conv->this_arg, genesis_hash_ref, short_channel_id); - return (long)ret_conv; +int64_t __attribute__((visibility("default"))) TS_SocketDescriptor_send_data(uint32_t this_arg, int8_tArray data, jboolean resume_read) { + LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg; + LDKu8slice data_ref; + data_ref.datalen = *((uint32_t*)data); + data_ref.data = (int8_t*)(data + 4); + int64_t ret_val = (this_arg_conv->send_data)(this_arg_conv->this_arg, data_ref, resume_read); + return ret_val; } -typedef struct LDKFilter_JCalls { - atomic_size_t refcnt; - uint32_t register_tx_meth; - uint32_t register_output_meth; -} LDKFilter_JCalls; -static void LDKFilter_JCalls_free(void* this_arg) { - LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg; - if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { - js_free(j_calls->register_tx_meth); - js_free(j_calls->register_output_meth); - FREE(j_calls); - } +void __attribute__((visibility("default"))) TS_SocketDescriptor_disconnect_socket(uint32_t this_arg) { + LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg; + (this_arg_conv->disconnect_socket)(this_arg_conv->this_arg); } -void register_tx_jcall(const void* this_arg, const uint8_t (* txid)[32], LDKu8slice script_pubkey) { - LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg; - int8_tArray txid_arr = init_arr(32, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(txid_arr + 4), *txid, 32); - LDKu8slice script_pubkey_var = script_pubkey; - int8_tArray script_pubkey_arr = init_arr(script_pubkey_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(script_pubkey_arr + 4), script_pubkey_var.data, script_pubkey_var.datalen); - js_invoke_function_2(j_calls->register_tx_meth, txid_arr, script_pubkey_arr); + +int64_t __attribute__((visibility("default"))) TS_SocketDescriptor_hash(uint32_t this_arg) { + LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg; + int64_t ret_val = (this_arg_conv->hash)(this_arg_conv->this_arg); + return ret_val; } -void register_output_jcall(const void* this_arg, const LDKOutPoint * outpoint, LDKu8slice script_pubkey) { - LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg; - LDKOutPoint outpoint_var = *outpoint; - outpoint_var = OutPoint_clone(outpoint); - CHECK((((long)outpoint_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&outpoint_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long outpoint_ref = (long)outpoint_var.inner; - if (outpoint_var.is_owned) { - outpoint_ref |= 1; - } - LDKu8slice script_pubkey_var = script_pubkey; - int8_tArray script_pubkey_arr = init_arr(script_pubkey_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(script_pubkey_arr + 4), script_pubkey_var.data, script_pubkey_var.datalen); - js_invoke_function_2(j_calls->register_output_meth, outpoint_ref, script_pubkey_arr); + +void __attribute__((visibility("default"))) TS_Transaction_free(int8_tArray _res) { + LDKTransaction _res_ref; + _res_ref.datalen = *((uint32_t*)_res); + _res_ref.data = MALLOC(_res_ref.datalen, "LDKTransaction Bytes"); + memcpy(_res_ref.data, (uint8_t*)(_res + 4), _res_ref.datalen); + _res_ref.data_is_owned = true; + Transaction_free(_res_ref); } -static void* LDKFilter_JCalls_clone(const void* this_arg) { - LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg; - atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); - return (void*) this_arg; + +void __attribute__((visibility("default"))) TS_TxOut_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKTxOut _res_conv = *(LDKTxOut*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + TxOut_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_TxOut_clone(uint32_t orig) { + LDKTxOut* orig_conv = (LDKTxOut*)(orig & ~1); + LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut"); + *ret_ref = TxOut_clone(orig_conv); + return (long)ret_ref; } -static inline LDKFilter LDKFilter_init (/*TODO: JS Object Reference */void* o) { - LDKFilter_JCalls *calls = MALLOC(sizeof(LDKFilter_JCalls), "LDKFilter_JCalls"); - atomic_init(&calls->refcnt, 1); - //TODO: Assign calls->o from o - LDKFilter ret = { - .this_arg = (void*) calls, - .register_tx = register_tx_jcall, - .register_output = register_output_jcall, - .free = LDKFilter_JCalls_free, - }; - return ret; +uint32_t __attribute__((visibility("default"))) TS_CResult_SecretKeyErrorZ_ok(int8_tArray o) { + LDKSecretKey o_ref; + CHECK(*((uint32_t*)o) == 32); + memcpy(o_ref.bytes, (uint8_t*)(o + 4), 32); + LDKCResult_SecretKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeyErrorZ), "LDKCResult_SecretKeyErrorZ"); + *ret_conv = CResult_SecretKeyErrorZ_ok(o_ref); + return (long)ret_conv; } -long __attribute__((visibility("default"))) TS_LDKFilter_new(/*TODO: JS Object Reference */void* o) { - LDKFilter *res_ptr = MALLOC(sizeof(LDKFilter), "LDKFilter"); - *res_ptr = LDKFilter_init(o); - return (long)res_ptr; + +uint32_t __attribute__((visibility("default"))) TS_CResult_SecretKeyErrorZ_err(uint32_t e) { + LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_js(e); + LDKCResult_SecretKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeyErrorZ), "LDKCResult_SecretKeyErrorZ"); + *ret_conv = CResult_SecretKeyErrorZ_err(e_conv); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_Filter_register_tx(uint32_t this_arg, int8_tArray txid, int8_tArray script_pubkey) { - LDKFilter* this_arg_conv = (LDKFilter*)this_arg; - unsigned char txid_arr[32]; - CHECK(*((uint32_t*)txid) == 32); - memcpy(txid_arr, (uint8_t*)(txid + 4), 32); - unsigned char (*txid_ref)[32] = &txid_arr; - LDKu8slice script_pubkey_ref; - script_pubkey_ref.datalen = *((uint32_t*)script_pubkey); - script_pubkey_ref.data = (int8_t*)(script_pubkey + 4); - (this_arg_conv->register_tx)(this_arg_conv->this_arg, txid_ref, script_pubkey_ref); + +void __attribute__((visibility("default"))) TS_CResult_SecretKeyErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_SecretKeyErrorZ _res_conv = *(LDKCResult_SecretKeyErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_SecretKeyErrorZ_free(_res_conv); } -void __attribute__((visibility("default"))) TS_Filter_register_output(uint32_t this_arg, uint32_t outpoint, int8_tArray script_pubkey) { - LDKFilter* this_arg_conv = (LDKFilter*)this_arg; - LDKOutPoint outpoint_conv; - outpoint_conv.inner = (void*)(outpoint & (~1)); - outpoint_conv.is_owned = false; - LDKu8slice script_pubkey_ref; - script_pubkey_ref.datalen = *((uint32_t*)script_pubkey); - script_pubkey_ref.data = (int8_t*)(script_pubkey + 4); - (this_arg_conv->register_output)(this_arg_conv->this_arg, &outpoint_conv, script_pubkey_ref); +uint32_t __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_ok(int8_tArray o) { + LDKPublicKey o_ref; + CHECK(*((uint32_t*)o) == 33); + memcpy(o_ref.compressed_form, (uint8_t*)(o + 4), 33); + LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ"); + *ret_conv = CResult_PublicKeyErrorZ_ok(o_ref); + return (long)ret_conv; } -typedef struct LDKPersist_JCalls { - atomic_size_t refcnt; - uint32_t persist_new_channel_meth; - uint32_t update_persisted_channel_meth; -} LDKPersist_JCalls; -static void LDKPersist_JCalls_free(void* this_arg) { - LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg; - if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { - js_free(j_calls->persist_new_channel_meth); - js_free(j_calls->update_persisted_channel_meth); - FREE(j_calls); - } +uint32_t __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_err(uint32_t e) { + LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_js(e); + LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ"); + *ret_conv = CResult_PublicKeyErrorZ_err(e_conv); + return (long)ret_conv; } -LDKCResult_NoneChannelMonitorUpdateErrZ persist_new_channel_jcall(const void* this_arg, LDKOutPoint id, const LDKChannelMonitor * data) { - LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg; - LDKOutPoint id_var = id; - CHECK((((long)id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long id_ref = (long)id_var.inner; - if (id_var.is_owned) { - id_ref |= 1; - } - LDKChannelMonitor data_var = *data; - data_var = ChannelMonitor_clone(data); - CHECK((((long)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long data_ref = (long)data_var.inner; - if (data_var.is_owned) { - data_ref |= 1; - } - LDKCResult_NoneChannelMonitorUpdateErrZ* ret = (LDKCResult_NoneChannelMonitorUpdateErrZ*)js_invoke_function_2(j_calls->persist_new_channel_meth, id_ref, data_ref); - LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone((LDKCResult_NoneChannelMonitorUpdateErrZ*)ret); - return ret_conv; + +void __attribute__((visibility("default"))) TS_CResult_PublicKeyErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_PublicKeyErrorZ _res_conv = *(LDKCResult_PublicKeyErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_PublicKeyErrorZ_free(_res_conv); } -LDKCResult_NoneChannelMonitorUpdateErrZ update_persisted_channel_jcall(const void* this_arg, LDKOutPoint id, const LDKChannelMonitorUpdate * update, const LDKChannelMonitor * data) { - LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg; - LDKOutPoint id_var = id; - CHECK((((long)id_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&id_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long id_ref = (long)id_var.inner; - if (id_var.is_owned) { - id_ref |= 1; - } - LDKChannelMonitorUpdate update_var = *update; - update_var = ChannelMonitorUpdate_clone(update); - CHECK((((long)update_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&update_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long update_ref = (long)update_var.inner; - if (update_var.is_owned) { - update_ref |= 1; - } - LDKChannelMonitor data_var = *data; - data_var = ChannelMonitor_clone(data); - CHECK((((long)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long data_ref = (long)data_var.inner; - if (data_var.is_owned) { - data_ref |= 1; - } - LDKCResult_NoneChannelMonitorUpdateErrZ* ret = (LDKCResult_NoneChannelMonitorUpdateErrZ*)js_invoke_function_3(j_calls->update_persisted_channel_meth, id_ref, update_ref, data_ref); - LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone((LDKCResult_NoneChannelMonitorUpdateErrZ*)ret); - return ret_conv; + +uint32_t __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_ok(uint32_t o) { + LDKTxCreationKeys o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = TxCreationKeys_clone(&o_conv); + LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ"); + *ret_conv = CResult_TxCreationKeysDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -static void* LDKPersist_JCalls_clone(const void* this_arg) { - LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg; - atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); - return (void*) this_arg; + +uint32_t __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ"); + *ret_conv = CResult_TxCreationKeysDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -static inline LDKPersist LDKPersist_init (/*TODO: JS Object Reference */void* o) { - LDKPersist_JCalls *calls = MALLOC(sizeof(LDKPersist_JCalls), "LDKPersist_JCalls"); - atomic_init(&calls->refcnt, 1); - //TODO: Assign calls->o from o - LDKPersist ret = { - .this_arg = (void*) calls, - .persist_new_channel = persist_new_channel_jcall, - .update_persisted_channel = update_persisted_channel_jcall, - .free = LDKPersist_JCalls_free, - }; - return ret; +void __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_TxCreationKeysDecodeErrorZ _res_conv = *(LDKCResult_TxCreationKeysDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_TxCreationKeysDecodeErrorZ_free(_res_conv); } -long __attribute__((visibility("default"))) TS_LDKPersist_new(/*TODO: JS Object Reference */void* o) { - LDKPersist *res_ptr = MALLOC(sizeof(LDKPersist), "LDKPersist"); - *res_ptr = LDKPersist_init(o); - return (long)res_ptr; + +uint32_t __attribute__((visibility("default"))) TS_CResult_TxCreationKeysDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_TxCreationKeysDecodeErrorZ* orig_conv = (LDKCResult_TxCreationKeysDecodeErrorZ*)(orig & ~1); + LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ"); + *ret_conv = CResult_TxCreationKeysDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_Persist_persist_new_channel(uint32_t this_arg, uint32_t id, uint32_t data) { - LDKPersist* this_arg_conv = (LDKPersist*)this_arg; - LDKOutPoint id_conv; - id_conv.inner = (void*)(id & (~1)); - id_conv.is_owned = (id & 1) || (id == 0); - id_conv = OutPoint_clone(&id_conv); - LDKChannelMonitor data_conv; - data_conv.inner = (void*)(data & (~1)); - data_conv.is_owned = false; - LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ"); - *ret_conv = (this_arg_conv->persist_new_channel)(this_arg_conv->this_arg, id_conv, &data_conv); + +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_ok(uint32_t o) { + LDKChannelPublicKeys o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = ChannelPublicKeys_clone(&o_conv); + LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ"); + *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_Persist_update_persisted_channel(uint32_t this_arg, uint32_t id, uint32_t update, uint32_t data) { - LDKPersist* this_arg_conv = (LDKPersist*)this_arg; - LDKOutPoint id_conv; - id_conv.inner = (void*)(id & (~1)); - id_conv.is_owned = (id & 1) || (id == 0); - id_conv = OutPoint_clone(&id_conv); - LDKChannelMonitorUpdate update_conv; - update_conv.inner = (void*)(update & (~1)); - update_conv.is_owned = false; - LDKChannelMonitor data_conv; - data_conv.inner = (void*)(data & (~1)); - data_conv.is_owned = false; - LDKCResult_NoneChannelMonitorUpdateErrZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneChannelMonitorUpdateErrZ), "LDKCResult_NoneChannelMonitorUpdateErrZ"); - *ret_conv = (this_arg_conv->update_persisted_channel)(this_arg_conv->this_arg, id_conv, &update_conv, &data_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ"); + *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_err(e_conv); return (long)ret_conv; } -typedef struct LDKChannelMessageHandler_JCalls { - atomic_size_t refcnt; - LDKMessageSendEventsProvider_JCalls* MessageSendEventsProvider; - uint32_t handle_open_channel_meth; - uint32_t handle_accept_channel_meth; - uint32_t handle_funding_created_meth; - uint32_t handle_funding_signed_meth; - uint32_t handle_funding_locked_meth; - uint32_t handle_shutdown_meth; - uint32_t handle_closing_signed_meth; - uint32_t handle_update_add_htlc_meth; - uint32_t handle_update_fulfill_htlc_meth; - uint32_t handle_update_fail_htlc_meth; - uint32_t handle_update_fail_malformed_htlc_meth; - uint32_t handle_commitment_signed_meth; - uint32_t handle_revoke_and_ack_meth; - uint32_t handle_update_fee_meth; - uint32_t handle_announcement_signatures_meth; - uint32_t peer_disconnected_meth; - uint32_t peer_connected_meth; - uint32_t handle_channel_reestablish_meth; - uint32_t handle_error_meth; -} LDKChannelMessageHandler_JCalls; -static void LDKChannelMessageHandler_JCalls_free(void* this_arg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { - js_free(j_calls->handle_open_channel_meth); - js_free(j_calls->handle_accept_channel_meth); - js_free(j_calls->handle_funding_created_meth); - js_free(j_calls->handle_funding_signed_meth); - js_free(j_calls->handle_funding_locked_meth); - js_free(j_calls->handle_shutdown_meth); - js_free(j_calls->handle_closing_signed_meth); - js_free(j_calls->handle_update_add_htlc_meth); - js_free(j_calls->handle_update_fulfill_htlc_meth); - js_free(j_calls->handle_update_fail_htlc_meth); - js_free(j_calls->handle_update_fail_malformed_htlc_meth); - js_free(j_calls->handle_commitment_signed_meth); - js_free(j_calls->handle_revoke_and_ack_meth); - js_free(j_calls->handle_update_fee_meth); - js_free(j_calls->handle_announcement_signatures_meth); - js_free(j_calls->peer_disconnected_meth); - js_free(j_calls->peer_connected_meth); - js_free(j_calls->handle_channel_reestablish_meth); - js_free(j_calls->handle_error_meth); - FREE(j_calls); - } +void __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_ChannelPublicKeysDecodeErrorZ _res_conv = *(LDKCResult_ChannelPublicKeysDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_ChannelPublicKeysDecodeErrorZ_free(_res_conv); } -void handle_open_channel_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKInitFeatures their_features, const LDKOpenChannel * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKInitFeatures their_features_var = their_features; - CHECK((((long)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long their_features_ref = (long)their_features_var.inner; - if (their_features_var.is_owned) { - their_features_ref |= 1; - } - LDKOpenChannel msg_var = *msg; - msg_var = OpenChannel_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - js_invoke_function_3(j_calls->handle_open_channel_meth, their_node_id_arr, their_features_ref, msg_ref); + +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelPublicKeysDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_ChannelPublicKeysDecodeErrorZ* orig_conv = (LDKCResult_ChannelPublicKeysDecodeErrorZ*)(orig & ~1); + LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ"); + *ret_conv = CResult_ChannelPublicKeysDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_ok(uint32_t o) { + LDKTxCreationKeys o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = TxCreationKeys_clone(&o_conv); + LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ"); + *ret_conv = CResult_TxCreationKeysErrorZ_ok(o_conv); + return (long)ret_conv; } -void handle_accept_channel_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKInitFeatures their_features, const LDKAcceptChannel * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKInitFeatures their_features_var = their_features; - CHECK((((long)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long their_features_ref = (long)their_features_var.inner; - if (their_features_var.is_owned) { - their_features_ref |= 1; - } - LDKAcceptChannel msg_var = *msg; - msg_var = AcceptChannel_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - js_invoke_function_3(j_calls->handle_accept_channel_meth, their_node_id_arr, their_features_ref, msg_ref); + +uint32_t __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_err(uint32_t e) { + LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_js(e); + LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ"); + *ret_conv = CResult_TxCreationKeysErrorZ_err(e_conv); + return (long)ret_conv; } -void handle_funding_created_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKFundingCreated * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKFundingCreated msg_var = *msg; - msg_var = FundingCreated_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - js_invoke_function_2(j_calls->handle_funding_created_meth, their_node_id_arr, msg_ref); + +void __attribute__((visibility("default"))) TS_CResult_TxCreationKeysErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_TxCreationKeysErrorZ _res_conv = *(LDKCResult_TxCreationKeysErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_TxCreationKeysErrorZ_free(_res_conv); } -void handle_funding_signed_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKFundingSigned * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKFundingSigned msg_var = *msg; - msg_var = FundingSigned_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - js_invoke_function_2(j_calls->handle_funding_signed_meth, their_node_id_arr, msg_ref); + +uint32_t __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(uint32_t o) { + LDKHTLCOutputInCommitment o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = HTLCOutputInCommitment_clone(&o_conv); + LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ"); + *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -void handle_funding_locked_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKFundingLocked * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKFundingLocked msg_var = *msg; - msg_var = FundingLocked_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - js_invoke_function_2(j_calls->handle_funding_locked_meth, their_node_id_arr, msg_ref); + +uint32_t __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ"); + *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -void handle_shutdown_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKShutdown * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKShutdown msg_var = *msg; - msg_var = Shutdown_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - js_invoke_function_2(j_calls->handle_shutdown_meth, their_node_id_arr, msg_ref); + +void __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_HTLCOutputInCommitmentDecodeErrorZ _res_conv = *(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_HTLCOutputInCommitmentDecodeErrorZ_free(_res_conv); } -void handle_closing_signed_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKClosingSigned * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKClosingSigned msg_var = *msg; - msg_var = ClosingSigned_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - js_invoke_function_2(j_calls->handle_closing_signed_meth, their_node_id_arr, msg_ref); + +uint32_t __attribute__((visibility("default"))) TS_CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* orig_conv = (LDKCResult_HTLCOutputInCommitmentDecodeErrorZ*)(orig & ~1); + LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ"); + *ret_conv = CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -void handle_update_add_htlc_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateAddHTLC * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKUpdateAddHTLC msg_var = *msg; - msg_var = UpdateAddHTLC_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - js_invoke_function_2(j_calls->handle_update_add_htlc_meth, their_node_id_arr, msg_ref); + +uint32_t __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(uint32_t o) { + LDKCounterpartyChannelTransactionParameters o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = CounterpartyChannelTransactionParameters_clone(&o_conv); + LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ"); + *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -void handle_update_fulfill_htlc_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateFulfillHTLC * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKUpdateFulfillHTLC msg_var = *msg; - msg_var = UpdateFulfillHTLC_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - js_invoke_function_2(j_calls->handle_update_fulfill_htlc_meth, their_node_id_arr, msg_ref); + +uint32_t __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ"); + *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -void handle_update_fail_htlc_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateFailHTLC * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKUpdateFailHTLC msg_var = *msg; - msg_var = UpdateFailHTLC_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - js_invoke_function_2(j_calls->handle_update_fail_htlc_meth, their_node_id_arr, msg_ref); + +void __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ _res_conv = *(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(_res_conv); } -void handle_update_fail_malformed_htlc_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateFailMalformedHTLC * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKUpdateFailMalformedHTLC msg_var = *msg; - msg_var = UpdateFailMalformedHTLC_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - js_invoke_function_2(j_calls->handle_update_fail_malformed_htlc_meth, their_node_id_arr, msg_ref); + +uint32_t __attribute__((visibility("default"))) TS_CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* orig_conv = (LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ*)(orig & ~1); + LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ"); + *ret_conv = CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -void handle_commitment_signed_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKCommitmentSigned * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKCommitmentSigned msg_var = *msg; - msg_var = CommitmentSigned_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - js_invoke_function_2(j_calls->handle_commitment_signed_meth, their_node_id_arr, msg_ref); + +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_ok(uint32_t o) { + LDKChannelTransactionParameters o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = ChannelTransactionParameters_clone(&o_conv); + LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ"); + *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -void handle_revoke_and_ack_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKRevokeAndACK * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKRevokeAndACK msg_var = *msg; - msg_var = RevokeAndACK_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - js_invoke_function_2(j_calls->handle_revoke_and_ack_meth, their_node_id_arr, msg_ref); + +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ"); + *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -void handle_update_fee_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKUpdateFee * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKUpdateFee msg_var = *msg; - msg_var = UpdateFee_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - js_invoke_function_2(j_calls->handle_update_fee_meth, their_node_id_arr, msg_ref); + +void __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_ChannelTransactionParametersDecodeErrorZ _res_conv = *(LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_ChannelTransactionParametersDecodeErrorZ_free(_res_conv); } -void handle_announcement_signatures_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKAnnouncementSignatures * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKAnnouncementSignatures msg_var = *msg; - msg_var = AnnouncementSignatures_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; + +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelTransactionParametersDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_ChannelTransactionParametersDecodeErrorZ* orig_conv = (LDKCResult_ChannelTransactionParametersDecodeErrorZ*)(orig & ~1); + LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ"); + *ret_conv = CResult_ChannelTransactionParametersDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CVec_SignatureZ_free(ptrArray _res) { + LDKCVec_SignatureZ _res_constr; + _res_constr.datalen = *((uint32_t*)_res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements"); + else + _res_constr.data = NULL; + int8_tArray* _res_vals = (int8_tArray*)(_res + 4); + for (size_t m = 0; m < _res_constr.datalen; m++) { + int8_tArray arr_conv_12 = _res_vals[m]; + LDKSignature arr_conv_12_ref; + CHECK(*((uint32_t*)arr_conv_12) == 64); + memcpy(arr_conv_12_ref.compact_form, (uint8_t*)(arr_conv_12 + 4), 64); + _res_constr.data[m] = arr_conv_12_ref; } - js_invoke_function_2(j_calls->handle_announcement_signatures_meth, their_node_id_arr, msg_ref); + CVec_SignatureZ_free(_res_constr); } -void peer_disconnected_jcall(const void* this_arg, LDKPublicKey their_node_id, bool no_connection_possible) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - js_invoke_function_2(j_calls->peer_disconnected_meth, their_node_id_arr, no_connection_possible); + +uint32_t __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_ok(uint32_t o) { + LDKHolderCommitmentTransaction o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = HolderCommitmentTransaction_clone(&o_conv); + LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -void peer_connected_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKInit * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKInit msg_var = *msg; - msg_var = Init_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - js_invoke_function_2(j_calls->peer_connected_meth, their_node_id_arr, msg_ref); + +uint32_t __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -void handle_channel_reestablish_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKChannelReestablish * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKChannelReestablish msg_var = *msg; - msg_var = ChannelReestablish_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - js_invoke_function_2(j_calls->handle_channel_reestablish_meth, their_node_id_arr, msg_ref); + +void __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_HolderCommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_HolderCommitmentTransactionDecodeErrorZ_free(_res_conv); } -void handle_error_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKErrorMessage * msg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKErrorMessage msg_var = *msg; - msg_var = ErrorMessage_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - js_invoke_function_2(j_calls->handle_error_meth, their_node_id_arr, msg_ref); + +uint32_t __attribute__((visibility("default"))) TS_CResult_HolderCommitmentTransactionDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_HolderCommitmentTransactionDecodeErrorZ* orig_conv = (LDKCResult_HolderCommitmentTransactionDecodeErrorZ*)(orig & ~1); + LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_HolderCommitmentTransactionDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -static void* LDKChannelMessageHandler_JCalls_clone(const void* this_arg) { - LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg; - atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); - atomic_fetch_add_explicit(&j_calls->MessageSendEventsProvider->refcnt, 1, memory_order_release); - return (void*) this_arg; + +uint32_t __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(uint32_t o) { + LDKBuiltCommitmentTransaction o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = BuiltCommitmentTransaction_clone(&o_conv); + LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -static inline LDKChannelMessageHandler LDKChannelMessageHandler_init (/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */void* MessageSendEventsProvider) { - LDKChannelMessageHandler_JCalls *calls = MALLOC(sizeof(LDKChannelMessageHandler_JCalls), "LDKChannelMessageHandler_JCalls"); - atomic_init(&calls->refcnt, 1); - //TODO: Assign calls->o from o - LDKChannelMessageHandler ret = { - .this_arg = (void*) calls, - .handle_open_channel = handle_open_channel_jcall, - .handle_accept_channel = handle_accept_channel_jcall, - .handle_funding_created = handle_funding_created_jcall, - .handle_funding_signed = handle_funding_signed_jcall, - .handle_funding_locked = handle_funding_locked_jcall, - .handle_shutdown = handle_shutdown_jcall, - .handle_closing_signed = handle_closing_signed_jcall, - .handle_update_add_htlc = handle_update_add_htlc_jcall, - .handle_update_fulfill_htlc = handle_update_fulfill_htlc_jcall, - .handle_update_fail_htlc = handle_update_fail_htlc_jcall, - .handle_update_fail_malformed_htlc = handle_update_fail_malformed_htlc_jcall, - .handle_commitment_signed = handle_commitment_signed_jcall, - .handle_revoke_and_ack = handle_revoke_and_ack_jcall, - .handle_update_fee = handle_update_fee_jcall, - .handle_announcement_signatures = handle_announcement_signatures_jcall, - .peer_disconnected = peer_disconnected_jcall, - .peer_connected = peer_connected_jcall, - .handle_channel_reestablish = handle_channel_reestablish_jcall, - .handle_error = handle_error_jcall, - .free = LDKChannelMessageHandler_JCalls_free, - .MessageSendEventsProvider = LDKMessageSendEventsProvider_init(MessageSendEventsProvider), - }; - calls->MessageSendEventsProvider = ret.MessageSendEventsProvider.this_arg; - return ret; +uint32_t __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -long __attribute__((visibility("default"))) TS_LDKChannelMessageHandler_new(/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */ void* MessageSendEventsProvider) { - LDKChannelMessageHandler *res_ptr = MALLOC(sizeof(LDKChannelMessageHandler), "LDKChannelMessageHandler"); - *res_ptr = LDKChannelMessageHandler_init(o, MessageSendEventsProvider); - return (long)res_ptr; + +void __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_BuiltCommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_BuiltCommitmentTransactionDecodeErrorZ_free(_res_conv); } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_open_channel(uint32_t this_arg, int8_tArray their_node_id, uint32_t their_features, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKInitFeatures their_features_conv; - their_features_conv.inner = (void*)(their_features & (~1)); - their_features_conv.is_owned = (their_features & 1) || (their_features == 0); - // Warning: we need a move here but no clone is available for LDKInitFeatures - LDKOpenChannel msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_open_channel)(this_arg_conv->this_arg, their_node_id_ref, their_features_conv, &msg_conv); + +uint32_t __attribute__((visibility("default"))) TS_CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* orig_conv = (LDKCResult_BuiltCommitmentTransactionDecodeErrorZ*)(orig & ~1); + LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_accept_channel(uint32_t this_arg, int8_tArray their_node_id, uint32_t their_features, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKInitFeatures their_features_conv; - their_features_conv.inner = (void*)(their_features & (~1)); - their_features_conv.is_owned = (their_features & 1) || (their_features == 0); - // Warning: we need a move here but no clone is available for LDKInitFeatures - LDKAcceptChannel msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_accept_channel)(this_arg_conv->this_arg, their_node_id_ref, their_features_conv, &msg_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_ok(uint32_t o) { + LDKCommitmentTransaction o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = CommitmentTransaction_clone(&o_conv); + LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_created(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKFundingCreated msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_funding_created)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKFundingSigned msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_funding_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +void __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_CommitmentTransactionDecodeErrorZ _res_conv = *(LDKCResult_CommitmentTransactionDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_CommitmentTransactionDecodeErrorZ_free(_res_conv); } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_funding_locked(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKFundingLocked msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_funding_locked)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_CommitmentTransactionDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_CommitmentTransactionDecodeErrorZ* orig_conv = (LDKCResult_CommitmentTransactionDecodeErrorZ*)(orig & ~1); + LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ"); + *ret_conv = CResult_CommitmentTransactionDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_shutdown(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKShutdown msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_shutdown)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_ok(uint32_t o) { + LDKTrustedCommitmentTransaction o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + // Warning: we need a move here but no clone is available for LDKTrustedCommitmentTransaction + LDKCResult_TrustedCommitmentTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ), "LDKCResult_TrustedCommitmentTransactionNoneZ"); + *ret_conv = CResult_TrustedCommitmentTransactionNoneZ_ok(o_conv); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_closing_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKClosingSigned msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_closing_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_err() { + LDKCResult_TrustedCommitmentTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ), "LDKCResult_TrustedCommitmentTransactionNoneZ"); + *ret_conv = CResult_TrustedCommitmentTransactionNoneZ_err(); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_TrustedCommitmentTransactionNoneZ _res_conv = *(LDKCResult_TrustedCommitmentTransactionNoneZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_TrustedCommitmentTransactionNoneZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_ok(ptrArray o) { + LDKCVec_SignatureZ o_constr; + o_constr.datalen = *((uint32_t*)o); + if (o_constr.datalen > 0) + o_constr.data = MALLOC(o_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements"); + else + o_constr.data = NULL; + int8_tArray* o_vals = (int8_tArray*)(o + 4); + for (size_t m = 0; m < o_constr.datalen; m++) { + int8_tArray arr_conv_12 = o_vals[m]; + LDKSignature arr_conv_12_ref; + CHECK(*((uint32_t*)arr_conv_12) == 64); + memcpy(arr_conv_12_ref.compact_form, (uint8_t*)(arr_conv_12 + 4), 64); + o_constr.data[m] = arr_conv_12_ref; + } + LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ"); + *ret_conv = CResult_CVec_SignatureZNoneZ_ok(o_constr); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_err() { + LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ"); + *ret_conv = CResult_CVec_SignatureZNoneZ_err(); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_CVec_SignatureZNoneZ _res_conv = *(LDKCResult_CVec_SignatureZNoneZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_CVec_SignatureZNoneZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_clone(uint32_t orig) { + LDKCResult_CVec_SignatureZNoneZ* orig_conv = (LDKCResult_CVec_SignatureZNoneZ*)(orig & ~1); + LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ"); + *ret_conv = CResult_CVec_SignatureZNoneZ_clone(orig_conv); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_add_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKUpdateAddHTLC msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_update_add_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +void __attribute__((visibility("default"))) TS_CVec_PublicKeyZ_free(ptrArray _res) { + LDKCVec_PublicKeyZ _res_constr; + _res_constr.datalen = *((uint32_t*)_res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKPublicKey), "LDKCVec_PublicKeyZ Elements"); + else + _res_constr.data = NULL; + int8_tArray* _res_vals = (int8_tArray*)(_res + 4); + for (size_t m = 0; m < _res_constr.datalen; m++) { + int8_tArray arr_conv_12 = _res_vals[m]; + LDKPublicKey arr_conv_12_ref; + CHECK(*((uint32_t*)arr_conv_12) == 33); + memcpy(arr_conv_12_ref.compressed_form, (uint8_t*)(arr_conv_12 + 4), 33); + _res_constr.data[m] = arr_conv_12_ref; + } + CVec_PublicKeyZ_free(_res_constr); } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fulfill_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKUpdateFulfillHTLC msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_update_fulfill_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +void __attribute__((visibility("default"))) TS_CVec_u8Z_free(int8_tArray _res) { + LDKCVec_u8Z _res_ref; + _res_ref.datalen = *((uint32_t*)_res); + _res_ref.data = MALLOC(_res_ref.datalen, "LDKCVec_u8Z Bytes"); + memcpy(_res_ref.data, (uint8_t*)(_res + 4), _res_ref.datalen); + CVec_u8Z_free(_res_ref); } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fail_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKUpdateFailHTLC msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_update_fail_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_ok(int8_tArray o) { + LDKCVec_u8Z o_ref; + o_ref.datalen = *((uint32_t*)o); + o_ref.data = MALLOC(o_ref.datalen, "LDKCVec_u8Z Bytes"); + memcpy(o_ref.data, (uint8_t*)(o + 4), o_ref.datalen); + LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ"); + *ret_conv = CResult_CVec_u8ZPeerHandleErrorZ_ok(o_ref); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fail_malformed_htlc(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKUpdateFailMalformedHTLC msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_update_fail_malformed_htlc)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_err(uint32_t e) { + LDKPeerHandleError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = PeerHandleError_clone(&e_conv); + LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ"); + *ret_conv = CResult_CVec_u8ZPeerHandleErrorZ_err(e_conv); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_commitment_signed(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKCommitmentSigned msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_commitment_signed)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +void __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_CVec_u8ZPeerHandleErrorZ _res_conv = *(LDKCResult_CVec_u8ZPeerHandleErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_CVec_u8ZPeerHandleErrorZ_free(_res_conv); } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_revoke_and_ack(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKRevokeAndACK msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_revoke_and_ack)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_clone(uint32_t orig) { + LDKCResult_CVec_u8ZPeerHandleErrorZ* orig_conv = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(orig & ~1); + LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ"); + *ret_conv = CResult_CVec_u8ZPeerHandleErrorZ_clone(orig_conv); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_update_fee(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKUpdateFee msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_update_fee)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_ok() { + LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ"); + *ret_conv = CResult_NonePeerHandleErrorZ_ok(); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_announcement_signatures(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKAnnouncementSignatures msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_announcement_signatures)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_err(uint32_t e) { + LDKPeerHandleError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = PeerHandleError_clone(&e_conv); + LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ"); + *ret_conv = CResult_NonePeerHandleErrorZ_err(e_conv); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_peer_disconnected(uint32_t this_arg, int8_tArray their_node_id, jboolean no_connection_possible) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - (this_arg_conv->peer_disconnected)(this_arg_conv->this_arg, their_node_id_ref, no_connection_possible); +void __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_NonePeerHandleErrorZ _res_conv = *(LDKCResult_NonePeerHandleErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_NonePeerHandleErrorZ_free(_res_conv); } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_peer_connected(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKInit msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->peer_connected)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_clone(uint32_t orig) { + LDKCResult_NonePeerHandleErrorZ* orig_conv = (LDKCResult_NonePeerHandleErrorZ*)(orig & ~1); + LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ"); + *ret_conv = CResult_NonePeerHandleErrorZ_clone(orig_conv); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_channel_reestablish(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKChannelReestablish msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_channel_reestablish)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_ok(jboolean o) { + LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ"); + *ret_conv = CResult_boolPeerHandleErrorZ_ok(o); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_ChannelMessageHandler_handle_error(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKErrorMessage msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; - (this_arg_conv->handle_error)(this_arg_conv->this_arg, their_node_id_ref, &msg_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_err(uint32_t e) { + LDKPeerHandleError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = PeerHandleError_clone(&e_conv); + LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ"); + *ret_conv = CResult_boolPeerHandleErrorZ_err(e_conv); + return (long)ret_conv; } -typedef struct LDKRoutingMessageHandler_JCalls { - atomic_size_t refcnt; - LDKMessageSendEventsProvider_JCalls* MessageSendEventsProvider; - uint32_t handle_node_announcement_meth; - uint32_t handle_channel_announcement_meth; - uint32_t handle_channel_update_meth; - uint32_t handle_htlc_fail_channel_update_meth; - uint32_t get_next_channel_announcements_meth; - uint32_t get_next_node_announcements_meth; - uint32_t sync_routing_table_meth; - uint32_t handle_reply_channel_range_meth; - uint32_t handle_reply_short_channel_ids_end_meth; - uint32_t handle_query_channel_range_meth; - uint32_t handle_query_short_channel_ids_meth; -} LDKRoutingMessageHandler_JCalls; -static void LDKRoutingMessageHandler_JCalls_free(void* this_arg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { - js_free(j_calls->handle_node_announcement_meth); - js_free(j_calls->handle_channel_announcement_meth); - js_free(j_calls->handle_channel_update_meth); - js_free(j_calls->handle_htlc_fail_channel_update_meth); - js_free(j_calls->get_next_channel_announcements_meth); - js_free(j_calls->get_next_node_announcements_meth); - js_free(j_calls->sync_routing_table_meth); - js_free(j_calls->handle_reply_channel_range_meth); - js_free(j_calls->handle_reply_short_channel_ids_end_meth); - js_free(j_calls->handle_query_channel_range_meth); - js_free(j_calls->handle_query_short_channel_ids_meth); - FREE(j_calls); - } -} -LDKCResult_boolLightningErrorZ handle_node_announcement_jcall(const void* this_arg, const LDKNodeAnnouncement * msg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - LDKNodeAnnouncement msg_var = *msg; - msg_var = NodeAnnouncement_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - LDKCResult_boolLightningErrorZ* ret = (LDKCResult_boolLightningErrorZ*)js_invoke_function_1(j_calls->handle_node_announcement_meth, msg_ref); - LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_boolLightningErrorZ_clone((LDKCResult_boolLightningErrorZ*)ret); - return ret_conv; +void __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_boolPeerHandleErrorZ _res_conv = *(LDKCResult_boolPeerHandleErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_boolPeerHandleErrorZ_free(_res_conv); } -LDKCResult_boolLightningErrorZ handle_channel_announcement_jcall(const void* this_arg, const LDKChannelAnnouncement * msg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - LDKChannelAnnouncement msg_var = *msg; - msg_var = ChannelAnnouncement_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - LDKCResult_boolLightningErrorZ* ret = (LDKCResult_boolLightningErrorZ*)js_invoke_function_1(j_calls->handle_channel_announcement_meth, msg_ref); - LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_boolLightningErrorZ_clone((LDKCResult_boolLightningErrorZ*)ret); - return ret_conv; + +uint32_t __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_clone(uint32_t orig) { + LDKCResult_boolPeerHandleErrorZ* orig_conv = (LDKCResult_boolPeerHandleErrorZ*)(orig & ~1); + LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ"); + *ret_conv = CResult_boolPeerHandleErrorZ_clone(orig_conv); + return (long)ret_conv; } -LDKCResult_boolLightningErrorZ handle_channel_update_jcall(const void* this_arg, const LDKChannelUpdate * msg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - LDKChannelUpdate msg_var = *msg; - msg_var = ChannelUpdate_clone(msg); - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - LDKCResult_boolLightningErrorZ* ret = (LDKCResult_boolLightningErrorZ*)js_invoke_function_1(j_calls->handle_channel_update_meth, msg_ref); - LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_boolLightningErrorZ_clone((LDKCResult_boolLightningErrorZ*)ret); - return ret_conv; + +uint32_t __attribute__((visibility("default"))) TS_CResult_InitFeaturesDecodeErrorZ_ok(uint32_t o) { + LDKInitFeatures o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = InitFeatures_clone(&o_conv); + LDKCResult_InitFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitFeaturesDecodeErrorZ), "LDKCResult_InitFeaturesDecodeErrorZ"); + *ret_conv = CResult_InitFeaturesDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -void handle_htlc_fail_channel_update_jcall(const void* this_arg, const LDKHTLCFailChannelUpdate * update) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - long ret_update = (long)update; - js_invoke_function_1(j_calls->handle_htlc_fail_channel_update_meth, ret_update); + +uint32_t __attribute__((visibility("default"))) TS_CResult_InitFeaturesDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_InitFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitFeaturesDecodeErrorZ), "LDKCResult_InitFeaturesDecodeErrorZ"); + *ret_conv = CResult_InitFeaturesDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcements_jcall(const void* this_arg, uint64_t starting_point, uint8_t batch_amount) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - uint32_tArray arg = js_invoke_function_2(j_calls->get_next_channel_announcements_meth, starting_point, batch_amount); - LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ arg_constr; - arg_constr.datalen = *((uint32_t*)arg); - if (arg_constr.datalen > 0) - arg_constr.data = MALLOC(arg_constr.datalen * sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ Elements"); - else - arg_constr.data = NULL; - uint32_t* arg_vals = (uint32_t*)(arg + 4); - for (size_t l = 0; l < arg_constr.datalen; l++) { - uint32_t arr_conv_63 = arg_vals[l]; - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ arr_conv_63_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(((uint64_t)arr_conv_63) & ~1); - FREE((void*)arr_conv_63); - arg_constr.data[l] = arr_conv_63_conv; - } - return arg_constr; + +void __attribute__((visibility("default"))) TS_CResult_InitFeaturesDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_InitFeaturesDecodeErrorZ _res_conv = *(LDKCResult_InitFeaturesDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_InitFeaturesDecodeErrorZ_free(_res_conv); } -LDKCVec_NodeAnnouncementZ get_next_node_announcements_jcall(const void* this_arg, LDKPublicKey starting_point, uint8_t batch_amount) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - int8_tArray starting_point_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(starting_point_arr + 4), starting_point.compressed_form, 33); - uint32_tArray arg = js_invoke_function_2(j_calls->get_next_node_announcements_meth, starting_point_arr, batch_amount); - LDKCVec_NodeAnnouncementZ arg_constr; - arg_constr.datalen = *((uint32_t*)arg); - if (arg_constr.datalen > 0) - arg_constr.data = MALLOC(arg_constr.datalen * sizeof(LDKNodeAnnouncement), "LDKCVec_NodeAnnouncementZ Elements"); - else - arg_constr.data = NULL; - uint32_t* arg_vals = (uint32_t*)(arg + 4); - for (size_t s = 0; s < arg_constr.datalen; s++) { - uint32_t arr_conv_18 = arg_vals[s]; - LDKNodeAnnouncement arr_conv_18_conv; - arr_conv_18_conv.inner = (void*)(arr_conv_18 & (~1)); - arr_conv_18_conv.is_owned = (arr_conv_18 & 1) || (arr_conv_18 == 0); - arr_conv_18_conv = NodeAnnouncement_clone(&arr_conv_18_conv); - arg_constr.data[s] = arr_conv_18_conv; - } - return arg_constr; + +uint32_t __attribute__((visibility("default"))) TS_CResult_NodeFeaturesDecodeErrorZ_ok(uint32_t o) { + LDKNodeFeatures o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = NodeFeatures_clone(&o_conv); + LDKCResult_NodeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeFeaturesDecodeErrorZ), "LDKCResult_NodeFeaturesDecodeErrorZ"); + *ret_conv = CResult_NodeFeaturesDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -void sync_routing_table_jcall(const void* this_arg, LDKPublicKey their_node_id, const LDKInit * init) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKInit init_var = *init; - init_var = Init_clone(init); - CHECK((((long)init_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&init_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long init_ref = (long)init_var.inner; - if (init_var.is_owned) { - init_ref |= 1; - } - js_invoke_function_2(j_calls->sync_routing_table_meth, their_node_id_arr, init_ref); + +uint32_t __attribute__((visibility("default"))) TS_CResult_NodeFeaturesDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_NodeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeFeaturesDecodeErrorZ), "LDKCResult_NodeFeaturesDecodeErrorZ"); + *ret_conv = CResult_NodeFeaturesDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -LDKCResult_NoneLightningErrorZ handle_reply_channel_range_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKReplyChannelRange msg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKReplyChannelRange msg_var = msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)js_invoke_function_2(j_calls->handle_reply_channel_range_meth, their_node_id_arr, msg_ref); - LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)ret); - return ret_conv; + +void __attribute__((visibility("default"))) TS_CResult_NodeFeaturesDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_NodeFeaturesDecodeErrorZ _res_conv = *(LDKCResult_NodeFeaturesDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_NodeFeaturesDecodeErrorZ_free(_res_conv); } -LDKCResult_NoneLightningErrorZ handle_reply_short_channel_ids_end_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKReplyShortChannelIdsEnd msg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKReplyShortChannelIdsEnd msg_var = msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)js_invoke_function_2(j_calls->handle_reply_short_channel_ids_end_meth, their_node_id_arr, msg_ref); - LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)ret); - return ret_conv; + +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelFeaturesDecodeErrorZ_ok(uint32_t o) { + LDKChannelFeatures o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = ChannelFeatures_clone(&o_conv); + LDKCResult_ChannelFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ), "LDKCResult_ChannelFeaturesDecodeErrorZ"); + *ret_conv = CResult_ChannelFeaturesDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -LDKCResult_NoneLightningErrorZ handle_query_channel_range_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKQueryChannelRange msg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKQueryChannelRange msg_var = msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)js_invoke_function_2(j_calls->handle_query_channel_range_meth, their_node_id_arr, msg_ref); - LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)ret); - return ret_conv; + +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelFeaturesDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ChannelFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ), "LDKCResult_ChannelFeaturesDecodeErrorZ"); + *ret_conv = CResult_ChannelFeaturesDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -LDKCResult_NoneLightningErrorZ handle_query_short_channel_ids_jcall(const void* this_arg, LDKPublicKey their_node_id, LDKQueryShortChannelIds msg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - int8_tArray their_node_id_arr = init_arr(33, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(their_node_id_arr + 4), their_node_id.compressed_form, 33); - LDKQueryShortChannelIds msg_var = msg; - CHECK((((long)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long msg_ref = (long)msg_var.inner; - if (msg_var.is_owned) { - msg_ref |= 1; - } - LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)js_invoke_function_2(j_calls->handle_query_short_channel_ids_meth, their_node_id_arr, msg_ref); - LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1); - ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)ret); - return ret_conv; + +void __attribute__((visibility("default"))) TS_CResult_ChannelFeaturesDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_ChannelFeaturesDecodeErrorZ _res_conv = *(LDKCResult_ChannelFeaturesDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_ChannelFeaturesDecodeErrorZ_free(_res_conv); } -static void* LDKRoutingMessageHandler_JCalls_clone(const void* this_arg) { - LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; - atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); - atomic_fetch_add_explicit(&j_calls->MessageSendEventsProvider->refcnt, 1, memory_order_release); - return (void*) this_arg; + +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_ok(uint32_t o) { + LDKChannelConfig o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = ChannelConfig_clone(&o_conv); + LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ"); + *ret_conv = CResult_ChannelConfigDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -static inline LDKRoutingMessageHandler LDKRoutingMessageHandler_init (/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */void* MessageSendEventsProvider) { - LDKRoutingMessageHandler_JCalls *calls = MALLOC(sizeof(LDKRoutingMessageHandler_JCalls), "LDKRoutingMessageHandler_JCalls"); - atomic_init(&calls->refcnt, 1); - //TODO: Assign calls->o from o - LDKRoutingMessageHandler ret = { - .this_arg = (void*) calls, - .handle_node_announcement = handle_node_announcement_jcall, - .handle_channel_announcement = handle_channel_announcement_jcall, - .handle_channel_update = handle_channel_update_jcall, - .handle_htlc_fail_channel_update = handle_htlc_fail_channel_update_jcall, - .get_next_channel_announcements = get_next_channel_announcements_jcall, - .get_next_node_announcements = get_next_node_announcements_jcall, - .sync_routing_table = sync_routing_table_jcall, - .handle_reply_channel_range = handle_reply_channel_range_jcall, - .handle_reply_short_channel_ids_end = handle_reply_short_channel_ids_end_jcall, - .handle_query_channel_range = handle_query_channel_range_jcall, - .handle_query_short_channel_ids = handle_query_short_channel_ids_jcall, - .free = LDKRoutingMessageHandler_JCalls_free, - .MessageSendEventsProvider = LDKMessageSendEventsProvider_init(MessageSendEventsProvider), - }; - calls->MessageSendEventsProvider = ret.MessageSendEventsProvider.this_arg; - return ret; +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ"); + *ret_conv = CResult_ChannelConfigDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -long __attribute__((visibility("default"))) TS_LDKRoutingMessageHandler_new(/*TODO: JS Object Reference */void* o, /*TODO: JS Object Reference */ void* MessageSendEventsProvider) { - LDKRoutingMessageHandler *res_ptr = MALLOC(sizeof(LDKRoutingMessageHandler), "LDKRoutingMessageHandler"); - *res_ptr = LDKRoutingMessageHandler_init(o, MessageSendEventsProvider); - return (long)res_ptr; + +void __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_ChannelConfigDecodeErrorZ _res_conv = *(LDKCResult_ChannelConfigDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_ChannelConfigDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_node_announcement(uint32_t this_arg, uint32_t msg) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKNodeAnnouncement msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; + +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelConfigDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_ChannelConfigDecodeErrorZ* orig_conv = (LDKCResult_ChannelConfigDecodeErrorZ*)(orig & ~1); + LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ"); + *ret_conv = CResult_ChannelConfigDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_ok(jboolean o) { LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); - *ret_conv = (this_arg_conv->handle_node_announcement)(this_arg_conv->this_arg, &msg_conv); + *ret_conv = CResult_boolLightningErrorZ_ok(o); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_channel_announcement(uint32_t this_arg, uint32_t msg) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKChannelAnnouncement msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; +uint32_t __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_err(uint32_t e) { + LDKLightningError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = LightningError_clone(&e_conv); LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); - *ret_conv = (this_arg_conv->handle_channel_announcement)(this_arg_conv->this_arg, &msg_conv); + *ret_conv = CResult_boolLightningErrorZ_err(e_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_channel_update(uint32_t this_arg, uint32_t msg) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKChannelUpdate msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = false; +void __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_boolLightningErrorZ _res_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_boolLightningErrorZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_clone(uint32_t orig) { + LDKCResult_boolLightningErrorZ* orig_conv = (LDKCResult_boolLightningErrorZ*)(orig & ~1); LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); - *ret_conv = (this_arg_conv->handle_channel_update)(this_arg_conv->this_arg, &msg_conv); + *ret_conv = CResult_boolLightningErrorZ_clone(orig_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_htlc_fail_channel_update(uint32_t this_arg, uint32_t update) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKHTLCFailChannelUpdate* update_conv = (LDKHTLCFailChannelUpdate*)update; - (this_arg_conv->handle_htlc_fail_channel_update)(this_arg_conv->this_arg, update_conv); +uint32_t __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(uint32_t orig) { + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* orig_conv = (LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(orig & ~1); + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_ref = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ"); + *ret_ref = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(orig_conv); + return (long)ret_ref; +} + +uint32_t __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(uint32_t a, uint32_t b, uint32_t c) { + LDKChannelAnnouncement a_conv; + a_conv.inner = (void*)(a & (~1)); + a_conv.is_owned = (a & 1) || (a == 0); + a_conv = ChannelAnnouncement_clone(&a_conv); + LDKChannelUpdate b_conv; + b_conv.inner = (void*)(b & (~1)); + b_conv.is_owned = (b & 1) || (b == 0); + b_conv = ChannelUpdate_clone(&b_conv); + LDKChannelUpdate c_conv; + c_conv.inner = (void*)(c & (~1)); + c_conv.is_owned = (c & 1) || (c == 0); + c_conv = ChannelUpdate_clone(&c_conv); + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_ref = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ"); + *ret_ref = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(a_conv, b_conv, c_conv); + return (long)ret_ref; } -uint32_tArray __attribute__((visibility("default"))) TS_RoutingMessageHandler_get_next_channel_announcements(uint32_t this_arg, int64_t starting_point, int8_t batch_amount) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret_var = (this_arg_conv->get_next_channel_announcements)(this_arg_conv->this_arg, starting_point, batch_amount); - uint32_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes"); - uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4); - for (size_t l = 0; l < ret_var.datalen; l++) { - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* arr_conv_63_ref = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ"); - *arr_conv_63_ref = ret_var.data[l]; - ret_arr_ptr[l] = (long)arr_conv_63_ref; - } - FREE(ret_var.data); - return ret_arr; +void __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(_res_conv); } -uint32_tArray __attribute__((visibility("default"))) TS_RoutingMessageHandler_get_next_node_announcements(uint32_t this_arg, int8_tArray starting_point, int8_t batch_amount) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKPublicKey starting_point_ref; - CHECK(*((uint32_t*)starting_point) == 33); - memcpy(starting_point_ref.compressed_form, (uint8_t*)(starting_point + 4), 33); - LDKCVec_NodeAnnouncementZ ret_var = (this_arg_conv->get_next_node_announcements)(this_arg_conv->this_arg, starting_point_ref, batch_amount); - uint32_tArray ret_arr = init_arr(ret_var.datalen, sizeof(uint32_t), "Native uint32_tArray Bytes"); - uint32_t *ret_arr_ptr = (uint32_t*)(ret_arr + 4); - for (size_t s = 0; s < ret_var.datalen; s++) { - LDKNodeAnnouncement arr_conv_18_var = ret_var.data[s]; - CHECK((((long)arr_conv_18_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&arr_conv_18_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long arr_conv_18_ref = (long)arr_conv_18_var.inner; - if (arr_conv_18_var.is_owned) { - arr_conv_18_ref |= 1; - } - ret_arr_ptr[s] = arr_conv_18_ref; +void __attribute__((visibility("default"))) TS_CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(uint32_tArray _res) { + LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res_constr; + _res_constr.datalen = *((uint32_t*)_res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ Elements"); + else + _res_constr.data = NULL; + uint32_t* _res_vals = (uint32_t*)(_res + 4); + for (size_t l = 0; l < _res_constr.datalen; l++) { + uint32_t arr_conv_63 = _res_vals[l]; + LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ arr_conv_63_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(((uint64_t)arr_conv_63) & ~1); + FREE((void*)arr_conv_63); + _res_constr.data[l] = arr_conv_63_conv; } - FREE(ret_var.data); - return ret_arr; + CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(_res_constr); } -void __attribute__((visibility("default"))) TS_RoutingMessageHandler_sync_routing_table(uint32_t this_arg, int8_tArray their_node_id, uint32_t init) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKInit init_conv; - init_conv.inner = (void*)(init & (~1)); - init_conv.is_owned = false; - (this_arg_conv->sync_routing_table)(this_arg_conv->this_arg, their_node_id_ref, &init_conv); +void __attribute__((visibility("default"))) TS_CVec_NodeAnnouncementZ_free(uint32_tArray _res) { + LDKCVec_NodeAnnouncementZ _res_constr; + _res_constr.datalen = *((uint32_t*)_res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKNodeAnnouncement), "LDKCVec_NodeAnnouncementZ Elements"); + else + _res_constr.data = NULL; + uint32_t* _res_vals = (uint32_t*)(_res + 4); + for (size_t s = 0; s < _res_constr.datalen; s++) { + uint32_t arr_conv_18 = _res_vals[s]; + LDKNodeAnnouncement arr_conv_18_conv; + arr_conv_18_conv.inner = (void*)(arr_conv_18 & (~1)); + arr_conv_18_conv.is_owned = (arr_conv_18 & 1) || (arr_conv_18 == 0); + _res_constr.data[s] = arr_conv_18_conv; + } + CVec_NodeAnnouncementZ_free(_res_constr); } -uint32_t __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_reply_channel_range(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKReplyChannelRange msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = (msg & 1) || (msg == 0); - msg_conv = ReplyChannelRange_clone(&msg_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_ok() { LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); - *ret_conv = (this_arg_conv->handle_reply_channel_range)(this_arg_conv->this_arg, their_node_id_ref, msg_conv); + *ret_conv = CResult_NoneLightningErrorZ_ok(); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_reply_short_channel_ids_end(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKReplyShortChannelIdsEnd msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = (msg & 1) || (msg == 0); - msg_conv = ReplyShortChannelIdsEnd_clone(&msg_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_err(uint32_t e) { + LDKLightningError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = LightningError_clone(&e_conv); LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); - *ret_conv = (this_arg_conv->handle_reply_short_channel_ids_end)(this_arg_conv->this_arg, their_node_id_ref, msg_conv); + *ret_conv = CResult_NoneLightningErrorZ_err(e_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_query_channel_range(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKQueryChannelRange msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = (msg & 1) || (msg == 0); - msg_conv = QueryChannelRange_clone(&msg_conv); - LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); - *ret_conv = (this_arg_conv->handle_query_channel_range)(this_arg_conv->this_arg, their_node_id_ref, msg_conv); - return (long)ret_conv; +void __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_NoneLightningErrorZ _res_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_NoneLightningErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_RoutingMessageHandler_handle_query_short_channel_ids(uint32_t this_arg, int8_tArray their_node_id, uint32_t msg) { - LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)this_arg; - LDKPublicKey their_node_id_ref; - CHECK(*((uint32_t*)their_node_id) == 33); - memcpy(their_node_id_ref.compressed_form, (uint8_t*)(their_node_id + 4), 33); - LDKQueryShortChannelIds msg_conv; - msg_conv.inner = (void*)(msg & (~1)); - msg_conv.is_owned = (msg & 1) || (msg == 0); - msg_conv = QueryShortChannelIds_clone(&msg_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_clone(uint32_t orig) { + LDKCResult_NoneLightningErrorZ* orig_conv = (LDKCResult_NoneLightningErrorZ*)(orig & ~1); LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); - *ret_conv = (this_arg_conv->handle_query_short_channel_ids)(this_arg_conv->this_arg, their_node_id_ref, msg_conv); + *ret_conv = CResult_NoneLightningErrorZ_clone(orig_conv); return (long)ret_conv; } -typedef struct LDKSocketDescriptor_JCalls { - atomic_size_t refcnt; - uint32_t send_data_meth; - uint32_t disconnect_socket_meth; - uint32_t eq_meth; - uint32_t hash_meth; -} LDKSocketDescriptor_JCalls; -static void LDKSocketDescriptor_JCalls_free(void* this_arg) { - LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; - if (atomic_fetch_sub_explicit(&j_calls->refcnt, 1, memory_order_acquire) == 1) { - js_free(j_calls->send_data_meth); - js_free(j_calls->disconnect_socket_meth); - js_free(j_calls->eq_meth); - js_free(j_calls->hash_meth); - FREE(j_calls); +void __attribute__((visibility("default"))) TS_CVec_MessageSendEventZ_free(uint32_tArray _res) { + LDKCVec_MessageSendEventZ _res_constr; + _res_constr.datalen = *((uint32_t*)_res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKMessageSendEvent), "LDKCVec_MessageSendEventZ Elements"); + else + _res_constr.data = NULL; + uint32_t* _res_vals = (uint32_t*)(_res + 4); + for (size_t s = 0; s < _res_constr.datalen; s++) { + uint32_t arr_conv_18 = _res_vals[s]; + LDKMessageSendEvent arr_conv_18_conv = *(LDKMessageSendEvent*)(((uint64_t)arr_conv_18) & ~1); + FREE((void*)arr_conv_18); + _res_constr.data[s] = arr_conv_18_conv; } + CVec_MessageSendEventZ_free(_res_constr); } -uintptr_t send_data_jcall(void* this_arg, LDKu8slice data, bool resume_read) { - LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; - LDKu8slice data_var = data; - int8_tArray data_arr = init_arr(data_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes"); - memcpy((uint8_t*)(data_arr + 4), data_var.data, data_var.datalen); - return js_invoke_function_2(j_calls->send_data_meth, data_arr, resume_read); -} -void disconnect_socket_jcall(void* this_arg) { - LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; - js_invoke_function_0(j_calls->disconnect_socket_meth); -} -bool eq_jcall(const void* this_arg, const LDKSocketDescriptor * other_arg) { - LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; - LDKSocketDescriptor *other_arg_clone = MALLOC(sizeof(LDKSocketDescriptor), "LDKSocketDescriptor"); - *other_arg_clone = SocketDescriptor_clone(other_arg); - return js_invoke_function_1(j_calls->eq_meth, (long)other_arg_clone); + +uint32_t __attribute__((visibility("default"))) TS_CResult_DirectionalChannelInfoDecodeErrorZ_ok(uint32_t o) { + LDKDirectionalChannelInfo o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = DirectionalChannelInfo_clone(&o_conv); + LDKCResult_DirectionalChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DirectionalChannelInfoDecodeErrorZ), "LDKCResult_DirectionalChannelInfoDecodeErrorZ"); + *ret_conv = CResult_DirectionalChannelInfoDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -uint64_t hash_jcall(const void* this_arg) { - LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; - return js_invoke_function_0(j_calls->hash_meth); + +uint32_t __attribute__((visibility("default"))) TS_CResult_DirectionalChannelInfoDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_DirectionalChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DirectionalChannelInfoDecodeErrorZ), "LDKCResult_DirectionalChannelInfoDecodeErrorZ"); + *ret_conv = CResult_DirectionalChannelInfoDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -static void* LDKSocketDescriptor_JCalls_clone(const void* this_arg) { - LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg; - atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release); - return (void*) this_arg; + +void __attribute__((visibility("default"))) TS_CResult_DirectionalChannelInfoDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_DirectionalChannelInfoDecodeErrorZ _res_conv = *(LDKCResult_DirectionalChannelInfoDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_DirectionalChannelInfoDecodeErrorZ_free(_res_conv); } -static inline LDKSocketDescriptor LDKSocketDescriptor_init (/*TODO: JS Object Reference */void* o) { - LDKSocketDescriptor_JCalls *calls = MALLOC(sizeof(LDKSocketDescriptor_JCalls), "LDKSocketDescriptor_JCalls"); - atomic_init(&calls->refcnt, 1); - //TODO: Assign calls->o from o - LDKSocketDescriptor ret = { - .this_arg = (void*) calls, - .send_data = send_data_jcall, - .disconnect_socket = disconnect_socket_jcall, - .eq = eq_jcall, - .hash = hash_jcall, - .clone = LDKSocketDescriptor_JCalls_clone, - .free = LDKSocketDescriptor_JCalls_free, - }; - return ret; +uint32_t __attribute__((visibility("default"))) TS_CResult_DirectionalChannelInfoDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_DirectionalChannelInfoDecodeErrorZ* orig_conv = (LDKCResult_DirectionalChannelInfoDecodeErrorZ*)(orig & ~1); + LDKCResult_DirectionalChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DirectionalChannelInfoDecodeErrorZ), "LDKCResult_DirectionalChannelInfoDecodeErrorZ"); + *ret_conv = CResult_DirectionalChannelInfoDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -long __attribute__((visibility("default"))) TS_LDKSocketDescriptor_new(/*TODO: JS Object Reference */void* o) { - LDKSocketDescriptor *res_ptr = MALLOC(sizeof(LDKSocketDescriptor), "LDKSocketDescriptor"); - *res_ptr = LDKSocketDescriptor_init(o); - return (long)res_ptr; + +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelInfoDecodeErrorZ_ok(uint32_t o) { + LDKChannelInfo o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + // Warning: we need a move here but no clone is available for LDKChannelInfo + LDKCResult_ChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelInfoDecodeErrorZ), "LDKCResult_ChannelInfoDecodeErrorZ"); + *ret_conv = CResult_ChannelInfoDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -int64_t __attribute__((visibility("default"))) TS_SocketDescriptor_send_data(uint32_t this_arg, int8_tArray data, jboolean resume_read) { - LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg; - LDKu8slice data_ref; - data_ref.datalen = *((uint32_t*)data); - data_ref.data = (int8_t*)(data + 4); - int64_t ret_val = (this_arg_conv->send_data)(this_arg_conv->this_arg, data_ref, resume_read); - return ret_val; + +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelInfoDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelInfoDecodeErrorZ), "LDKCResult_ChannelInfoDecodeErrorZ"); + *ret_conv = CResult_ChannelInfoDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_SocketDescriptor_disconnect_socket(uint32_t this_arg) { - LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg; - (this_arg_conv->disconnect_socket)(this_arg_conv->this_arg); +void __attribute__((visibility("default"))) TS_CResult_ChannelInfoDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_ChannelInfoDecodeErrorZ _res_conv = *(LDKCResult_ChannelInfoDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_ChannelInfoDecodeErrorZ_free(_res_conv); } -int64_t __attribute__((visibility("default"))) TS_SocketDescriptor_hash(uint32_t this_arg) { - LDKSocketDescriptor* this_arg_conv = (LDKSocketDescriptor*)this_arg; - int64_t ret_val = (this_arg_conv->hash)(this_arg_conv->this_arg); - return ret_val; +uint32_t __attribute__((visibility("default"))) TS_CResult_RoutingFeesDecodeErrorZ_ok(uint32_t o) { + LDKRoutingFees o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = RoutingFees_clone(&o_conv); + LDKCResult_RoutingFeesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RoutingFeesDecodeErrorZ), "LDKCResult_RoutingFeesDecodeErrorZ"); + *ret_conv = CResult_RoutingFeesDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_Transaction_free(int8_tArray _res) { - LDKTransaction _res_ref; - _res_ref.datalen = *((uint32_t*)_res); - _res_ref.data = MALLOC(_res_ref.datalen, "LDKTransaction Bytes"); - memcpy(_res_ref.data, (uint8_t*)(_res + 4), _res_ref.datalen); - _res_ref.data_is_owned = true; - Transaction_free(_res_ref); +uint32_t __attribute__((visibility("default"))) TS_CResult_RoutingFeesDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_RoutingFeesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RoutingFeesDecodeErrorZ), "LDKCResult_RoutingFeesDecodeErrorZ"); + *ret_conv = CResult_RoutingFeesDecodeErrorZ_err(e_conv); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_TxOut_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_RoutingFeesDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKTxOut _res_conv = *(LDKTxOut*)(((uint64_t)_res) & ~1); + LDKCResult_RoutingFeesDecodeErrorZ _res_conv = *(LDKCResult_RoutingFeesDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - TxOut_free(_res_conv); + CResult_RoutingFeesDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_TxOut_clone(uint32_t orig) { - LDKTxOut* orig_conv = (LDKTxOut*)(orig & ~1); - LDKTxOut* ret_ref = MALLOC(sizeof(LDKTxOut), "LDKTxOut"); - *ret_ref = TxOut_clone(orig_conv); - return (long)ret_ref; +uint32_t __attribute__((visibility("default"))) TS_CResult_RoutingFeesDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_RoutingFeesDecodeErrorZ* orig_conv = (LDKCResult_RoutingFeesDecodeErrorZ*)(orig & ~1); + LDKCResult_RoutingFeesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RoutingFeesDecodeErrorZ), "LDKCResult_RoutingFeesDecodeErrorZ"); + *ret_conv = CResult_RoutingFeesDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CVec_SpendableOutputDescriptorZ_free(uint32_tArray _res) { - LDKCVec_SpendableOutputDescriptorZ _res_constr; +void __attribute__((visibility("default"))) TS_CVec_NetAddressZ_free(uint32_tArray _res) { + LDKCVec_NetAddressZ _res_constr; _res_constr.datalen = *((uint32_t*)_res); if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKSpendableOutputDescriptor), "LDKCVec_SpendableOutputDescriptorZ Elements"); + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements"); else _res_constr.data = NULL; uint32_t* _res_vals = (uint32_t*)(_res + 4); - for (size_t b = 0; b < _res_constr.datalen; b++) { - uint32_t arr_conv_27 = _res_vals[b]; - LDKSpendableOutputDescriptor arr_conv_27_conv = *(LDKSpendableOutputDescriptor*)(((uint64_t)arr_conv_27) & ~1); - FREE((void*)arr_conv_27); - _res_constr.data[b] = arr_conv_27_conv; + for (size_t m = 0; m < _res_constr.datalen; m++) { + uint32_t arr_conv_12 = _res_vals[m]; + LDKNetAddress arr_conv_12_conv = *(LDKNetAddress*)(((uint64_t)arr_conv_12) & ~1); + FREE((void*)arr_conv_12); + _res_constr.data[m] = arr_conv_12_conv; } - CVec_SpendableOutputDescriptorZ_free(_res_constr); + CVec_NetAddressZ_free(_res_constr); } -void __attribute__((visibility("default"))) TS_CVec_MessageSendEventZ_free(uint32_tArray _res) { - LDKCVec_MessageSendEventZ _res_constr; - _res_constr.datalen = *((uint32_t*)_res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKMessageSendEvent), "LDKCVec_MessageSendEventZ Elements"); - else - _res_constr.data = NULL; - uint32_t* _res_vals = (uint32_t*)(_res + 4); - for (size_t s = 0; s < _res_constr.datalen; s++) { - uint32_t arr_conv_18 = _res_vals[s]; - LDKMessageSendEvent arr_conv_18_conv = *(LDKMessageSendEvent*)(((uint64_t)arr_conv_18) & ~1); - FREE((void*)arr_conv_18); - _res_constr.data[s] = arr_conv_18_conv; - } - CVec_MessageSendEventZ_free(_res_constr); +uint32_t __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementInfoDecodeErrorZ_ok(uint32_t o) { + LDKNodeAnnouncementInfo o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = NodeAnnouncementInfo_clone(&o_conv); + LDKCResult_NodeAnnouncementInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ), "LDKCResult_NodeAnnouncementInfoDecodeErrorZ"); + *ret_conv = CResult_NodeAnnouncementInfoDecodeErrorZ_ok(o_conv); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CVec_EventZ_free(uint32_tArray _res) { - LDKCVec_EventZ _res_constr; +uint32_t __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementInfoDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_NodeAnnouncementInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ), "LDKCResult_NodeAnnouncementInfoDecodeErrorZ"); + *ret_conv = CResult_NodeAnnouncementInfoDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementInfoDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res_conv = *(LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_NodeAnnouncementInfoDecodeErrorZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementInfoDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_NodeAnnouncementInfoDecodeErrorZ* orig_conv = (LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(orig & ~1); + LDKCResult_NodeAnnouncementInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ), "LDKCResult_NodeAnnouncementInfoDecodeErrorZ"); + *ret_conv = CResult_NodeAnnouncementInfoDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CVec_u64Z_free(int64_tArray _res) { + LDKCVec_u64Z _res_constr; _res_constr.datalen = *((uint32_t*)_res); if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKEvent), "LDKCVec_EventZ Elements"); + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements"); else _res_constr.data = NULL; - uint32_t* _res_vals = (uint32_t*)(_res + 4); - for (size_t h = 0; h < _res_constr.datalen; h++) { - uint32_t arr_conv_7 = _res_vals[h]; - LDKEvent arr_conv_7_conv = *(LDKEvent*)(((uint64_t)arr_conv_7) & ~1); - FREE((void*)arr_conv_7); - _res_constr.data[h] = arr_conv_7_conv; + int64_t* _res_vals = (int64_t*)(_res + 4); + for (size_t i = 0; i < _res_constr.datalen; i++) { + int64_t arr_conv_8 = _res_vals[i]; + _res_constr.data[i] = arr_conv_8; } - CVec_EventZ_free(_res_constr); + CVec_u64Z_free(_res_constr); } -void __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_free(uint32_t _res) { +uint32_t __attribute__((visibility("default"))) TS_CResult_NodeInfoDecodeErrorZ_ok(uint32_t o) { + LDKNodeInfo o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = NodeInfo_clone(&o_conv); + LDKCResult_NodeInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeInfoDecodeErrorZ), "LDKCResult_NodeInfoDecodeErrorZ"); + *ret_conv = CResult_NodeInfoDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_NodeInfoDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_NodeInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeInfoDecodeErrorZ), "LDKCResult_NodeInfoDecodeErrorZ"); + *ret_conv = CResult_NodeInfoDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CResult_NodeInfoDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKC2Tuple_usizeTransactionZ _res_conv = *(LDKC2Tuple_usizeTransactionZ*)(((uint64_t)_res) & ~1); + LDKCResult_NodeInfoDecodeErrorZ _res_conv = *(LDKCResult_NodeInfoDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - C2Tuple_usizeTransactionZ_free(_res_conv); + CResult_NodeInfoDecodeErrorZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_NodeInfoDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_NodeInfoDecodeErrorZ* orig_conv = (LDKCResult_NodeInfoDecodeErrorZ*)(orig & ~1); + LDKCResult_NodeInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeInfoDecodeErrorZ), "LDKCResult_NodeInfoDecodeErrorZ"); + *ret_conv = CResult_NodeInfoDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_NetworkGraphDecodeErrorZ_ok(uint32_t o) { + LDKNetworkGraph o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + // Warning: we need a move here but no clone is available for LDKNetworkGraph + LDKCResult_NetworkGraphDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetworkGraphDecodeErrorZ), "LDKCResult_NetworkGraphDecodeErrorZ"); + *ret_conv = CResult_NetworkGraphDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_NetworkGraphDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_NetworkGraphDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetworkGraphDecodeErrorZ), "LDKCResult_NetworkGraphDecodeErrorZ"); + *ret_conv = CResult_NetworkGraphDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CResult_NetworkGraphDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_NetworkGraphDecodeErrorZ _res_conv = *(LDKCResult_NetworkGraphDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_NetworkGraphDecodeErrorZ_free(_res_conv); } uint32_t __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_new(int64_t a, int8_tArray b) { @@ -4369,6 +6056,13 @@ uint32_t __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_ne return (long)ret_ref; } +void __attribute__((visibility("default"))) TS_C2Tuple_usizeTransactionZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKC2Tuple_usizeTransactionZ _res_conv = *(LDKC2Tuple_usizeTransactionZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + C2Tuple_usizeTransactionZ_free(_res_conv); +} + void __attribute__((visibility("default"))) TS_CVec_C2Tuple_usizeTransactionZZ_free(uint32_tArray _res) { LDKCVec_C2Tuple_usizeTransactionZZ _res_constr; _res_constr.datalen = *((uint32_t*)_res); @@ -4431,31 +6125,123 @@ void __attribute__((visibility("default"))) TS_CVec_MonitorEventZ_free(uint32_t CVec_MonitorEventZ_free(_res_constr); } -uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_ok(uint32_t o) { - LDKChannelMonitorUpdate o_conv; +void __attribute__((visibility("default"))) TS_CVec_EventZ_free(uint32_tArray _res) { + LDKCVec_EventZ _res_constr; + _res_constr.datalen = *((uint32_t*)_res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKEvent), "LDKCVec_EventZ Elements"); + else + _res_constr.data = NULL; + uint32_t* _res_vals = (uint32_t*)(_res + 4); + for (size_t h = 0; h < _res_constr.datalen; h++) { + uint32_t arr_conv_7 = _res_vals[h]; + LDKEvent arr_conv_7_conv = *(LDKEvent*)(((uint64_t)arr_conv_7) & ~1); + FREE((void*)arr_conv_7); + _res_constr.data[h] = arr_conv_7_conv; + } + CVec_EventZ_free(_res_constr); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_ok(uint32_t o) { + LDKOutPoint o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = OutPoint_clone(&o_conv); + LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ"); + *ret_conv = CResult_OutPointDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ"); + *ret_conv = CResult_OutPointDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_OutPointDecodeErrorZ _res_conv = *(LDKCResult_OutPointDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_OutPointDecodeErrorZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_OutPointDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_OutPointDecodeErrorZ* orig_conv = (LDKCResult_OutPointDecodeErrorZ*)(orig & ~1); + LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ"); + *ret_conv = CResult_OutPointDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_ok(uint32_t o) { + LDKChannelMonitorUpdate o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = ChannelMonitorUpdate_clone(&o_conv); + LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ"); + *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ"); + *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res_conv = *(LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_ChannelMonitorUpdateDecodeErrorZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_ChannelMonitorUpdateDecodeErrorZ* orig_conv = (LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(orig & ~1); + LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ"); + *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_ok(uint32_t o) { + LDKHTLCUpdate o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = ChannelMonitorUpdate_clone(&o_conv); - LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ"); - *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_ok(o_conv); + o_conv = HTLCUpdate_clone(&o_conv); + LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ"); + *ret_conv = CResult_HTLCUpdateDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_ChannelMonitorUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelMonitorUpdateDecodeErrorZ), "LDKCResult_ChannelMonitorUpdateDecodeErrorZ"); - *ret_conv = CResult_ChannelMonitorUpdateDecodeErrorZ_err(e_conv); + LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ"); + *ret_conv = CResult_HTLCUpdateDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_ChannelMonitorUpdateDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res_conv = *(LDKCResult_ChannelMonitorUpdateDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_HTLCUpdateDecodeErrorZ _res_conv = *(LDKCResult_HTLCUpdateDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_ChannelMonitorUpdateDecodeErrorZ_free(_res_conv); + CResult_HTLCUpdateDecodeErrorZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_HTLCUpdateDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_HTLCUpdateDecodeErrorZ* orig_conv = (LDKCResult_HTLCUpdateDecodeErrorZ*)(orig & ~1); + LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ"); + *ret_conv = CResult_HTLCUpdateDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } uint32_t __attribute__((visibility("default"))) TS_CResult_NoneMonitorUpdateErrorZ_ok() { @@ -4488,11 +6274,11 @@ uint32_t __attribute__((visibility("default"))) TS_CResult_NoneMonitorUpdateErr return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_free(uint32_t _res) { - if ((_res & 1) != 0) return; - LDKC2Tuple_OutPointScriptZ _res_conv = *(LDKC2Tuple_OutPointScriptZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - C2Tuple_OutPointScriptZ_free(_res_conv); +uint32_t __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_clone(uint32_t orig) { + LDKC2Tuple_OutPointScriptZ* orig_conv = (LDKC2Tuple_OutPointScriptZ*)(orig & ~1); + LDKC2Tuple_OutPointScriptZ* ret_ref = MALLOC(sizeof(LDKC2Tuple_OutPointScriptZ), "LDKC2Tuple_OutPointScriptZ"); + *ret_ref = C2Tuple_OutPointScriptZ_clone(orig_conv); + return (long)ret_ref; } uint32_t __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_new(uint32_t a, int8_tArray b) { @@ -4509,6 +6295,13 @@ uint32_t __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_new( return (long)ret_ref; } +void __attribute__((visibility("default"))) TS_C2Tuple_OutPointScriptZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKC2Tuple_OutPointScriptZ _res_conv = *(LDKC2Tuple_OutPointScriptZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + C2Tuple_OutPointScriptZ_free(_res_conv); +} + void __attribute__((visibility("default"))) TS_CVec_TransactionZ_free(ptrArray _res) { LDKCVec_TransactionZ _res_constr; _res_constr.datalen = *((uint32_t*)_res); @@ -4536,13 +6329,6 @@ uint32_t __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_clone(uint return (long)ret_ref; } -void __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_free(uint32_t _res) { - if ((_res & 1) != 0) return; - LDKC2Tuple_u32TxOutZ _res_conv = *(LDKC2Tuple_u32TxOutZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - C2Tuple_u32TxOutZ_free(_res_conv); -} - uint32_t __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_new(int32_t a, uint32_t b) { LDKTxOut b_conv = *(LDKTxOut*)(((uint64_t)b) & ~1); FREE((void*)b); @@ -4551,6 +6337,13 @@ uint32_t __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_new(int32_ return (long)ret_ref; } +void __attribute__((visibility("default"))) TS_C2Tuple_u32TxOutZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKC2Tuple_u32TxOutZ _res_conv = *(LDKC2Tuple_u32TxOutZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + C2Tuple_u32TxOutZ_free(_res_conv); +} + void __attribute__((visibility("default"))) TS_CVec_C2Tuple_u32TxOutZZ_free(uint32_tArray _res) { LDKCVec_C2Tuple_u32TxOutZZ _res_constr; _res_constr.datalen = *((uint32_t*)_res); @@ -4568,13 +6361,6 @@ void __attribute__((visibility("default"))) TS_CVec_C2Tuple_u32TxOutZZ_free(uin CVec_C2Tuple_u32TxOutZZ_free(_res_constr); } -void __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(uint32_t _res) { - if ((_res & 1) != 0) return; - LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(_res_conv); -} - uint32_t __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(int8_tArray a, uint32_tArray b) { LDKThirtyTwoBytes a_ref; CHECK(*((uint32_t*)a) == 32); @@ -4597,6 +6383,13 @@ uint32_t __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32 return (long)ret_ref; } +void __attribute__((visibility("default"))) TS_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res_conv = *(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(_res_conv); +} + void __attribute__((visibility("default"))) TS_CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(uint32_tArray _res) { LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ _res_constr; _res_constr.datalen = *((uint32_t*)_res); @@ -4614,13 +6407,6 @@ void __attribute__((visibility("default"))) TS_CVec_C2Tuple_TxidCVec_C2Tuple_u3 CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(_res_constr); } -void __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_free(uint32_t _res) { - if ((_res & 1) != 0) return; - LDKC2Tuple_BlockHashChannelMonitorZ _res_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - C2Tuple_BlockHashChannelMonitorZ_free(_res_conv); -} - uint32_t __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_new(int8_tArray a, uint32_t b) { LDKThirtyTwoBytes a_ref; CHECK(*((uint32_t*)a) == 32); @@ -4634,29 +6420,221 @@ uint32_t __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMoni return (long)ret_ref; } +void __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelMonitorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKC2Tuple_BlockHashChannelMonitorZ _res_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + C2Tuple_BlockHashChannelMonitorZ_free(_res_conv); +} + uint32_t __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(uint32_t o) { LDKC2Tuple_BlockHashChannelMonitorZ o_conv = *(LDKC2Tuple_BlockHashChannelMonitorZ*)(((uint64_t)o) & ~1); FREE((void*)o); - LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ"); - *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(o_conv); + LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ"); + *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ"); + *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res_conv = *(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(_res_conv); +} + +void __attribute__((visibility("default"))) TS_CVec_SpendableOutputDescriptorZ_free(uint32_tArray _res) { + LDKCVec_SpendableOutputDescriptorZ _res_constr; + _res_constr.datalen = *((uint32_t*)_res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKSpendableOutputDescriptor), "LDKCVec_SpendableOutputDescriptorZ Elements"); + else + _res_constr.data = NULL; + uint32_t* _res_vals = (uint32_t*)(_res + 4); + for (size_t b = 0; b < _res_constr.datalen; b++) { + uint32_t arr_conv_27 = _res_vals[b]; + LDKSpendableOutputDescriptor arr_conv_27_conv = *(LDKSpendableOutputDescriptor*)(((uint64_t)arr_conv_27) & ~1); + FREE((void*)arr_conv_27); + _res_constr.data[b] = arr_conv_27_conv; + } + CVec_SpendableOutputDescriptorZ_free(_res_constr); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_ok(uint32_t o) { + LDKTxOut o_conv = *(LDKTxOut*)(((uint64_t)o) & ~1); + FREE((void*)o); + LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ"); + *ret_conv = CResult_TxOutAccessErrorZ_ok(o_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_err(uint32_t e) { + LDKAccessError e_conv = LDKAccessError_from_js(e); + LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ"); + *ret_conv = CResult_TxOutAccessErrorZ_err(e_conv); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_TxOutAccessErrorZ _res_conv = *(LDKCResult_TxOutAccessErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_TxOutAccessErrorZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_clone(uint32_t orig) { + LDKCResult_TxOutAccessErrorZ* orig_conv = (LDKCResult_TxOutAccessErrorZ*)(orig & ~1); + LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ"); + *ret_conv = CResult_TxOutAccessErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_ok() { + LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ"); + *ret_conv = CResult_NoneAPIErrorZ_ok(); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_err(uint32_t e) { + LDKAPIError e_conv = *(LDKAPIError*)(((uint64_t)e) & ~1); + FREE((void*)e); + LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ"); + *ret_conv = CResult_NoneAPIErrorZ_err(e_conv); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_NoneAPIErrorZ _res_conv = *(LDKCResult_NoneAPIErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_NoneAPIErrorZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_clone(uint32_t orig) { + LDKCResult_NoneAPIErrorZ* orig_conv = (LDKCResult_NoneAPIErrorZ*)(orig & ~1); + LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ"); + *ret_conv = CResult_NoneAPIErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CVec_ChannelDetailsZ_free(uint32_tArray _res) { + LDKCVec_ChannelDetailsZ _res_constr; + _res_constr.datalen = *((uint32_t*)_res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements"); + else + _res_constr.data = NULL; + uint32_t* _res_vals = (uint32_t*)(_res + 4); + for (size_t q = 0; q < _res_constr.datalen; q++) { + uint32_t arr_conv_16 = _res_vals[q]; + LDKChannelDetails arr_conv_16_conv; + arr_conv_16_conv.inner = (void*)(arr_conv_16 & (~1)); + arr_conv_16_conv.is_owned = (arr_conv_16 & 1) || (arr_conv_16 == 0); + _res_constr.data[q] = arr_conv_16_conv; + } + CVec_ChannelDetailsZ_free(_res_constr); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_ok() { + LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ"); + *ret_conv = CResult_NonePaymentSendFailureZ_ok(); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_err(uint32_t e) { + LDKPaymentSendFailure e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = PaymentSendFailure_clone(&e_conv); + LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ"); + *ret_conv = CResult_NonePaymentSendFailureZ_err(e_conv); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_NonePaymentSendFailureZ _res_conv = *(LDKCResult_NonePaymentSendFailureZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_NonePaymentSendFailureZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_clone(uint32_t orig) { + LDKCResult_NonePaymentSendFailureZ* orig_conv = (LDKCResult_NonePaymentSendFailureZ*)(orig & ~1); + LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ"); + *ret_conv = CResult_NonePaymentSendFailureZ_clone(orig_conv); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CVec_ChannelMonitorZ_free(uint32_tArray _res) { + LDKCVec_ChannelMonitorZ _res_constr; + _res_constr.datalen = *((uint32_t*)_res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKChannelMonitor), "LDKCVec_ChannelMonitorZ Elements"); + else + _res_constr.data = NULL; + uint32_t* _res_vals = (uint32_t*)(_res + 4); + for (size_t q = 0; q < _res_constr.datalen; q++) { + uint32_t arr_conv_16 = _res_vals[q]; + LDKChannelMonitor arr_conv_16_conv; + arr_conv_16_conv.inner = (void*)(arr_conv_16 & (~1)); + arr_conv_16_conv.is_owned = (arr_conv_16 & 1) || (arr_conv_16 == 0); + _res_constr.data[q] = arr_conv_16_conv; + } + CVec_ChannelMonitorZ_free(_res_constr); +} + +uint32_t __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_new(int8_tArray a, uint32_t b) { + LDKThirtyTwoBytes a_ref; + CHECK(*((uint32_t*)a) == 32); + memcpy(a_ref.data, (uint8_t*)(a + 4), 32); + LDKChannelManager b_conv; + b_conv.inner = (void*)(b & (~1)); + b_conv.is_owned = (b & 1) || (b == 0); + // Warning: we need a move here but no clone is available for LDKChannelManager + LDKC2Tuple_BlockHashChannelManagerZ* ret_ref = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelManagerZ), "LDKC2Tuple_BlockHashChannelManagerZ"); + *ret_ref = C2Tuple_BlockHashChannelManagerZ_new(a_ref, b_conv); + return (long)ret_ref; +} + +void __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKC2Tuple_BlockHashChannelManagerZ _res_conv = *(LDKC2Tuple_BlockHashChannelManagerZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + C2Tuple_BlockHashChannelManagerZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(uint32_t o) { + LDKC2Tuple_BlockHashChannelManagerZ o_conv = *(LDKC2Tuple_BlockHashChannelManagerZ*)(((uint64_t)o) & ~1); + FREE((void*)o); + LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ"); + *ret_conv = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ"); - *ret_conv = CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(e_conv); + LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ"); + *ret_conv = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res_conv = *(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res_conv = *(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(_res_conv); + CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(_res_conv); } uint32_t __attribute__((visibility("default"))) TS_C2Tuple_u64u64Z_clone(uint32_t orig) { @@ -4666,6 +6644,12 @@ uint32_t __attribute__((visibility("default"))) TS_C2Tuple_u64u64Z_clone(uint32 return (long)ret_ref; } +uint32_t __attribute__((visibility("default"))) TS_C2Tuple_u64u64Z_new(int64_t a, int64_t b) { + LDKC2Tuple_u64u64Z* ret_ref = MALLOC(sizeof(LDKC2Tuple_u64u64Z), "LDKC2Tuple_u64u64Z"); + *ret_ref = C2Tuple_u64u64Z_new(a, b); + return (long)ret_ref; +} + void __attribute__((visibility("default"))) TS_C2Tuple_u64u64Z_free(uint32_t _res) { if ((_res & 1) != 0) return; LDKC2Tuple_u64u64Z _res_conv = *(LDKC2Tuple_u64u64Z*)(((uint64_t)_res) & ~1); @@ -4673,12 +6657,6 @@ void __attribute__((visibility("default"))) TS_C2Tuple_u64u64Z_free(uint32_t _r C2Tuple_u64u64Z_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_C2Tuple_u64u64Z_new(int64_t a, int64_t b) { - LDKC2Tuple_u64u64Z* ret_ref = MALLOC(sizeof(LDKC2Tuple_u64u64Z), "LDKC2Tuple_u64u64Z"); - *ret_ref = C2Tuple_u64u64Z_new(a, b); - return (long)ret_ref; -} - uint32_t __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescriptorDecodeErrorZ_ok(uint32_t o) { LDKSpendableOutputDescriptor o_conv = *(LDKSpendableOutputDescriptor*)(((uint64_t)o) & ~1); FREE((void*)o); @@ -4711,24 +6689,6 @@ uint32_t __attribute__((visibility("default"))) TS_CResult_SpendableOutputDescr return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CVec_SignatureZ_free(ptrArray _res) { - LDKCVec_SignatureZ _res_constr; - _res_constr.datalen = *((uint32_t*)_res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements"); - else - _res_constr.data = NULL; - int8_tArray* _res_vals = (int8_tArray*)(_res + 4); - for (size_t m = 0; m < _res_constr.datalen; m++) { - int8_tArray arr_conv_12 = _res_vals[m]; - LDKSignature arr_conv_12_ref; - CHECK(*((uint32_t*)arr_conv_12) == 64); - memcpy(arr_conv_12_ref.compact_form, (uint8_t*)(arr_conv_12 + 4), 64); - _res_constr.data[m] = arr_conv_12_ref; - } - CVec_SignatureZ_free(_res_constr); -} - uint32_t __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_clone(uint32_t orig) { LDKC2Tuple_SignatureCVec_SignatureZZ* orig_conv = (LDKC2Tuple_SignatureCVec_SignatureZZ*)(orig & ~1); LDKC2Tuple_SignatureCVec_SignatureZZ* ret_ref = MALLOC(sizeof(LDKC2Tuple_SignatureCVec_SignatureZZ), "LDKC2Tuple_SignatureCVec_SignatureZZ"); @@ -4736,13 +6696,6 @@ uint32_t __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_Signat return (long)ret_ref; } -void __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_free(uint32_t _res) { - if ((_res & 1) != 0) return; - LDKC2Tuple_SignatureCVec_SignatureZZ _res_conv = *(LDKC2Tuple_SignatureCVec_SignatureZZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - C2Tuple_SignatureCVec_SignatureZZ_free(_res_conv); -} - uint32_t __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_new(int8_tArray a, ptrArray b) { LDKSignature a_ref; CHECK(*((uint32_t*)a) == 64); @@ -4766,6 +6719,13 @@ uint32_t __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_Signat return (long)ret_ref; } +void __attribute__((visibility("default"))) TS_C2Tuple_SignatureCVec_SignatureZZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKC2Tuple_SignatureCVec_SignatureZZ _res_conv = *(LDKC2Tuple_SignatureCVec_SignatureZZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + C2Tuple_SignatureCVec_SignatureZZ_free(_res_conv); +} + uint32_t __attribute__((visibility("default"))) TS_CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(uint32_t o) { LDKC2Tuple_SignatureCVec_SignatureZZ o_conv = *(LDKC2Tuple_SignatureCVec_SignatureZZ*)(((uint64_t)o) & ~1); FREE((void*)o); @@ -4823,34 +6783,34 @@ uint32_t __attribute__((visibility("default"))) TS_CResult_SignatureNoneZ_clone return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_ChanKeySignerDecodeErrorZ_ok(uint32_t o) { +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelKeysDecodeErrorZ_ok(uint32_t o) { LDKChannelKeys o_conv = *(LDKChannelKeys*)(((uint64_t)o) & ~1); - LDKCResult_ChanKeySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChanKeySignerDecodeErrorZ), "LDKCResult_ChanKeySignerDecodeErrorZ"); - *ret_conv = CResult_ChanKeySignerDecodeErrorZ_ok(o_conv); + LDKCResult_ChannelKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelKeysDecodeErrorZ), "LDKCResult_ChannelKeysDecodeErrorZ"); + *ret_conv = CResult_ChannelKeysDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_ChanKeySignerDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelKeysDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_ChanKeySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChanKeySignerDecodeErrorZ), "LDKCResult_ChanKeySignerDecodeErrorZ"); - *ret_conv = CResult_ChanKeySignerDecodeErrorZ_err(e_conv); + LDKCResult_ChannelKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelKeysDecodeErrorZ), "LDKCResult_ChannelKeysDecodeErrorZ"); + *ret_conv = CResult_ChannelKeysDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_ChanKeySignerDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_ChannelKeysDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_ChanKeySignerDecodeErrorZ _res_conv = *(LDKCResult_ChanKeySignerDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_ChannelKeysDecodeErrorZ _res_conv = *(LDKCResult_ChannelKeysDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_ChanKeySignerDecodeErrorZ_free(_res_conv); + CResult_ChannelKeysDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_ChanKeySignerDecodeErrorZ_clone(uint32_t orig) { - LDKCResult_ChanKeySignerDecodeErrorZ* orig_conv = (LDKCResult_ChanKeySignerDecodeErrorZ*)(orig & ~1); - LDKCResult_ChanKeySignerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChanKeySignerDecodeErrorZ), "LDKCResult_ChanKeySignerDecodeErrorZ"); - *ret_conv = CResult_ChanKeySignerDecodeErrorZ_clone(orig_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelKeysDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_ChannelKeysDecodeErrorZ* orig_conv = (LDKCResult_ChannelKeysDecodeErrorZ*)(orig & ~1); + LDKCResult_ChannelKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelKeysDecodeErrorZ), "LDKCResult_ChannelKeysDecodeErrorZ"); + *ret_conv = CResult_ChannelKeysDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } @@ -4881,182 +6841,144 @@ void __attribute__((visibility("default"))) TS_CResult_InMemoryChannelKeysDecod CResult_InMemoryChannelKeysDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_ok(uint32_t o) { - LDKTxOut o_conv = *(LDKTxOut*)(((uint64_t)o) & ~1); - FREE((void*)o); - LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ"); - *ret_conv = CResult_TxOutAccessErrorZ_ok(o_conv); - return (long)ret_conv; -} - -uint32_t __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_err(uint32_t e) { - LDKAccessError e_conv = LDKAccessError_from_js(e); - LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ"); - *ret_conv = CResult_TxOutAccessErrorZ_err(e_conv); - return (long)ret_conv; -} - -void __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_free(uint32_t _res) { - if ((_res & 1) != 0) return; - LDKCResult_TxOutAccessErrorZ _res_conv = *(LDKCResult_TxOutAccessErrorZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - CResult_TxOutAccessErrorZ_free(_res_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_CResult_TxOutAccessErrorZ_clone(uint32_t orig) { - LDKCResult_TxOutAccessErrorZ* orig_conv = (LDKCResult_TxOutAccessErrorZ*)(orig & ~1); - LDKCResult_TxOutAccessErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxOutAccessErrorZ), "LDKCResult_TxOutAccessErrorZ"); - *ret_conv = CResult_TxOutAccessErrorZ_clone(orig_conv); - return (long)ret_conv; -} - -uint32_t __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_ok() { - LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ"); - *ret_conv = CResult_NoneAPIErrorZ_ok(); - return (long)ret_conv; -} - -uint32_t __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_err(uint32_t e) { - LDKAPIError e_conv = *(LDKAPIError*)(((uint64_t)e) & ~1); - FREE((void*)e); - LDKCResult_NoneAPIErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneAPIErrorZ), "LDKCResult_NoneAPIErrorZ"); - *ret_conv = CResult_NoneAPIErrorZ_err(e_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_InMemoryChannelKeysDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_InMemoryChannelKeysDecodeErrorZ* orig_conv = (LDKCResult_InMemoryChannelKeysDecodeErrorZ*)(orig & ~1); + LDKCResult_InMemoryChannelKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InMemoryChannelKeysDecodeErrorZ), "LDKCResult_InMemoryChannelKeysDecodeErrorZ"); + *ret_conv = CResult_InMemoryChannelKeysDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_NoneAPIErrorZ_free(uint32_t _res) { - if ((_res & 1) != 0) return; - LDKCResult_NoneAPIErrorZ _res_conv = *(LDKCResult_NoneAPIErrorZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - CResult_NoneAPIErrorZ_free(_res_conv); +void __attribute__((visibility("default"))) TS_CVec_RouteHopZ_free(uint32_tArray _res) { + LDKCVec_RouteHopZ _res_constr; + _res_constr.datalen = *((uint32_t*)_res); + if (_res_constr.datalen > 0) + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements"); + else + _res_constr.data = NULL; + uint32_t* _res_vals = (uint32_t*)(_res + 4); + for (size_t k = 0; k < _res_constr.datalen; k++) { + uint32_t arr_conv_10 = _res_vals[k]; + LDKRouteHop arr_conv_10_conv; + arr_conv_10_conv.inner = (void*)(arr_conv_10 & (~1)); + arr_conv_10_conv.is_owned = (arr_conv_10 & 1) || (arr_conv_10 == 0); + _res_constr.data[k] = arr_conv_10_conv; + } + CVec_RouteHopZ_free(_res_constr); } -void __attribute__((visibility("default"))) TS_CVec_ChannelDetailsZ_free(uint32_tArray _res) { - LDKCVec_ChannelDetailsZ _res_constr; +void __attribute__((visibility("default"))) TS_CVec_CVec_RouteHopZZ_free(ptrArray _res) { + LDKCVec_CVec_RouteHopZZ _res_constr; _res_constr.datalen = *((uint32_t*)_res); if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements"); + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKCVec_RouteHopZ), "LDKCVec_CVec_RouteHopZZ Elements"); else _res_constr.data = NULL; - uint32_t* _res_vals = (uint32_t*)(_res + 4); - for (size_t q = 0; q < _res_constr.datalen; q++) { - uint32_t arr_conv_16 = _res_vals[q]; - LDKChannelDetails arr_conv_16_conv; - arr_conv_16_conv.inner = (void*)(arr_conv_16 & (~1)); - arr_conv_16_conv.is_owned = (arr_conv_16 & 1) || (arr_conv_16 == 0); - _res_constr.data[q] = arr_conv_16_conv; + uint32_tArray* _res_vals = (uint32_tArray*)(_res + 4); + for (size_t m = 0; m < _res_constr.datalen; m++) { + uint32_tArray arr_conv_12 = _res_vals[m]; + LDKCVec_RouteHopZ arr_conv_12_constr; + arr_conv_12_constr.datalen = *((uint32_t*)arr_conv_12); + if (arr_conv_12_constr.datalen > 0) + arr_conv_12_constr.data = MALLOC(arr_conv_12_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements"); + else + arr_conv_12_constr.data = NULL; + uint32_t* arr_conv_12_vals = (uint32_t*)(arr_conv_12 + 4); + for (size_t k = 0; k < arr_conv_12_constr.datalen; k++) { + uint32_t arr_conv_10 = arr_conv_12_vals[k]; + LDKRouteHop arr_conv_10_conv; + arr_conv_10_conv.inner = (void*)(arr_conv_10 & (~1)); + arr_conv_10_conv.is_owned = (arr_conv_10 & 1) || (arr_conv_10 == 0); + arr_conv_12_constr.data[k] = arr_conv_10_conv; + } + _res_constr.data[m] = arr_conv_12_constr; } - CVec_ChannelDetailsZ_free(_res_constr); + CVec_CVec_RouteHopZZ_free(_res_constr); } -uint32_t __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_ok() { - LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ"); - *ret_conv = CResult_NonePaymentSendFailureZ_ok(); +uint32_t __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_ok(uint32_t o) { + LDKRoute o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = Route_clone(&o_conv); + LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ"); + *ret_conv = CResult_RouteDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_err(uint32_t e) { - LDKPaymentSendFailure e_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); - e_conv = PaymentSendFailure_clone(&e_conv); - LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ"); - *ret_conv = CResult_NonePaymentSendFailureZ_err(e_conv); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ"); + *ret_conv = CResult_RouteDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_NonePaymentSendFailureZ _res_conv = *(LDKCResult_NonePaymentSendFailureZ*)(((uint64_t)_res) & ~1); + LDKCResult_RouteDecodeErrorZ _res_conv = *(LDKCResult_RouteDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_NonePaymentSendFailureZ_free(_res_conv); + CResult_RouteDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_NonePaymentSendFailureZ_clone(uint32_t orig) { - LDKCResult_NonePaymentSendFailureZ* orig_conv = (LDKCResult_NonePaymentSendFailureZ*)(orig & ~1); - LDKCResult_NonePaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePaymentSendFailureZ), "LDKCResult_NonePaymentSendFailureZ"); - *ret_conv = CResult_NonePaymentSendFailureZ_clone(orig_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_RouteDecodeErrorZ* orig_conv = (LDKCResult_RouteDecodeErrorZ*)(orig & ~1); + LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ"); + *ret_conv = CResult_RouteDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CVec_NetAddressZ_free(uint32_tArray _res) { - LDKCVec_NetAddressZ _res_constr; - _res_constr.datalen = *((uint32_t*)_res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKNetAddress), "LDKCVec_NetAddressZ Elements"); - else - _res_constr.data = NULL; - uint32_t* _res_vals = (uint32_t*)(_res + 4); - for (size_t m = 0; m < _res_constr.datalen; m++) { - uint32_t arr_conv_12 = _res_vals[m]; - LDKNetAddress arr_conv_12_conv = *(LDKNetAddress*)(((uint64_t)arr_conv_12) & ~1); - FREE((void*)arr_conv_12); - _res_constr.data[m] = arr_conv_12_conv; - } - CVec_NetAddressZ_free(_res_constr); -} - -void __attribute__((visibility("default"))) TS_CVec_ChannelMonitorZ_free(uint32_tArray _res) { - LDKCVec_ChannelMonitorZ _res_constr; +void __attribute__((visibility("default"))) TS_CVec_RouteHintZ_free(uint32_tArray _res) { + LDKCVec_RouteHintZ _res_constr; _res_constr.datalen = *((uint32_t*)_res); if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKChannelMonitor), "LDKCVec_ChannelMonitorZ Elements"); + _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKRouteHint), "LDKCVec_RouteHintZ Elements"); else _res_constr.data = NULL; uint32_t* _res_vals = (uint32_t*)(_res + 4); - for (size_t q = 0; q < _res_constr.datalen; q++) { - uint32_t arr_conv_16 = _res_vals[q]; - LDKChannelMonitor arr_conv_16_conv; - arr_conv_16_conv.inner = (void*)(arr_conv_16 & (~1)); - arr_conv_16_conv.is_owned = (arr_conv_16 & 1) || (arr_conv_16 == 0); - _res_constr.data[q] = arr_conv_16_conv; + for (size_t l = 0; l < _res_constr.datalen; l++) { + uint32_t arr_conv_11 = _res_vals[l]; + LDKRouteHint arr_conv_11_conv; + arr_conv_11_conv.inner = (void*)(arr_conv_11 & (~1)); + arr_conv_11_conv.is_owned = (arr_conv_11 & 1) || (arr_conv_11 == 0); + _res_constr.data[l] = arr_conv_11_conv; } - CVec_ChannelMonitorZ_free(_res_constr); -} - -void __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_free(uint32_t _res) { - if ((_res & 1) != 0) return; - LDKC2Tuple_BlockHashChannelManagerZ _res_conv = *(LDKC2Tuple_BlockHashChannelManagerZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - C2Tuple_BlockHashChannelManagerZ_free(_res_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_C2Tuple_BlockHashChannelManagerZ_new(int8_tArray a, uint32_t b) { - LDKThirtyTwoBytes a_ref; - CHECK(*((uint32_t*)a) == 32); - memcpy(a_ref.data, (uint8_t*)(a + 4), 32); - LDKChannelManager b_conv; - b_conv.inner = (void*)(b & (~1)); - b_conv.is_owned = (b & 1) || (b == 0); - // Warning: we need a move here but no clone is available for LDKChannelManager - LDKC2Tuple_BlockHashChannelManagerZ* ret_ref = MALLOC(sizeof(LDKC2Tuple_BlockHashChannelManagerZ), "LDKC2Tuple_BlockHashChannelManagerZ"); - *ret_ref = C2Tuple_BlockHashChannelManagerZ_new(a_ref, b_conv); - return (long)ret_ref; + CVec_RouteHintZ_free(_res_constr); } -uint32_t __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(uint32_t o) { - LDKC2Tuple_BlockHashChannelManagerZ o_conv = *(LDKC2Tuple_BlockHashChannelManagerZ*)(((uint64_t)o) & ~1); - FREE((void*)o); - LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ"); - *ret_conv = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(o_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_ok(uint32_t o) { + LDKRoute o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = Route_clone(&o_conv); + LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ"); + *ret_conv = CResult_RouteLightningErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(uint32_t e) { - LDKDecodeError e_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_err(uint32_t e) { + LDKLightningError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); - e_conv = DecodeError_clone(&e_conv); - LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ), "LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ"); - *ret_conv = CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(e_conv); + e_conv = LightningError_clone(&e_conv); + LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ"); + *ret_conv = CResult_RouteLightningErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res_conv = *(LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_RouteLightningErrorZ _res_conv = *(LDKCResult_RouteLightningErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(_res_conv); + CResult_RouteLightningErrorZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_clone(uint32_t orig) { + LDKCResult_RouteLightningErrorZ* orig_conv = (LDKCResult_RouteLightningErrorZ*)(orig & ~1); + LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ"); + *ret_conv = CResult_RouteLightningErrorZ_clone(orig_conv); + return (long)ret_conv; } uint32_t __attribute__((visibility("default"))) TS_CResult_NetAddressu8Z_ok(uint32_t o) { @@ -5112,19 +7034,11 @@ void __attribute__((visibility("default"))) TS_CResult_CResult_NetAddressu8ZDec CResult_CResult_NetAddressu8ZDecodeErrorZ_free(_res_conv); } -void __attribute__((visibility("default"))) TS_CVec_u64Z_free(int64_tArray _res) { - LDKCVec_u64Z _res_constr; - _res_constr.datalen = *((uint32_t*)_res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(int64_t), "LDKCVec_u64Z Elements"); - else - _res_constr.data = NULL; - int64_t* _res_vals = (int64_t*)(_res + 4); - for (size_t i = 0; i < _res_constr.datalen; i++) { - int64_t arr_conv_8 = _res_vals[i]; - _res_constr.data[i] = arr_conv_8; - } - CVec_u64Z_free(_res_constr); +uint32_t __attribute__((visibility("default"))) TS_CResult_CResult_NetAddressu8ZDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_CResult_NetAddressu8ZDecodeErrorZ* orig_conv = (LDKCResult_CResult_NetAddressu8ZDecodeErrorZ*)(orig & ~1); + LDKCResult_CResult_NetAddressu8ZDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CResult_NetAddressu8ZDecodeErrorZ), "LDKCResult_CResult_NetAddressu8ZDecodeErrorZ"); + *ret_conv = CResult_CResult_NetAddressu8ZDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } void __attribute__((visibility("default"))) TS_CVec_UpdateAddHTLCZ_free(uint32_tArray _res) { @@ -5199,123 +7113,71 @@ void __attribute__((visibility("default"))) TS_CVec_UpdateFailMalformedHTLCZ_fr CVec_UpdateFailMalformedHTLCZ_free(_res_constr); } -uint32_t __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_ok(jboolean o) { - LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); - *ret_conv = CResult_boolLightningErrorZ_ok(o); +uint32_t __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_ok(uint32_t o) { + LDKAcceptChannel o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = AcceptChannel_clone(&o_conv); + LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ"); + *ret_conv = CResult_AcceptChannelDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_err(uint32_t e) { - LDKLightningError e_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); - e_conv = LightningError_clone(&e_conv); - LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); - *ret_conv = CResult_boolLightningErrorZ_err(e_conv); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ"); + *ret_conv = CResult_AcceptChannelDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_boolLightningErrorZ _res_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_AcceptChannelDecodeErrorZ _res_conv = *(LDKCResult_AcceptChannelDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_boolLightningErrorZ_free(_res_conv); + CResult_AcceptChannelDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_boolLightningErrorZ_clone(uint32_t orig) { - LDKCResult_boolLightningErrorZ* orig_conv = (LDKCResult_boolLightningErrorZ*)(orig & ~1); - LDKCResult_boolLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolLightningErrorZ), "LDKCResult_boolLightningErrorZ"); - *ret_conv = CResult_boolLightningErrorZ_clone(orig_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_AcceptChannelDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_AcceptChannelDecodeErrorZ* orig_conv = (LDKCResult_AcceptChannelDecodeErrorZ*)(orig & ~1); + LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ"); + *ret_conv = CResult_AcceptChannelDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(uint32_t _res) { - if ((_res & 1) != 0) return; - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(_res_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(uint32_t a, uint32_t b, uint32_t c) { - LDKChannelAnnouncement a_conv; - a_conv.inner = (void*)(a & (~1)); - a_conv.is_owned = (a & 1) || (a == 0); - a_conv = ChannelAnnouncement_clone(&a_conv); - LDKChannelUpdate b_conv; - b_conv.inner = (void*)(b & (~1)); - b_conv.is_owned = (b & 1) || (b == 0); - b_conv = ChannelUpdate_clone(&b_conv); - LDKChannelUpdate c_conv; - c_conv.inner = (void*)(c & (~1)); - c_conv.is_owned = (c & 1) || (c == 0); - c_conv = ChannelUpdate_clone(&c_conv); - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ* ret_ref = MALLOC(sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ"); - *ret_ref = C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(a_conv, b_conv, c_conv); - return (long)ret_ref; -} - -void __attribute__((visibility("default"))) TS_CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(uint32_tArray _res) { - LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res_constr; - _res_constr.datalen = *((uint32_t*)_res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ), "LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ Elements"); - else - _res_constr.data = NULL; - uint32_t* _res_vals = (uint32_t*)(_res + 4); - for (size_t l = 0; l < _res_constr.datalen; l++) { - uint32_t arr_conv_63 = _res_vals[l]; - LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ arr_conv_63_conv = *(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ*)(((uint64_t)arr_conv_63) & ~1); - FREE((void*)arr_conv_63); - _res_constr.data[l] = arr_conv_63_conv; - } - CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(_res_constr); -} - -void __attribute__((visibility("default"))) TS_CVec_NodeAnnouncementZ_free(uint32_tArray _res) { - LDKCVec_NodeAnnouncementZ _res_constr; - _res_constr.datalen = *((uint32_t*)_res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKNodeAnnouncement), "LDKCVec_NodeAnnouncementZ Elements"); - else - _res_constr.data = NULL; - uint32_t* _res_vals = (uint32_t*)(_res + 4); - for (size_t s = 0; s < _res_constr.datalen; s++) { - uint32_t arr_conv_18 = _res_vals[s]; - LDKNodeAnnouncement arr_conv_18_conv; - arr_conv_18_conv.inner = (void*)(arr_conv_18 & (~1)); - arr_conv_18_conv.is_owned = (arr_conv_18 & 1) || (arr_conv_18 == 0); - _res_constr.data[s] = arr_conv_18_conv; - } - CVec_NodeAnnouncementZ_free(_res_constr); -} - -uint32_t __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_ok() { - LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); - *ret_conv = CResult_NoneLightningErrorZ_ok(); +uint32_t __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_ok(uint32_t o) { + LDKAnnouncementSignatures o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = AnnouncementSignatures_clone(&o_conv); + LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ"); + *ret_conv = CResult_AnnouncementSignaturesDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_err(uint32_t e) { - LDKLightningError e_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); - e_conv = LightningError_clone(&e_conv); - LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); - *ret_conv = CResult_NoneLightningErrorZ_err(e_conv); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ"); + *ret_conv = CResult_AnnouncementSignaturesDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_NoneLightningErrorZ _res_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_AnnouncementSignaturesDecodeErrorZ _res_conv = *(LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_NoneLightningErrorZ_free(_res_conv); + CResult_AnnouncementSignaturesDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_NoneLightningErrorZ_clone(uint32_t orig) { - LDKCResult_NoneLightningErrorZ* orig_conv = (LDKCResult_NoneLightningErrorZ*)(orig & ~1); - LDKCResult_NoneLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NoneLightningErrorZ), "LDKCResult_NoneLightningErrorZ"); - *ret_conv = CResult_NoneLightningErrorZ_clone(orig_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_AnnouncementSignaturesDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_AnnouncementSignaturesDecodeErrorZ* orig_conv = (LDKCResult_AnnouncementSignaturesDecodeErrorZ*)(orig & ~1); + LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ"); + *ret_conv = CResult_AnnouncementSignaturesDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } @@ -5346,822 +7208,963 @@ void __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecode CResult_ChannelReestablishDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_ok(uint32_t o) { - LDKInit o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelReestablishDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_ChannelReestablishDecodeErrorZ* orig_conv = (LDKCResult_ChannelReestablishDecodeErrorZ*)(orig & ~1); + LDKCResult_ChannelReestablishDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelReestablishDecodeErrorZ), "LDKCResult_ChannelReestablishDecodeErrorZ"); + *ret_conv = CResult_ChannelReestablishDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_ok(uint32_t o) { + LDKClosingSigned o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = Init_clone(&o_conv); - LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ"); - *ret_conv = CResult_InitDecodeErrorZ_ok(o_conv); + o_conv = ClosingSigned_clone(&o_conv); + LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ"); + *ret_conv = CResult_ClosingSignedDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ"); - *ret_conv = CResult_InitDecodeErrorZ_err(e_conv); + LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ"); + *ret_conv = CResult_ClosingSignedDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_InitDecodeErrorZ _res_conv = *(LDKCResult_InitDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_ClosingSignedDecodeErrorZ _res_conv = *(LDKCResult_ClosingSignedDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_InitDecodeErrorZ_free(_res_conv); + CResult_ClosingSignedDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_ok(uint32_t o) { - LDKPing o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_ClosingSignedDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_ClosingSignedDecodeErrorZ* orig_conv = (LDKCResult_ClosingSignedDecodeErrorZ*)(orig & ~1); + LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ"); + *ret_conv = CResult_ClosingSignedDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_ok(uint32_t o) { + LDKCommitmentSigned o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = Ping_clone(&o_conv); - LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ"); - *ret_conv = CResult_PingDecodeErrorZ_ok(o_conv); + o_conv = CommitmentSigned_clone(&o_conv); + LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ"); + *ret_conv = CResult_CommitmentSignedDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ"); - *ret_conv = CResult_PingDecodeErrorZ_err(e_conv); + LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ"); + *ret_conv = CResult_CommitmentSignedDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_PingDecodeErrorZ _res_conv = *(LDKCResult_PingDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_CommitmentSignedDecodeErrorZ _res_conv = *(LDKCResult_CommitmentSignedDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_PingDecodeErrorZ_free(_res_conv); + CResult_CommitmentSignedDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_ok(uint32_t o) { - LDKPong o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_CommitmentSignedDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_CommitmentSignedDecodeErrorZ* orig_conv = (LDKCResult_CommitmentSignedDecodeErrorZ*)(orig & ~1); + LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ"); + *ret_conv = CResult_CommitmentSignedDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_ok(uint32_t o) { + LDKFundingCreated o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = Pong_clone(&o_conv); - LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ"); - *ret_conv = CResult_PongDecodeErrorZ_ok(o_conv); + o_conv = FundingCreated_clone(&o_conv); + LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ"); + *ret_conv = CResult_FundingCreatedDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ"); - *ret_conv = CResult_PongDecodeErrorZ_err(e_conv); + LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ"); + *ret_conv = CResult_FundingCreatedDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_PongDecodeErrorZ _res_conv = *(LDKCResult_PongDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_FundingCreatedDecodeErrorZ _res_conv = *(LDKCResult_FundingCreatedDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_PongDecodeErrorZ_free(_res_conv); + CResult_FundingCreatedDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(uint32_t o) { - LDKUnsignedChannelAnnouncement o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_FundingCreatedDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_FundingCreatedDecodeErrorZ* orig_conv = (LDKCResult_FundingCreatedDecodeErrorZ*)(orig & ~1); + LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ"); + *ret_conv = CResult_FundingCreatedDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_ok(uint32_t o) { + LDKFundingSigned o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = UnsignedChannelAnnouncement_clone(&o_conv); - LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ"); - *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(o_conv); + o_conv = FundingSigned_clone(&o_conv); + LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ"); + *ret_conv = CResult_FundingSignedDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ"); - *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(e_conv); + LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ"); + *ret_conv = CResult_FundingSignedDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_FundingSignedDecodeErrorZ _res_conv = *(LDKCResult_FundingSignedDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(_res_conv); + CResult_FundingSignedDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_ok(uint32_t o) { - LDKUnsignedChannelUpdate o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_FundingSignedDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_FundingSignedDecodeErrorZ* orig_conv = (LDKCResult_FundingSignedDecodeErrorZ*)(orig & ~1); + LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ"); + *ret_conv = CResult_FundingSignedDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_ok(uint32_t o) { + LDKFundingLocked o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = UnsignedChannelUpdate_clone(&o_conv); - LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ"); - *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_ok(o_conv); + o_conv = FundingLocked_clone(&o_conv); + LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ"); + *ret_conv = CResult_FundingLockedDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ"); - *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_err(e_conv); + LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ"); + *ret_conv = CResult_FundingLockedDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res_conv = *(LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_FundingLockedDecodeErrorZ _res_conv = *(LDKCResult_FundingLockedDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_UnsignedChannelUpdateDecodeErrorZ_free(_res_conv); + CResult_FundingLockedDecodeErrorZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_FundingLockedDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_FundingLockedDecodeErrorZ* orig_conv = (LDKCResult_FundingLockedDecodeErrorZ*)(orig & ~1); + LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ"); + *ret_conv = CResult_FundingLockedDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_ok(uint32_t o) { + LDKInit o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = Init_clone(&o_conv); + LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ"); + *ret_conv = CResult_InitDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ"); + *ret_conv = CResult_InitDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_InitDecodeErrorZ _res_conv = *(LDKCResult_InitDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_InitDecodeErrorZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_InitDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_InitDecodeErrorZ* orig_conv = (LDKCResult_InitDecodeErrorZ*)(orig & ~1); + LDKCResult_InitDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitDecodeErrorZ), "LDKCResult_InitDecodeErrorZ"); + *ret_conv = CResult_InitDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_ok(uint32_t o) { + LDKOpenChannel o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = OpenChannel_clone(&o_conv); + LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ"); + *ret_conv = CResult_OpenChannelDecodeErrorZ_ok(o_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ"); + *ret_conv = CResult_OpenChannelDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_OpenChannelDecodeErrorZ _res_conv = *(LDKCResult_OpenChannelDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_OpenChannelDecodeErrorZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_OpenChannelDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_OpenChannelDecodeErrorZ* orig_conv = (LDKCResult_OpenChannelDecodeErrorZ*)(orig & ~1); + LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ"); + *ret_conv = CResult_OpenChannelDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_ok(uint32_t o) { - LDKErrorMessage o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_ok(uint32_t o) { + LDKRevokeAndACK o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = ErrorMessage_clone(&o_conv); - LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ"); - *ret_conv = CResult_ErrorMessageDecodeErrorZ_ok(o_conv); + o_conv = RevokeAndACK_clone(&o_conv); + LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ"); + *ret_conv = CResult_RevokeAndACKDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ"); - *ret_conv = CResult_ErrorMessageDecodeErrorZ_err(e_conv); + LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ"); + *ret_conv = CResult_RevokeAndACKDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_ErrorMessageDecodeErrorZ _res_conv = *(LDKCResult_ErrorMessageDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_RevokeAndACKDecodeErrorZ _res_conv = *(LDKCResult_RevokeAndACKDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_ErrorMessageDecodeErrorZ_free(_res_conv); + CResult_RevokeAndACKDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(uint32_t o) { - LDKUnsignedNodeAnnouncement o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_RevokeAndACKDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_RevokeAndACKDecodeErrorZ* orig_conv = (LDKCResult_RevokeAndACKDecodeErrorZ*)(orig & ~1); + LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ"); + *ret_conv = CResult_RevokeAndACKDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_ok(uint32_t o) { + LDKShutdown o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = UnsignedNodeAnnouncement_clone(&o_conv); - LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ"); - *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(o_conv); + o_conv = Shutdown_clone(&o_conv); + LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ"); + *ret_conv = CResult_ShutdownDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ"); - *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(e_conv); + LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ"); + *ret_conv = CResult_ShutdownDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_ShutdownDecodeErrorZ _res_conv = *(LDKCResult_ShutdownDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(_res_conv); + CResult_ShutdownDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_ok(uint32_t o) { - LDKQueryShortChannelIds o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_ShutdownDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_ShutdownDecodeErrorZ* orig_conv = (LDKCResult_ShutdownDecodeErrorZ*)(orig & ~1); + LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ"); + *ret_conv = CResult_ShutdownDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_ok(uint32_t o) { + LDKUpdateFailHTLC o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = QueryShortChannelIds_clone(&o_conv); - LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ"); - *ret_conv = CResult_QueryShortChannelIdsDecodeErrorZ_ok(o_conv); + o_conv = UpdateFailHTLC_clone(&o_conv); + LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFailHTLCDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ"); - *ret_conv = CResult_QueryShortChannelIdsDecodeErrorZ_err(e_conv); + LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFailHTLCDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_QueryShortChannelIdsDecodeErrorZ _res_conv = *(LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_UpdateFailHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFailHTLCDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_QueryShortChannelIdsDecodeErrorZ_free(_res_conv); + CResult_UpdateFailHTLCDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(uint32_t o) { - LDKReplyShortChannelIdsEnd o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_UpdateFailHTLCDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_UpdateFailHTLCDecodeErrorZ* orig_conv = (LDKCResult_UpdateFailHTLCDecodeErrorZ*)(orig & ~1); + LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFailHTLCDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(uint32_t o) { + LDKUpdateFailMalformedHTLC o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = ReplyShortChannelIdsEnd_clone(&o_conv); - LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ"); - *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(o_conv); + o_conv = UpdateFailMalformedHTLC_clone(&o_conv); + LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ"); - *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(e_conv); + LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res_conv = *(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(_res_conv); + CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_ok(uint32_t o) { - LDKQueryChannelRange o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* orig_conv = (LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ*)(orig & ~1); + LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_ok(uint32_t o) { + LDKUpdateFee o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = QueryChannelRange_clone(&o_conv); - LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ"); - *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_ok(o_conv); + o_conv = UpdateFee_clone(&o_conv); + LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ"); + *ret_conv = CResult_UpdateFeeDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ"); - *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_err(e_conv); + LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ"); + *ret_conv = CResult_UpdateFeeDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_QueryChannelRangeDecodeErrorZ _res_conv = *(LDKCResult_QueryChannelRangeDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_UpdateFeeDecodeErrorZ _res_conv = *(LDKCResult_UpdateFeeDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_QueryChannelRangeDecodeErrorZ_free(_res_conv); + CResult_UpdateFeeDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_ok(uint32_t o) { - LDKReplyChannelRange o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_UpdateFeeDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_UpdateFeeDecodeErrorZ* orig_conv = (LDKCResult_UpdateFeeDecodeErrorZ*)(orig & ~1); + LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ"); + *ret_conv = CResult_UpdateFeeDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_ok(uint32_t o) { + LDKUpdateFulfillHTLC o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = ReplyChannelRange_clone(&o_conv); - LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ"); - *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_ok(o_conv); + o_conv = UpdateFulfillHTLC_clone(&o_conv); + LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFulfillHTLCDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ"); - *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_err(e_conv); + LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFulfillHTLCDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_ReplyChannelRangeDecodeErrorZ _res_conv = *(LDKCResult_ReplyChannelRangeDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_UpdateFulfillHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_ReplyChannelRangeDecodeErrorZ_free(_res_conv); + CResult_UpdateFulfillHTLCDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_ok(uint32_t o) { - LDKGossipTimestampFilter o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_UpdateFulfillHTLCDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_UpdateFulfillHTLCDecodeErrorZ* orig_conv = (LDKCResult_UpdateFulfillHTLCDecodeErrorZ*)(orig & ~1); + LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateFulfillHTLCDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_ok(uint32_t o) { + LDKUpdateAddHTLC o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = GossipTimestampFilter_clone(&o_conv); - LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ"); - *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_ok(o_conv); + o_conv = UpdateAddHTLC_clone(&o_conv); + LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateAddHTLCDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ"); - *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_err(e_conv); + LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateAddHTLCDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_GossipTimestampFilterDecodeErrorZ _res_conv = *(LDKCResult_GossipTimestampFilterDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_UpdateAddHTLCDecodeErrorZ _res_conv = *(LDKCResult_UpdateAddHTLCDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_GossipTimestampFilterDecodeErrorZ_free(_res_conv); -} - -void __attribute__((visibility("default"))) TS_CVec_PublicKeyZ_free(ptrArray _res) { - LDKCVec_PublicKeyZ _res_constr; - _res_constr.datalen = *((uint32_t*)_res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKPublicKey), "LDKCVec_PublicKeyZ Elements"); - else - _res_constr.data = NULL; - int8_tArray* _res_vals = (int8_tArray*)(_res + 4); - for (size_t m = 0; m < _res_constr.datalen; m++) { - int8_tArray arr_conv_12 = _res_vals[m]; - LDKPublicKey arr_conv_12_ref; - CHECK(*((uint32_t*)arr_conv_12) == 33); - memcpy(arr_conv_12_ref.compressed_form, (uint8_t*)(arr_conv_12 + 4), 33); - _res_constr.data[m] = arr_conv_12_ref; - } - CVec_PublicKeyZ_free(_res_constr); + CResult_UpdateAddHTLCDecodeErrorZ_free(_res_conv); } -void __attribute__((visibility("default"))) TS_CVec_u8Z_free(int8_tArray _res) { - LDKCVec_u8Z _res_ref; - _res_ref.datalen = *((uint32_t*)_res); - _res_ref.data = MALLOC(_res_ref.datalen, "LDKCVec_u8Z Bytes"); - memcpy(_res_ref.data, (uint8_t*)(_res + 4), _res_ref.datalen); - CVec_u8Z_free(_res_ref); +uint32_t __attribute__((visibility("default"))) TS_CResult_UpdateAddHTLCDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_UpdateAddHTLCDecodeErrorZ* orig_conv = (LDKCResult_UpdateAddHTLCDecodeErrorZ*)(orig & ~1); + LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ"); + *ret_conv = CResult_UpdateAddHTLCDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_ok(int8_tArray o) { - LDKCVec_u8Z o_ref; - o_ref.datalen = *((uint32_t*)o); - o_ref.data = MALLOC(o_ref.datalen, "LDKCVec_u8Z Bytes"); - memcpy(o_ref.data, (uint8_t*)(o + 4), o_ref.datalen); - LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ"); - *ret_conv = CResult_CVec_u8ZPeerHandleErrorZ_ok(o_ref); +uint32_t __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_ok(uint32_t o) { + LDKPing o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = Ping_clone(&o_conv); + LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ"); + *ret_conv = CResult_PingDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_err(uint32_t e) { - LDKPeerHandleError e_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); - e_conv = PeerHandleError_clone(&e_conv); - LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ"); - *ret_conv = CResult_CVec_u8ZPeerHandleErrorZ_err(e_conv); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ"); + *ret_conv = CResult_PingDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_CVec_u8ZPeerHandleErrorZ _res_conv = *(LDKCResult_CVec_u8ZPeerHandleErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_PingDecodeErrorZ _res_conv = *(LDKCResult_PingDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_CVec_u8ZPeerHandleErrorZ_free(_res_conv); + CResult_PingDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_CVec_u8ZPeerHandleErrorZ_clone(uint32_t orig) { - LDKCResult_CVec_u8ZPeerHandleErrorZ* orig_conv = (LDKCResult_CVec_u8ZPeerHandleErrorZ*)(orig & ~1); - LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ"); - *ret_conv = CResult_CVec_u8ZPeerHandleErrorZ_clone(orig_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_PingDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_PingDecodeErrorZ* orig_conv = (LDKCResult_PingDecodeErrorZ*)(orig & ~1); + LDKCResult_PingDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PingDecodeErrorZ), "LDKCResult_PingDecodeErrorZ"); + *ret_conv = CResult_PingDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_ok() { - LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ"); - *ret_conv = CResult_NonePeerHandleErrorZ_ok(); +uint32_t __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_ok(uint32_t o) { + LDKPong o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = Pong_clone(&o_conv); + LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ"); + *ret_conv = CResult_PongDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_err(uint32_t e) { - LDKPeerHandleError e_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); - e_conv = PeerHandleError_clone(&e_conv); - LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ"); - *ret_conv = CResult_NonePeerHandleErrorZ_err(e_conv); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ"); + *ret_conv = CResult_PongDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_NonePeerHandleErrorZ _res_conv = *(LDKCResult_NonePeerHandleErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_PongDecodeErrorZ _res_conv = *(LDKCResult_PongDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_NonePeerHandleErrorZ_free(_res_conv); + CResult_PongDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_NonePeerHandleErrorZ_clone(uint32_t orig) { - LDKCResult_NonePeerHandleErrorZ* orig_conv = (LDKCResult_NonePeerHandleErrorZ*)(orig & ~1); - LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ"); - *ret_conv = CResult_NonePeerHandleErrorZ_clone(orig_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_PongDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_PongDecodeErrorZ* orig_conv = (LDKCResult_PongDecodeErrorZ*)(orig & ~1); + LDKCResult_PongDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PongDecodeErrorZ), "LDKCResult_PongDecodeErrorZ"); + *ret_conv = CResult_PongDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_ok(jboolean o) { - LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ"); - *ret_conv = CResult_boolPeerHandleErrorZ_ok(o); +uint32_t __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(uint32_t o) { + LDKUnsignedChannelAnnouncement o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = UnsignedChannelAnnouncement_clone(&o_conv); + LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ"); + *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_err(uint32_t e) { - LDKPeerHandleError e_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); - e_conv = PeerHandleError_clone(&e_conv); - LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ"); - *ret_conv = CResult_boolPeerHandleErrorZ_err(e_conv); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ"); + *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_boolPeerHandleErrorZ _res_conv = *(LDKCResult_boolPeerHandleErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_boolPeerHandleErrorZ_free(_res_conv); + CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_boolPeerHandleErrorZ_clone(uint32_t orig) { - LDKCResult_boolPeerHandleErrorZ* orig_conv = (LDKCResult_boolPeerHandleErrorZ*)(orig & ~1); - LDKCResult_boolPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_boolPeerHandleErrorZ), "LDKCResult_boolPeerHandleErrorZ"); - *ret_conv = CResult_boolPeerHandleErrorZ_clone(orig_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* orig_conv = (LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ*)(orig & ~1); + LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ), "LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ"); + *ret_conv = CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_SecretKeySecpErrorZ_ok(int8_tArray o) { - LDKSecretKey o_ref; - CHECK(*((uint32_t*)o) == 32); - memcpy(o_ref.bytes, (uint8_t*)(o + 4), 32); - LDKCResult_SecretKeySecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeySecpErrorZ), "LDKCResult_SecretKeySecpErrorZ"); - *ret_conv = CResult_SecretKeySecpErrorZ_ok(o_ref); +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_ok(uint32_t o) { + LDKChannelAnnouncement o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = ChannelAnnouncement_clone(&o_conv); + LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ"); + *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_SecretKeySecpErrorZ_err(uint32_t e) { - LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_js(e); - LDKCResult_SecretKeySecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeySecpErrorZ), "LDKCResult_SecretKeySecpErrorZ"); - *ret_conv = CResult_SecretKeySecpErrorZ_err(e_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ"); + *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_SecretKeySecpErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_SecretKeySecpErrorZ _res_conv = *(LDKCResult_SecretKeySecpErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_ChannelAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_ChannelAnnouncementDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_SecretKeySecpErrorZ_free(_res_conv); + CResult_ChannelAnnouncementDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_PublicKeySecpErrorZ_ok(int8_tArray o) { - LDKPublicKey o_ref; - CHECK(*((uint32_t*)o) == 33); - memcpy(o_ref.compressed_form, (uint8_t*)(o + 4), 33); - LDKCResult_PublicKeySecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeySecpErrorZ), "LDKCResult_PublicKeySecpErrorZ"); - *ret_conv = CResult_PublicKeySecpErrorZ_ok(o_ref); +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelAnnouncementDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_ChannelAnnouncementDecodeErrorZ* orig_conv = (LDKCResult_ChannelAnnouncementDecodeErrorZ*)(orig & ~1); + LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ"); + *ret_conv = CResult_ChannelAnnouncementDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_PublicKeySecpErrorZ_err(uint32_t e) { - LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_js(e); - LDKCResult_PublicKeySecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeySecpErrorZ), "LDKCResult_PublicKeySecpErrorZ"); - *ret_conv = CResult_PublicKeySecpErrorZ_err(e_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_ok(uint32_t o) { + LDKUnsignedChannelUpdate o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = UnsignedChannelUpdate_clone(&o_conv); + LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ"); + *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_PublicKeySecpErrorZ_free(uint32_t _res) { +uint32_t __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ"); + *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_err(e_conv); + return (long)ret_conv; +} + +void __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_PublicKeySecpErrorZ _res_conv = *(LDKCResult_PublicKeySecpErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res_conv = *(LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_PublicKeySecpErrorZ_free(_res_conv); + CResult_UnsignedChannelUpdateDecodeErrorZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_UnsignedChannelUpdateDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_UnsignedChannelUpdateDecodeErrorZ* orig_conv = (LDKCResult_UnsignedChannelUpdateDecodeErrorZ*)(orig & ~1); + LDKCResult_UnsignedChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedChannelUpdateDecodeErrorZ), "LDKCResult_UnsignedChannelUpdateDecodeErrorZ"); + *ret_conv = CResult_UnsignedChannelUpdateDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_TxCreationKeysSecpErrorZ_ok(uint32_t o) { - LDKTxCreationKeys o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_ok(uint32_t o) { + LDKChannelUpdate o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = TxCreationKeys_clone(&o_conv); - LDKCResult_TxCreationKeysSecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysSecpErrorZ), "LDKCResult_TxCreationKeysSecpErrorZ"); - *ret_conv = CResult_TxCreationKeysSecpErrorZ_ok(o_conv); + o_conv = ChannelUpdate_clone(&o_conv); + LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ"); + *ret_conv = CResult_ChannelUpdateDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_TxCreationKeysSecpErrorZ_err(uint32_t e) { - LDKSecp256k1Error e_conv = LDKSecp256k1Error_from_js(e); - LDKCResult_TxCreationKeysSecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysSecpErrorZ), "LDKCResult_TxCreationKeysSecpErrorZ"); - *ret_conv = CResult_TxCreationKeysSecpErrorZ_err(e_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ"); + *ret_conv = CResult_ChannelUpdateDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_TxCreationKeysSecpErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_TxCreationKeysSecpErrorZ _res_conv = *(LDKCResult_TxCreationKeysSecpErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_ChannelUpdateDecodeErrorZ _res_conv = *(LDKCResult_ChannelUpdateDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_TxCreationKeysSecpErrorZ_free(_res_conv); + CResult_ChannelUpdateDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_ok(uint32_t o) { - LDKTrustedCommitmentTransaction o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_ChannelUpdateDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_ChannelUpdateDecodeErrorZ* orig_conv = (LDKCResult_ChannelUpdateDecodeErrorZ*)(orig & ~1); + LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ"); + *ret_conv = CResult_ChannelUpdateDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_ok(uint32_t o) { + LDKErrorMessage o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - // Warning: we need a move here but no clone is available for LDKTrustedCommitmentTransaction - LDKCResult_TrustedCommitmentTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ), "LDKCResult_TrustedCommitmentTransactionNoneZ"); - *ret_conv = CResult_TrustedCommitmentTransactionNoneZ_ok(o_conv); + o_conv = ErrorMessage_clone(&o_conv); + LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ"); + *ret_conv = CResult_ErrorMessageDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_err() { - LDKCResult_TrustedCommitmentTransactionNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_TrustedCommitmentTransactionNoneZ), "LDKCResult_TrustedCommitmentTransactionNoneZ"); - *ret_conv = CResult_TrustedCommitmentTransactionNoneZ_err(); +uint32_t __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ"); + *ret_conv = CResult_ErrorMessageDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_TrustedCommitmentTransactionNoneZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_TrustedCommitmentTransactionNoneZ _res_conv = *(LDKCResult_TrustedCommitmentTransactionNoneZ*)(((uint64_t)_res) & ~1); + LDKCResult_ErrorMessageDecodeErrorZ _res_conv = *(LDKCResult_ErrorMessageDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_TrustedCommitmentTransactionNoneZ_free(_res_conv); + CResult_ErrorMessageDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_ok(ptrArray o) { - LDKCVec_SignatureZ o_constr; - o_constr.datalen = *((uint32_t*)o); - if (o_constr.datalen > 0) - o_constr.data = MALLOC(o_constr.datalen * sizeof(LDKSignature), "LDKCVec_SignatureZ Elements"); - else - o_constr.data = NULL; - int8_tArray* o_vals = (int8_tArray*)(o + 4); - for (size_t m = 0; m < o_constr.datalen; m++) { - int8_tArray arr_conv_12 = o_vals[m]; - LDKSignature arr_conv_12_ref; - CHECK(*((uint32_t*)arr_conv_12) == 64); - memcpy(arr_conv_12_ref.compact_form, (uint8_t*)(arr_conv_12 + 4), 64); - o_constr.data[m] = arr_conv_12_ref; - } - LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ"); - *ret_conv = CResult_CVec_SignatureZNoneZ_ok(o_constr); +uint32_t __attribute__((visibility("default"))) TS_CResult_ErrorMessageDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_ErrorMessageDecodeErrorZ* orig_conv = (LDKCResult_ErrorMessageDecodeErrorZ*)(orig & ~1); + LDKCResult_ErrorMessageDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ErrorMessageDecodeErrorZ), "LDKCResult_ErrorMessageDecodeErrorZ"); + *ret_conv = CResult_ErrorMessageDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_err() { - LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ"); - *ret_conv = CResult_CVec_SignatureZNoneZ_err(); +uint32_t __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(uint32_t o) { + LDKUnsignedNodeAnnouncement o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + o_conv = UnsignedNodeAnnouncement_clone(&o_conv); + LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ"); + *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_free(uint32_t _res) { - if ((_res & 1) != 0) return; - LDKCResult_CVec_SignatureZNoneZ _res_conv = *(LDKCResult_CVec_SignatureZNoneZ*)(((uint64_t)_res) & ~1); - FREE((void*)_res); - CResult_CVec_SignatureZNoneZ_free(_res_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_CResult_CVec_SignatureZNoneZ_clone(uint32_t orig) { - LDKCResult_CVec_SignatureZNoneZ* orig_conv = (LDKCResult_CVec_SignatureZNoneZ*)(orig & ~1); - LDKCResult_CVec_SignatureZNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_SignatureZNoneZ), "LDKCResult_CVec_SignatureZNoneZ"); - *ret_conv = CResult_CVec_SignatureZNoneZ_clone(orig_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ"); + *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CVec_RouteHopZ_free(uint32_tArray _res) { - LDKCVec_RouteHopZ _res_constr; - _res_constr.datalen = *((uint32_t*)_res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements"); - else - _res_constr.data = NULL; - uint32_t* _res_vals = (uint32_t*)(_res + 4); - for (size_t k = 0; k < _res_constr.datalen; k++) { - uint32_t arr_conv_10 = _res_vals[k]; - LDKRouteHop arr_conv_10_conv; - arr_conv_10_conv.inner = (void*)(arr_conv_10 & (~1)); - arr_conv_10_conv.is_owned = (arr_conv_10 & 1) || (arr_conv_10 == 0); - _res_constr.data[k] = arr_conv_10_conv; - } - CVec_RouteHopZ_free(_res_constr); +void __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(((uint64_t)_res) & ~1); + FREE((void*)_res); + CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(_res_conv); } -void __attribute__((visibility("default"))) TS_CVec_CVec_RouteHopZZ_free(ptrArray _res) { - LDKCVec_CVec_RouteHopZZ _res_constr; - _res_constr.datalen = *((uint32_t*)_res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKCVec_RouteHopZ), "LDKCVec_CVec_RouteHopZZ Elements"); - else - _res_constr.data = NULL; - uint32_tArray* _res_vals = (uint32_tArray*)(_res + 4); - for (size_t m = 0; m < _res_constr.datalen; m++) { - uint32_tArray arr_conv_12 = _res_vals[m]; - LDKCVec_RouteHopZ arr_conv_12_constr; - arr_conv_12_constr.datalen = *((uint32_t*)arr_conv_12); - if (arr_conv_12_constr.datalen > 0) - arr_conv_12_constr.data = MALLOC(arr_conv_12_constr.datalen * sizeof(LDKRouteHop), "LDKCVec_RouteHopZ Elements"); - else - arr_conv_12_constr.data = NULL; - uint32_t* arr_conv_12_vals = (uint32_t*)(arr_conv_12 + 4); - for (size_t k = 0; k < arr_conv_12_constr.datalen; k++) { - uint32_t arr_conv_10 = arr_conv_12_vals[k]; - LDKRouteHop arr_conv_10_conv; - arr_conv_10_conv.inner = (void*)(arr_conv_10 & (~1)); - arr_conv_10_conv.is_owned = (arr_conv_10 & 1) || (arr_conv_10 == 0); - arr_conv_12_constr.data[k] = arr_conv_10_conv; - } - _res_constr.data[m] = arr_conv_12_constr; - } - CVec_CVec_RouteHopZZ_free(_res_constr); +uint32_t __attribute__((visibility("default"))) TS_CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* orig_conv = (LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ*)(orig & ~1); + LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ), "LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ"); + *ret_conv = CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_ok(uint32_t o) { - LDKRoute o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_ok(uint32_t o) { + LDKNodeAnnouncement o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = Route_clone(&o_conv); - LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ"); - *ret_conv = CResult_RouteDecodeErrorZ_ok(o_conv); + o_conv = NodeAnnouncement_clone(&o_conv); + LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ"); + *ret_conv = CResult_NodeAnnouncementDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_RouteDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteDecodeErrorZ), "LDKCResult_RouteDecodeErrorZ"); - *ret_conv = CResult_RouteDecodeErrorZ_err(e_conv); + LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ"); + *ret_conv = CResult_NodeAnnouncementDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_RouteDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_RouteDecodeErrorZ _res_conv = *(LDKCResult_RouteDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_NodeAnnouncementDecodeErrorZ _res_conv = *(LDKCResult_NodeAnnouncementDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_RouteDecodeErrorZ_free(_res_conv); + CResult_NodeAnnouncementDecodeErrorZ_free(_res_conv); } -void __attribute__((visibility("default"))) TS_CVec_RouteHintZ_free(uint32_tArray _res) { - LDKCVec_RouteHintZ _res_constr; - _res_constr.datalen = *((uint32_t*)_res); - if (_res_constr.datalen > 0) - _res_constr.data = MALLOC(_res_constr.datalen * sizeof(LDKRouteHint), "LDKCVec_RouteHintZ Elements"); - else - _res_constr.data = NULL; - uint32_t* _res_vals = (uint32_t*)(_res + 4); - for (size_t l = 0; l < _res_constr.datalen; l++) { - uint32_t arr_conv_11 = _res_vals[l]; - LDKRouteHint arr_conv_11_conv; - arr_conv_11_conv.inner = (void*)(arr_conv_11 & (~1)); - arr_conv_11_conv.is_owned = (arr_conv_11 & 1) || (arr_conv_11 == 0); - _res_constr.data[l] = arr_conv_11_conv; - } - CVec_RouteHintZ_free(_res_constr); +uint32_t __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_NodeAnnouncementDecodeErrorZ* orig_conv = (LDKCResult_NodeAnnouncementDecodeErrorZ*)(orig & ~1); + LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ"); + *ret_conv = CResult_NodeAnnouncementDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_ok(uint32_t o) { - LDKRoute o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_ok(uint32_t o) { + LDKQueryShortChannelIds o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = Route_clone(&o_conv); - LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ"); - *ret_conv = CResult_RouteLightningErrorZ_ok(o_conv); + o_conv = QueryShortChannelIds_clone(&o_conv); + LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ"); + *ret_conv = CResult_QueryShortChannelIdsDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_err(uint32_t e) { - LDKLightningError e_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); - e_conv = LightningError_clone(&e_conv); - LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ"); - *ret_conv = CResult_RouteLightningErrorZ_err(e_conv); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ"); + *ret_conv = CResult_QueryShortChannelIdsDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_RouteLightningErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_RouteLightningErrorZ _res_conv = *(LDKCResult_RouteLightningErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_QueryShortChannelIdsDecodeErrorZ _res_conv = *(LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_RouteLightningErrorZ_free(_res_conv); + CResult_QueryShortChannelIdsDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_RoutingFeesDecodeErrorZ_ok(uint32_t o) { - LDKRoutingFees o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_QueryShortChannelIdsDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_QueryShortChannelIdsDecodeErrorZ* orig_conv = (LDKCResult_QueryShortChannelIdsDecodeErrorZ*)(orig & ~1); + LDKCResult_QueryShortChannelIdsDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryShortChannelIdsDecodeErrorZ), "LDKCResult_QueryShortChannelIdsDecodeErrorZ"); + *ret_conv = CResult_QueryShortChannelIdsDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(uint32_t o) { + LDKReplyShortChannelIdsEnd o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = RoutingFees_clone(&o_conv); - LDKCResult_RoutingFeesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RoutingFeesDecodeErrorZ), "LDKCResult_RoutingFeesDecodeErrorZ"); - *ret_conv = CResult_RoutingFeesDecodeErrorZ_ok(o_conv); + o_conv = ReplyShortChannelIdsEnd_clone(&o_conv); + LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ"); + *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_RoutingFeesDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_RoutingFeesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RoutingFeesDecodeErrorZ), "LDKCResult_RoutingFeesDecodeErrorZ"); - *ret_conv = CResult_RoutingFeesDecodeErrorZ_err(e_conv); + LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ"); + *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_RoutingFeesDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_RoutingFeesDecodeErrorZ _res_conv = *(LDKCResult_RoutingFeesDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res_conv = *(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_RoutingFeesDecodeErrorZ_free(_res_conv); + CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementInfoDecodeErrorZ_ok(uint32_t o) { - LDKNodeAnnouncementInfo o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* orig_conv = (LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ*)(orig & ~1); + LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ), "LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ"); + *ret_conv = CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_ok(uint32_t o) { + LDKQueryChannelRange o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = NodeAnnouncementInfo_clone(&o_conv); - LDKCResult_NodeAnnouncementInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ), "LDKCResult_NodeAnnouncementInfoDecodeErrorZ"); - *ret_conv = CResult_NodeAnnouncementInfoDecodeErrorZ_ok(o_conv); + o_conv = QueryChannelRange_clone(&o_conv); + LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ"); + *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementInfoDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_NodeAnnouncementInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ), "LDKCResult_NodeAnnouncementInfoDecodeErrorZ"); - *ret_conv = CResult_NodeAnnouncementInfoDecodeErrorZ_err(e_conv); + LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ"); + *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementInfoDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res_conv = *(LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_QueryChannelRangeDecodeErrorZ _res_conv = *(LDKCResult_QueryChannelRangeDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_NodeAnnouncementInfoDecodeErrorZ_free(_res_conv); + CResult_QueryChannelRangeDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_NodeAnnouncementInfoDecodeErrorZ_clone(uint32_t orig) { - LDKCResult_NodeAnnouncementInfoDecodeErrorZ* orig_conv = (LDKCResult_NodeAnnouncementInfoDecodeErrorZ*)(orig & ~1); - LDKCResult_NodeAnnouncementInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementInfoDecodeErrorZ), "LDKCResult_NodeAnnouncementInfoDecodeErrorZ"); - *ret_conv = CResult_NodeAnnouncementInfoDecodeErrorZ_clone(orig_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_QueryChannelRangeDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_QueryChannelRangeDecodeErrorZ* orig_conv = (LDKCResult_QueryChannelRangeDecodeErrorZ*)(orig & ~1); + LDKCResult_QueryChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_QueryChannelRangeDecodeErrorZ), "LDKCResult_QueryChannelRangeDecodeErrorZ"); + *ret_conv = CResult_QueryChannelRangeDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_NodeInfoDecodeErrorZ_ok(uint32_t o) { - LDKNodeInfo o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_ok(uint32_t o) { + LDKReplyChannelRange o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - o_conv = NodeInfo_clone(&o_conv); - LDKCResult_NodeInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeInfoDecodeErrorZ), "LDKCResult_NodeInfoDecodeErrorZ"); - *ret_conv = CResult_NodeInfoDecodeErrorZ_ok(o_conv); + o_conv = ReplyChannelRange_clone(&o_conv); + LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ"); + *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_NodeInfoDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_NodeInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeInfoDecodeErrorZ), "LDKCResult_NodeInfoDecodeErrorZ"); - *ret_conv = CResult_NodeInfoDecodeErrorZ_err(e_conv); + LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ"); + *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_NodeInfoDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_NodeInfoDecodeErrorZ _res_conv = *(LDKCResult_NodeInfoDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_ReplyChannelRangeDecodeErrorZ _res_conv = *(LDKCResult_ReplyChannelRangeDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_NodeInfoDecodeErrorZ_free(_res_conv); + CResult_ReplyChannelRangeDecodeErrorZ_free(_res_conv); } -uint32_t __attribute__((visibility("default"))) TS_CResult_NodeInfoDecodeErrorZ_clone(uint32_t orig) { - LDKCResult_NodeInfoDecodeErrorZ* orig_conv = (LDKCResult_NodeInfoDecodeErrorZ*)(orig & ~1); - LDKCResult_NodeInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeInfoDecodeErrorZ), "LDKCResult_NodeInfoDecodeErrorZ"); - *ret_conv = CResult_NodeInfoDecodeErrorZ_clone(orig_conv); +uint32_t __attribute__((visibility("default"))) TS_CResult_ReplyChannelRangeDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_ReplyChannelRangeDecodeErrorZ* orig_conv = (LDKCResult_ReplyChannelRangeDecodeErrorZ*)(orig & ~1); + LDKCResult_ReplyChannelRangeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ReplyChannelRangeDecodeErrorZ), "LDKCResult_ReplyChannelRangeDecodeErrorZ"); + *ret_conv = CResult_ReplyChannelRangeDecodeErrorZ_clone(orig_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_NetworkGraphDecodeErrorZ_ok(uint32_t o) { - LDKNetworkGraph o_conv; +uint32_t __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_ok(uint32_t o) { + LDKGossipTimestampFilter o_conv; o_conv.inner = (void*)(o & (~1)); o_conv.is_owned = (o & 1) || (o == 0); - // Warning: we need a move here but no clone is available for LDKNetworkGraph - LDKCResult_NetworkGraphDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetworkGraphDecodeErrorZ), "LDKCResult_NetworkGraphDecodeErrorZ"); - *ret_conv = CResult_NetworkGraphDecodeErrorZ_ok(o_conv); + o_conv = GossipTimestampFilter_clone(&o_conv); + LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ"); + *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_ok(o_conv); return (long)ret_conv; } -uint32_t __attribute__((visibility("default"))) TS_CResult_NetworkGraphDecodeErrorZ_err(uint32_t e) { +uint32_t __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_err(uint32_t e) { LDKDecodeError e_conv; e_conv.inner = (void*)(e & (~1)); e_conv.is_owned = (e & 1) || (e == 0); e_conv = DecodeError_clone(&e_conv); - LDKCResult_NetworkGraphDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NetworkGraphDecodeErrorZ), "LDKCResult_NetworkGraphDecodeErrorZ"); - *ret_conv = CResult_NetworkGraphDecodeErrorZ_err(e_conv); + LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ"); + *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_err(e_conv); return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_CResult_NetworkGraphDecodeErrorZ_free(uint32_t _res) { +void __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_free(uint32_t _res) { if ((_res & 1) != 0) return; - LDKCResult_NetworkGraphDecodeErrorZ _res_conv = *(LDKCResult_NetworkGraphDecodeErrorZ*)(((uint64_t)_res) & ~1); + LDKCResult_GossipTimestampFilterDecodeErrorZ _res_conv = *(LDKCResult_GossipTimestampFilterDecodeErrorZ*)(((uint64_t)_res) & ~1); FREE((void*)_res); - CResult_NetworkGraphDecodeErrorZ_free(_res_conv); + CResult_GossipTimestampFilterDecodeErrorZ_free(_res_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_CResult_GossipTimestampFilterDecodeErrorZ_clone(uint32_t orig) { + LDKCResult_GossipTimestampFilterDecodeErrorZ* orig_conv = (LDKCResult_GossipTimestampFilterDecodeErrorZ*)(orig & ~1); + LDKCResult_GossipTimestampFilterDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_GossipTimestampFilterDecodeErrorZ), "LDKCResult_GossipTimestampFilterDecodeErrorZ"); + *ret_conv = CResult_GossipTimestampFilterDecodeErrorZ_clone(orig_conv); + return (long)ret_conv; } void __attribute__((visibility("default"))) TS_Event_free(uint32_t this_ptr) { @@ -6257,20 +8260,6 @@ void __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_free(uint ChannelHandshakeConfig_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_clone(uint32_t orig) { - LDKChannelHandshakeConfig orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - int32_t __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_get_minimum_depth(uint32_t this_ptr) { LDKChannelHandshakeConfig this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -6327,8 +8316,11 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_new(i return ret_ref; } -uint32_t __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_default() { - LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_default(); +uint32_t __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_clone(uint32_t orig) { + LDKChannelHandshakeConfig orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -6338,18 +8330,8 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_defau return ret_ref; } -void __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_free(uint32_t this_ptr) { - LDKChannelHandshakeLimits this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ChannelHandshakeLimits_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_clone(uint32_t orig) { - LDKChannelHandshakeLimits orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_clone(&orig_conv); +uint32_t __attribute__((visibility("default"))) TS_ChannelHandshakeConfig_default() { + LDKChannelHandshakeConfig ret_var = ChannelHandshakeConfig_default(); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -6359,6 +8341,13 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_clone return ret_ref; } +void __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_free(uint32_t this_ptr) { + LDKChannelHandshakeLimits this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ChannelHandshakeLimits_free(this_ptr_conv); +} + int64_t __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_get_min_funding_satoshis(uint32_t this_ptr) { LDKChannelHandshakeLimits this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -6520,8 +8509,11 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_new(i return ret_ref; } -uint32_t __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_default() { - LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_default(); +uint32_t __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_clone(uint32_t orig) { + LDKChannelHandshakeLimits orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -6531,18 +8523,8 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_defau return ret_ref; } -void __attribute__((visibility("default"))) TS_ChannelConfig_free(uint32_t this_ptr) { - LDKChannelConfig this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ChannelConfig_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_ChannelConfig_clone(uint32_t orig) { - LDKChannelConfig orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKChannelConfig ret_var = ChannelConfig_clone(&orig_conv); +uint32_t __attribute__((visibility("default"))) TS_ChannelHandshakeLimits_default() { + LDKChannelHandshakeLimits ret_var = ChannelHandshakeLimits_default(); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -6552,6 +8534,13 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelConfig_clone(uint32_t return ret_ref; } +void __attribute__((visibility("default"))) TS_ChannelConfig_free(uint32_t this_ptr) { + LDKChannelConfig this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ChannelConfig_free(this_ptr_conv); +} + int32_t __attribute__((visibility("default"))) TS_ChannelConfig_get_fee_proportional_millionths(uint32_t this_ptr) { LDKChannelConfig this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -6608,6 +8597,20 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelConfig_new(int32_t fe return ret_ref; } +uint32_t __attribute__((visibility("default"))) TS_ChannelConfig_clone(uint32_t orig) { + LDKChannelConfig orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKChannelConfig ret_var = ChannelConfig_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + uint32_t __attribute__((visibility("default"))) TS_ChannelConfig_default() { LDKChannelConfig ret_var = ChannelConfig_default(); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -6634,14 +8637,9 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelConfig_read(int8_tArr LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKChannelConfig ret_var = ChannelConfig_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_ChannelConfigDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelConfigDecodeErrorZ), "LDKCResult_ChannelConfigDecodeErrorZ"); + *ret_conv = ChannelConfig_read(ser_ref); + return (long)ret_conv; } void __attribute__((visibility("default"))) TS_UserConfig_free(uint32_t this_ptr) { @@ -6651,20 +8649,6 @@ void __attribute__((visibility("default"))) TS_UserConfig_free(uint32_t this_pt UserConfig_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_UserConfig_clone(uint32_t orig) { - LDKUserConfig orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKUserConfig ret_var = UserConfig_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - uint32_t __attribute__((visibility("default"))) TS_UserConfig_get_own_channel_config(uint32_t this_ptr) { LDKUserConfig this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -6763,6 +8747,20 @@ uint32_t __attribute__((visibility("default"))) TS_UserConfig_new(uint32_t own_ return ret_ref; } +uint32_t __attribute__((visibility("default"))) TS_UserConfig_clone(uint32_t orig) { + LDKUserConfig orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKUserConfig ret_var = UserConfig_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + uint32_t __attribute__((visibility("default"))) TS_UserConfig_default() { LDKUserConfig ret_var = UserConfig_default(); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. @@ -6904,20 +8902,6 @@ void __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_free(uint32 ChannelMonitorUpdate_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_clone(uint32_t orig) { - LDKChannelMonitorUpdate orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKChannelMonitorUpdate ret_var = ChannelMonitorUpdate_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - int64_t __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_get_update_id(uint32_t this_ptr) { LDKChannelMonitorUpdate this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -6933,6 +8917,20 @@ void __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_set_update_ ChannelMonitorUpdate_set_update_id(&this_ptr_conv, val); } +uint32_t __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_clone(uint32_t orig) { + LDKChannelMonitorUpdate orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKChannelMonitorUpdate ret_var = ChannelMonitorUpdate_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + int8_tArray __attribute__((visibility("default"))) TS_ChannelMonitorUpdate_write(uint32_t obj) { LDKChannelMonitorUpdate obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -7037,14 +9035,9 @@ uint32_t __attribute__((visibility("default"))) TS_HTLCUpdate_read(int8_tArray LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKHTLCUpdate ret_var = HTLCUpdate_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_HTLCUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCUpdateDecodeErrorZ), "LDKCResult_HTLCUpdateDecodeErrorZ"); + *ret_conv = HTLCUpdate_read(ser_ref); + return (long)ret_conv; } void __attribute__((visibility("default"))) TS_ChannelMonitor_free(uint32_t this_ptr) { @@ -7242,20 +9235,6 @@ void __attribute__((visibility("default"))) TS_OutPoint_free(uint32_t this_ptr) OutPoint_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_OutPoint_clone(uint32_t orig) { - LDKOutPoint orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKOutPoint ret_var = OutPoint_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - int8_tArray __attribute__((visibility("default"))) TS_OutPoint_get_txid(uint32_t this_ptr) { LDKOutPoint this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -7304,6 +9283,20 @@ uint32_t __attribute__((visibility("default"))) TS_OutPoint_new(int8_tArray txi return ret_ref; } +uint32_t __attribute__((visibility("default"))) TS_OutPoint_clone(uint32_t orig) { + LDKOutPoint orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKOutPoint ret_var = OutPoint_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + int8_tArray __attribute__((visibility("default"))) TS_OutPoint_to_channel_id(uint32_t this_arg) { LDKOutPoint this_arg_conv; this_arg_conv.inner = (void*)(this_arg & (~1)); @@ -7328,14 +9321,9 @@ uint32_t __attribute__((visibility("default"))) TS_OutPoint_read(int8_tArray se LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKOutPoint ret_var = OutPoint_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_OutPointDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OutPointDecodeErrorZ), "LDKCResult_OutPointDecodeErrorZ"); + *ret_conv = OutPoint_read(ser_ref); + return (long)ret_conv; } void __attribute__((visibility("default"))) TS_SpendableOutputDescriptor_free(uint32_t this_ptr) { @@ -7399,20 +9387,6 @@ void __attribute__((visibility("default"))) TS_InMemoryChannelKeys_free(uint32_ InMemoryChannelKeys_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_InMemoryChannelKeys_clone(uint32_t orig) { - LDKInMemoryChannelKeys orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKInMemoryChannelKeys ret_var = InMemoryChannelKeys_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - int8_tArray __attribute__((visibility("default"))) TS_InMemoryChannelKeys_get_funding_key(uint32_t this_ptr) { LDKInMemoryChannelKeys this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -7527,6 +9501,20 @@ void __attribute__((visibility("default"))) TS_InMemoryChannelKeys_set_commitme InMemoryChannelKeys_set_commitment_seed(&this_ptr_conv, val_ref); } +uint32_t __attribute__((visibility("default"))) TS_InMemoryChannelKeys_clone(uint32_t orig) { + LDKInMemoryChannelKeys orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKInMemoryChannelKeys ret_var = InMemoryChannelKeys_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + uint32_t __attribute__((visibility("default"))) TS_InMemoryChannelKeys_new(int8_tArray funding_key, int8_tArray revocation_base_key, int8_tArray payment_key, int8_tArray delayed_payment_base_key, int8_tArray htlc_base_key, int8_tArray commitment_seed, int64_t channel_value_satoshis, uint32_t key_derivation_params) { LDKSecretKey funding_key_ref; CHECK(*((uint32_t*)funding_key) == 32); @@ -7713,20 +9701,6 @@ void __attribute__((visibility("default"))) TS_ChannelDetails_free(uint32_t thi ChannelDetails_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_ChannelDetails_clone(uint32_t orig) { - LDKChannelDetails orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKChannelDetails ret_var = ChannelDetails_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - int8_tArray __attribute__((visibility("default"))) TS_ChannelDetails_get_channel_id(uint32_t this_ptr) { LDKChannelDetails this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -7786,7 +9760,7 @@ void __attribute__((visibility("default"))) TS_ChannelDetails_set_counterparty_ LDKInitFeatures val_conv; val_conv.inner = (void*)(val & (~1)); val_conv.is_owned = (val & 1) || (val == 0); - // Warning: we need a move here but no clone is available for LDKInitFeatures + val_conv = InitFeatures_clone(&val_conv); ChannelDetails_set_counterparty_features(&this_ptr_conv, val_conv); } @@ -7865,6 +9839,20 @@ void __attribute__((visibility("default"))) TS_ChannelDetails_set_is_live(uint3 ChannelDetails_set_is_live(&this_ptr_conv, val); } +uint32_t __attribute__((visibility("default"))) TS_ChannelDetails_clone(uint32_t orig) { + LDKChannelDetails orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKChannelDetails ret_var = ChannelDetails_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + void __attribute__((visibility("default"))) TS_PaymentSendFailure_free(uint32_t this_ptr) { LDKPaymentSendFailure this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -8400,20 +10388,6 @@ void __attribute__((visibility("default"))) TS_ErrorMessage_free(uint32_t this_ ErrorMessage_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_ErrorMessage_clone(uint32_t orig) { - LDKErrorMessage orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKErrorMessage ret_var = ErrorMessage_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - int8_tArray __attribute__((visibility("default"))) TS_ErrorMessage_get_channel_id(uint32_t this_ptr) { LDKErrorMessage this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -8471,18 +10445,11 @@ uint32_t __attribute__((visibility("default"))) TS_ErrorMessage_new(int8_tArray return ret_ref; } -void __attribute__((visibility("default"))) TS_Ping_free(uint32_t this_ptr) { - LDKPing this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - Ping_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_Ping_clone(uint32_t orig) { - LDKPing orig_conv; +uint32_t __attribute__((visibility("default"))) TS_ErrorMessage_clone(uint32_t orig) { + LDKErrorMessage orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKPing ret_var = Ping_clone(&orig_conv); + LDKErrorMessage ret_var = ErrorMessage_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -8492,6 +10459,13 @@ uint32_t __attribute__((visibility("default"))) TS_Ping_clone(uint32_t orig) { return ret_ref; } +void __attribute__((visibility("default"))) TS_Ping_free(uint32_t this_ptr) { + LDKPing this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + Ping_free(this_ptr_conv); +} + int16_t __attribute__((visibility("default"))) TS_Ping_get_ponglen(uint32_t this_ptr) { LDKPing this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -8533,18 +10507,11 @@ uint32_t __attribute__((visibility("default"))) TS_Ping_new(int16_t ponglen_arg return ret_ref; } -void __attribute__((visibility("default"))) TS_Pong_free(uint32_t this_ptr) { - LDKPong this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - Pong_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_Pong_clone(uint32_t orig) { - LDKPong orig_conv; +uint32_t __attribute__((visibility("default"))) TS_Ping_clone(uint32_t orig) { + LDKPing orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKPong ret_var = Pong_clone(&orig_conv); + LDKPing ret_var = Ping_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -8554,6 +10521,13 @@ uint32_t __attribute__((visibility("default"))) TS_Pong_clone(uint32_t orig) { return ret_ref; } +void __attribute__((visibility("default"))) TS_Pong_free(uint32_t this_ptr) { + LDKPong this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + Pong_free(this_ptr_conv); +} + int16_t __attribute__((visibility("default"))) TS_Pong_get_byteslen(uint32_t this_ptr) { LDKPong this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -8580,18 +10554,11 @@ uint32_t __attribute__((visibility("default"))) TS_Pong_new(int16_t byteslen_ar return ret_ref; } -void __attribute__((visibility("default"))) TS_OpenChannel_free(uint32_t this_ptr) { - LDKOpenChannel this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - OpenChannel_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_OpenChannel_clone(uint32_t orig) { - LDKOpenChannel orig_conv; +uint32_t __attribute__((visibility("default"))) TS_Pong_clone(uint32_t orig) { + LDKPong orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKOpenChannel ret_var = OpenChannel_clone(&orig_conv); + LDKPong ret_var = Pong_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -8601,6 +10568,13 @@ uint32_t __attribute__((visibility("default"))) TS_OpenChannel_clone(uint32_t o return ret_ref; } +void __attribute__((visibility("default"))) TS_OpenChannel_free(uint32_t this_ptr) { + LDKOpenChannel this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + OpenChannel_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_OpenChannel_get_chain_hash(uint32_t this_ptr) { LDKOpenChannel this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -8903,18 +10877,11 @@ void __attribute__((visibility("default"))) TS_OpenChannel_set_channel_flags(ui OpenChannel_set_channel_flags(&this_ptr_conv, val); } -void __attribute__((visibility("default"))) TS_AcceptChannel_free(uint32_t this_ptr) { - LDKAcceptChannel this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - AcceptChannel_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_AcceptChannel_clone(uint32_t orig) { - LDKAcceptChannel orig_conv; +uint32_t __attribute__((visibility("default"))) TS_OpenChannel_clone(uint32_t orig) { + LDKOpenChannel orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKAcceptChannel ret_var = AcceptChannel_clone(&orig_conv); + LDKOpenChannel ret_var = OpenChannel_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -8924,6 +10891,13 @@ uint32_t __attribute__((visibility("default"))) TS_AcceptChannel_clone(uint32_t return ret_ref; } +void __attribute__((visibility("default"))) TS_AcceptChannel_free(uint32_t this_ptr) { + LDKAcceptChannel this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + AcceptChannel_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_AcceptChannel_get_temporary_channel_id(uint32_t this_ptr) { LDKAcceptChannel this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -9162,18 +11136,11 @@ void __attribute__((visibility("default"))) TS_AcceptChannel_set_first_per_comm AcceptChannel_set_first_per_commitment_point(&this_ptr_conv, val_ref); } -void __attribute__((visibility("default"))) TS_FundingCreated_free(uint32_t this_ptr) { - LDKFundingCreated this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - FundingCreated_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_FundingCreated_clone(uint32_t orig) { - LDKFundingCreated orig_conv; +uint32_t __attribute__((visibility("default"))) TS_AcceptChannel_clone(uint32_t orig) { + LDKAcceptChannel orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKFundingCreated ret_var = FundingCreated_clone(&orig_conv); + LDKAcceptChannel ret_var = AcceptChannel_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -9183,6 +11150,13 @@ uint32_t __attribute__((visibility("default"))) TS_FundingCreated_clone(uint32_ return ret_ref; } +void __attribute__((visibility("default"))) TS_FundingCreated_free(uint32_t this_ptr) { + LDKFundingCreated this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + FundingCreated_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_FundingCreated_get_temporary_channel_id(uint32_t this_ptr) { LDKFundingCreated this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -9275,18 +11249,11 @@ uint32_t __attribute__((visibility("default"))) TS_FundingCreated_new(int8_tArr return ret_ref; } -void __attribute__((visibility("default"))) TS_FundingSigned_free(uint32_t this_ptr) { - LDKFundingSigned this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - FundingSigned_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_FundingSigned_clone(uint32_t orig) { - LDKFundingSigned orig_conv; +uint32_t __attribute__((visibility("default"))) TS_FundingCreated_clone(uint32_t orig) { + LDKFundingCreated orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKFundingSigned ret_var = FundingSigned_clone(&orig_conv); + LDKFundingCreated ret_var = FundingCreated_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -9296,6 +11263,13 @@ uint32_t __attribute__((visibility("default"))) TS_FundingSigned_clone(uint32_t return ret_ref; } +void __attribute__((visibility("default"))) TS_FundingSigned_free(uint32_t this_ptr) { + LDKFundingSigned this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + FundingSigned_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_FundingSigned_get_channel_id(uint32_t this_ptr) { LDKFundingSigned this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -9351,18 +11325,11 @@ uint32_t __attribute__((visibility("default"))) TS_FundingSigned_new(int8_tArra return ret_ref; } -void __attribute__((visibility("default"))) TS_FundingLocked_free(uint32_t this_ptr) { - LDKFundingLocked this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - FundingLocked_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_FundingLocked_clone(uint32_t orig) { - LDKFundingLocked orig_conv; +uint32_t __attribute__((visibility("default"))) TS_FundingSigned_clone(uint32_t orig) { + LDKFundingSigned orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKFundingLocked ret_var = FundingLocked_clone(&orig_conv); + LDKFundingSigned ret_var = FundingSigned_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -9372,6 +11339,13 @@ uint32_t __attribute__((visibility("default"))) TS_FundingLocked_clone(uint32_t return ret_ref; } +void __attribute__((visibility("default"))) TS_FundingLocked_free(uint32_t this_ptr) { + LDKFundingLocked this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + FundingLocked_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_FundingLocked_get_channel_id(uint32_t this_ptr) { LDKFundingLocked this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -9427,18 +11401,11 @@ uint32_t __attribute__((visibility("default"))) TS_FundingLocked_new(int8_tArra return ret_ref; } -void __attribute__((visibility("default"))) TS_Shutdown_free(uint32_t this_ptr) { - LDKShutdown this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - Shutdown_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_Shutdown_clone(uint32_t orig) { - LDKShutdown orig_conv; +uint32_t __attribute__((visibility("default"))) TS_FundingLocked_clone(uint32_t orig) { + LDKFundingLocked orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKShutdown ret_var = Shutdown_clone(&orig_conv); + LDKFundingLocked ret_var = FundingLocked_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -9448,6 +11415,13 @@ uint32_t __attribute__((visibility("default"))) TS_Shutdown_clone(uint32_t orig return ret_ref; } +void __attribute__((visibility("default"))) TS_Shutdown_free(uint32_t this_ptr) { + LDKShutdown this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + Shutdown_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_Shutdown_get_channel_id(uint32_t this_ptr) { LDKShutdown this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -9506,18 +11480,11 @@ uint32_t __attribute__((visibility("default"))) TS_Shutdown_new(int8_tArray cha return ret_ref; } -void __attribute__((visibility("default"))) TS_ClosingSigned_free(uint32_t this_ptr) { - LDKClosingSigned this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ClosingSigned_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_ClosingSigned_clone(uint32_t orig) { - LDKClosingSigned orig_conv; +uint32_t __attribute__((visibility("default"))) TS_Shutdown_clone(uint32_t orig) { + LDKShutdown orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKClosingSigned ret_var = ClosingSigned_clone(&orig_conv); + LDKShutdown ret_var = Shutdown_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -9527,6 +11494,13 @@ uint32_t __attribute__((visibility("default"))) TS_ClosingSigned_clone(uint32_t return ret_ref; } +void __attribute__((visibility("default"))) TS_ClosingSigned_free(uint32_t this_ptr) { + LDKClosingSigned this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ClosingSigned_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_ClosingSigned_get_channel_id(uint32_t this_ptr) { LDKClosingSigned this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -9597,18 +11571,11 @@ uint32_t __attribute__((visibility("default"))) TS_ClosingSigned_new(int8_tArra return ret_ref; } -void __attribute__((visibility("default"))) TS_UpdateAddHTLC_free(uint32_t this_ptr) { - LDKUpdateAddHTLC this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - UpdateAddHTLC_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_UpdateAddHTLC_clone(uint32_t orig) { - LDKUpdateAddHTLC orig_conv; +uint32_t __attribute__((visibility("default"))) TS_ClosingSigned_clone(uint32_t orig) { + LDKClosingSigned orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKUpdateAddHTLC ret_var = UpdateAddHTLC_clone(&orig_conv); + LDKClosingSigned ret_var = ClosingSigned_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -9618,6 +11585,13 @@ uint32_t __attribute__((visibility("default"))) TS_UpdateAddHTLC_clone(uint32_t return ret_ref; } +void __attribute__((visibility("default"))) TS_UpdateAddHTLC_free(uint32_t this_ptr) { + LDKUpdateAddHTLC this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + UpdateAddHTLC_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_channel_id(uint32_t this_ptr) { LDKUpdateAddHTLC this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -9694,25 +11668,18 @@ int32_t __attribute__((visibility("default"))) TS_UpdateAddHTLC_get_cltv_expiry return ret_val; } -void __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_cltv_expiry(uint32_t this_ptr, int32_t val) { - LDKUpdateAddHTLC this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = false; - UpdateAddHTLC_set_cltv_expiry(&this_ptr_conv, val); -} - -void __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_free(uint32_t this_ptr) { - LDKUpdateFulfillHTLC this_ptr_conv; +void __attribute__((visibility("default"))) TS_UpdateAddHTLC_set_cltv_expiry(uint32_t this_ptr, int32_t val) { + LDKUpdateAddHTLC this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - UpdateFulfillHTLC_free(this_ptr_conv); + this_ptr_conv.is_owned = false; + UpdateAddHTLC_set_cltv_expiry(&this_ptr_conv, val); } -uint32_t __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_clone(uint32_t orig) { - LDKUpdateFulfillHTLC orig_conv; +uint32_t __attribute__((visibility("default"))) TS_UpdateAddHTLC_clone(uint32_t orig) { + LDKUpdateAddHTLC orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_clone(&orig_conv); + LDKUpdateAddHTLC ret_var = UpdateAddHTLC_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -9722,6 +11689,13 @@ uint32_t __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_clone(uint return ret_ref; } +void __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_free(uint32_t this_ptr) { + LDKUpdateFulfillHTLC this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + UpdateFulfillHTLC_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_get_channel_id(uint32_t this_ptr) { LDKUpdateFulfillHTLC this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -9792,18 +11766,11 @@ uint32_t __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_new(int8_t return ret_ref; } -void __attribute__((visibility("default"))) TS_UpdateFailHTLC_free(uint32_t this_ptr) { - LDKUpdateFailHTLC this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - UpdateFailHTLC_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_UpdateFailHTLC_clone(uint32_t orig) { - LDKUpdateFailHTLC orig_conv; +uint32_t __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_clone(uint32_t orig) { + LDKUpdateFulfillHTLC orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKUpdateFailHTLC ret_var = UpdateFailHTLC_clone(&orig_conv); + LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -9813,6 +11780,13 @@ uint32_t __attribute__((visibility("default"))) TS_UpdateFailHTLC_clone(uint32_ return ret_ref; } +void __attribute__((visibility("default"))) TS_UpdateFailHTLC_free(uint32_t this_ptr) { + LDKUpdateFailHTLC this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + UpdateFailHTLC_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_UpdateFailHTLC_get_channel_id(uint32_t this_ptr) { LDKUpdateFailHTLC this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -9847,18 +11821,11 @@ void __attribute__((visibility("default"))) TS_UpdateFailHTLC_set_htlc_id(uint3 UpdateFailHTLC_set_htlc_id(&this_ptr_conv, val); } -void __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_free(uint32_t this_ptr) { - LDKUpdateFailMalformedHTLC this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - UpdateFailMalformedHTLC_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_clone(uint32_t orig) { - LDKUpdateFailMalformedHTLC orig_conv; +uint32_t __attribute__((visibility("default"))) TS_UpdateFailHTLC_clone(uint32_t orig) { + LDKUpdateFailHTLC orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKUpdateFailMalformedHTLC ret_var = UpdateFailMalformedHTLC_clone(&orig_conv); + LDKUpdateFailHTLC ret_var = UpdateFailHTLC_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -9868,6 +11835,13 @@ uint32_t __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_clon return ret_ref; } +void __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_free(uint32_t this_ptr) { + LDKUpdateFailMalformedHTLC this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + UpdateFailMalformedHTLC_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_get_channel_id(uint32_t this_ptr) { LDKUpdateFailMalformedHTLC this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -9917,18 +11891,11 @@ void __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_set_fail UpdateFailMalformedHTLC_set_failure_code(&this_ptr_conv, val); } -void __attribute__((visibility("default"))) TS_CommitmentSigned_free(uint32_t this_ptr) { - LDKCommitmentSigned this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - CommitmentSigned_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_CommitmentSigned_clone(uint32_t orig) { - LDKCommitmentSigned orig_conv; +uint32_t __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_clone(uint32_t orig) { + LDKUpdateFailMalformedHTLC orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKCommitmentSigned ret_var = CommitmentSigned_clone(&orig_conv); + LDKUpdateFailMalformedHTLC ret_var = UpdateFailMalformedHTLC_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -9938,6 +11905,13 @@ uint32_t __attribute__((visibility("default"))) TS_CommitmentSigned_clone(uint3 return ret_ref; } +void __attribute__((visibility("default"))) TS_CommitmentSigned_free(uint32_t this_ptr) { + LDKCommitmentSigned this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + CommitmentSigned_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_CommitmentSigned_get_channel_id(uint32_t this_ptr) { LDKCommitmentSigned this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10028,18 +12002,11 @@ uint32_t __attribute__((visibility("default"))) TS_CommitmentSigned_new(int8_tA return ret_ref; } -void __attribute__((visibility("default"))) TS_RevokeAndACK_free(uint32_t this_ptr) { - LDKRevokeAndACK this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - RevokeAndACK_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_RevokeAndACK_clone(uint32_t orig) { - LDKRevokeAndACK orig_conv; +uint32_t __attribute__((visibility("default"))) TS_CommitmentSigned_clone(uint32_t orig) { + LDKCommitmentSigned orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKRevokeAndACK ret_var = RevokeAndACK_clone(&orig_conv); + LDKCommitmentSigned ret_var = CommitmentSigned_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10049,6 +12016,13 @@ uint32_t __attribute__((visibility("default"))) TS_RevokeAndACK_clone(uint32_t return ret_ref; } +void __attribute__((visibility("default"))) TS_RevokeAndACK_free(uint32_t this_ptr) { + LDKRevokeAndACK this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + RevokeAndACK_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_RevokeAndACK_get_channel_id(uint32_t this_ptr) { LDKRevokeAndACK this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10126,18 +12100,11 @@ uint32_t __attribute__((visibility("default"))) TS_RevokeAndACK_new(int8_tArray return ret_ref; } -void __attribute__((visibility("default"))) TS_UpdateFee_free(uint32_t this_ptr) { - LDKUpdateFee this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - UpdateFee_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_UpdateFee_clone(uint32_t orig) { - LDKUpdateFee orig_conv; +uint32_t __attribute__((visibility("default"))) TS_RevokeAndACK_clone(uint32_t orig) { + LDKRevokeAndACK orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKUpdateFee ret_var = UpdateFee_clone(&orig_conv); + LDKRevokeAndACK ret_var = RevokeAndACK_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10147,6 +12114,13 @@ uint32_t __attribute__((visibility("default"))) TS_UpdateFee_clone(uint32_t ori return ret_ref; } +void __attribute__((visibility("default"))) TS_UpdateFee_free(uint32_t this_ptr) { + LDKUpdateFee this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + UpdateFee_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_UpdateFee_get_channel_id(uint32_t this_ptr) { LDKUpdateFee this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10195,18 +12169,11 @@ uint32_t __attribute__((visibility("default"))) TS_UpdateFee_new(int8_tArray ch return ret_ref; } -void __attribute__((visibility("default"))) TS_DataLossProtect_free(uint32_t this_ptr) { - LDKDataLossProtect this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - DataLossProtect_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_DataLossProtect_clone(uint32_t orig) { - LDKDataLossProtect orig_conv; +uint32_t __attribute__((visibility("default"))) TS_UpdateFee_clone(uint32_t orig) { + LDKUpdateFee orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKDataLossProtect ret_var = DataLossProtect_clone(&orig_conv); + LDKUpdateFee ret_var = UpdateFee_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10216,6 +12183,13 @@ uint32_t __attribute__((visibility("default"))) TS_DataLossProtect_clone(uint32 return ret_ref; } +void __attribute__((visibility("default"))) TS_DataLossProtect_free(uint32_t this_ptr) { + LDKDataLossProtect this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + DataLossProtect_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_DataLossProtect_get_your_last_per_commitment_secret(uint32_t this_ptr) { LDKDataLossProtect this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10271,18 +12245,11 @@ uint32_t __attribute__((visibility("default"))) TS_DataLossProtect_new(int8_tAr return ret_ref; } -void __attribute__((visibility("default"))) TS_ChannelReestablish_free(uint32_t this_ptr) { - LDKChannelReestablish this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ChannelReestablish_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_ChannelReestablish_clone(uint32_t orig) { - LDKChannelReestablish orig_conv; +uint32_t __attribute__((visibility("default"))) TS_DataLossProtect_clone(uint32_t orig) { + LDKDataLossProtect orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKChannelReestablish ret_var = ChannelReestablish_clone(&orig_conv); + LDKDataLossProtect ret_var = DataLossProtect_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10292,6 +12259,13 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelReestablish_clone(uin return ret_ref; } +void __attribute__((visibility("default"))) TS_ChannelReestablish_free(uint32_t this_ptr) { + LDKChannelReestablish this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ChannelReestablish_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_ChannelReestablish_get_channel_id(uint32_t this_ptr) { LDKChannelReestablish this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10341,18 +12315,11 @@ void __attribute__((visibility("default"))) TS_ChannelReestablish_set_next_remo ChannelReestablish_set_next_remote_commitment_number(&this_ptr_conv, val); } -void __attribute__((visibility("default"))) TS_AnnouncementSignatures_free(uint32_t this_ptr) { - LDKAnnouncementSignatures this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - AnnouncementSignatures_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_AnnouncementSignatures_clone(uint32_t orig) { - LDKAnnouncementSignatures orig_conv; +uint32_t __attribute__((visibility("default"))) TS_ChannelReestablish_clone(uint32_t orig) { + LDKChannelReestablish orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKAnnouncementSignatures ret_var = AnnouncementSignatures_clone(&orig_conv); + LDKChannelReestablish ret_var = ChannelReestablish_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10362,6 +12329,13 @@ uint32_t __attribute__((visibility("default"))) TS_AnnouncementSignatures_clone return ret_ref; } +void __attribute__((visibility("default"))) TS_AnnouncementSignatures_free(uint32_t this_ptr) { + LDKAnnouncementSignatures this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + AnnouncementSignatures_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_AnnouncementSignatures_get_channel_id(uint32_t this_ptr) { LDKAnnouncementSignatures this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10454,6 +12428,20 @@ uint32_t __attribute__((visibility("default"))) TS_AnnouncementSignatures_new(i return ret_ref; } +uint32_t __attribute__((visibility("default"))) TS_AnnouncementSignatures_clone(uint32_t orig) { + LDKAnnouncementSignatures orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKAnnouncementSignatures ret_var = AnnouncementSignatures_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + void __attribute__((visibility("default"))) TS_NetAddress_free(uint32_t this_ptr) { if ((this_ptr & 1) != 0) return; LDKNetAddress this_ptr_conv = *(LDKNetAddress*)(((uint64_t)this_ptr) & ~1); @@ -10494,20 +12482,6 @@ void __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_free(ui UnsignedNodeAnnouncement_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_clone(uint32_t orig) { - LDKUnsignedNodeAnnouncement orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKUnsignedNodeAnnouncement ret_var = UnsignedNodeAnnouncement_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - uint32_t __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_get_features(uint32_t this_ptr) { LDKUnsignedNodeAnnouncement this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10529,7 +12503,7 @@ void __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_fea LDKNodeFeatures val_conv; val_conv.inner = (void*)(val & (~1)); val_conv.is_owned = (val & 1) || (val == 0); - // Warning: we need a move here but no clone is available for LDKNodeFeatures + val_conv = NodeFeatures_clone(&val_conv); UnsignedNodeAnnouncement_set_features(&this_ptr_conv, val_conv); } @@ -10625,18 +12599,11 @@ void __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_set_add UnsignedNodeAnnouncement_set_addresses(&this_ptr_conv, val_constr); } -void __attribute__((visibility("default"))) TS_NodeAnnouncement_free(uint32_t this_ptr) { - LDKNodeAnnouncement this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - NodeAnnouncement_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_NodeAnnouncement_clone(uint32_t orig) { - LDKNodeAnnouncement orig_conv; +uint32_t __attribute__((visibility("default"))) TS_UnsignedNodeAnnouncement_clone(uint32_t orig) { + LDKUnsignedNodeAnnouncement orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKNodeAnnouncement ret_var = NodeAnnouncement_clone(&orig_conv); + LDKUnsignedNodeAnnouncement ret_var = UnsignedNodeAnnouncement_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10646,6 +12613,13 @@ uint32_t __attribute__((visibility("default"))) TS_NodeAnnouncement_clone(uint3 return ret_ref; } +void __attribute__((visibility("default"))) TS_NodeAnnouncement_free(uint32_t this_ptr) { + LDKNodeAnnouncement this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + NodeAnnouncement_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_NodeAnnouncement_get_signature(uint32_t this_ptr) { LDKNodeAnnouncement this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10708,18 +12682,11 @@ uint32_t __attribute__((visibility("default"))) TS_NodeAnnouncement_new(int8_tA return ret_ref; } -void __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_free(uint32_t this_ptr) { - LDKUnsignedChannelAnnouncement this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - UnsignedChannelAnnouncement_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_clone(uint32_t orig) { - LDKUnsignedChannelAnnouncement orig_conv; +uint32_t __attribute__((visibility("default"))) TS_NodeAnnouncement_clone(uint32_t orig) { + LDKNodeAnnouncement orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKUnsignedChannelAnnouncement ret_var = UnsignedChannelAnnouncement_clone(&orig_conv); + LDKNodeAnnouncement ret_var = NodeAnnouncement_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10729,6 +12696,13 @@ uint32_t __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_ return ret_ref; } +void __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_free(uint32_t this_ptr) { + LDKUnsignedChannelAnnouncement this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + UnsignedChannelAnnouncement_free(this_ptr_conv); +} + uint32_t __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_get_features(uint32_t this_ptr) { LDKUnsignedChannelAnnouncement this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -10750,7 +12724,7 @@ void __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_ LDKChannelFeatures val_conv; val_conv.inner = (void*)(val & (~1)); val_conv.is_owned = (val & 1) || (val == 0); - // Warning: we need a move here but no clone is available for LDKChannelFeatures + val_conv = ChannelFeatures_clone(&val_conv); UnsignedChannelAnnouncement_set_features(&this_ptr_conv, val_conv); } @@ -10860,22 +12834,15 @@ void __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_set_ this_ptr_conv.is_owned = false; LDKPublicKey val_ref; CHECK(*((uint32_t*)val) == 33); - memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33); - UnsignedChannelAnnouncement_set_bitcoin_key_2(&this_ptr_conv, val_ref); -} - -void __attribute__((visibility("default"))) TS_ChannelAnnouncement_free(uint32_t this_ptr) { - LDKChannelAnnouncement this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ChannelAnnouncement_free(this_ptr_conv); + memcpy(val_ref.compressed_form, (uint8_t*)(val + 4), 33); + UnsignedChannelAnnouncement_set_bitcoin_key_2(&this_ptr_conv, val_ref); } -uint32_t __attribute__((visibility("default"))) TS_ChannelAnnouncement_clone(uint32_t orig) { - LDKChannelAnnouncement orig_conv; +uint32_t __attribute__((visibility("default"))) TS_UnsignedChannelAnnouncement_clone(uint32_t orig) { + LDKUnsignedChannelAnnouncement orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKChannelAnnouncement ret_var = ChannelAnnouncement_clone(&orig_conv); + LDKUnsignedChannelAnnouncement ret_var = UnsignedChannelAnnouncement_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -10885,6 +12852,13 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelAnnouncement_clone(ui return ret_ref; } +void __attribute__((visibility("default"))) TS_ChannelAnnouncement_free(uint32_t this_ptr) { + LDKChannelAnnouncement this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ChannelAnnouncement_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_ChannelAnnouncement_get_node_signature_1(uint32_t this_ptr) { LDKChannelAnnouncement this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11013,18 +12987,11 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelAnnouncement_new(int8 return ret_ref; } -void __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_free(uint32_t this_ptr) { - LDKUnsignedChannelUpdate this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - UnsignedChannelUpdate_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_clone(uint32_t orig) { - LDKUnsignedChannelUpdate orig_conv; +uint32_t __attribute__((visibility("default"))) TS_ChannelAnnouncement_clone(uint32_t orig) { + LDKChannelAnnouncement orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKUnsignedChannelUpdate ret_var = UnsignedChannelUpdate_clone(&orig_conv); + LDKChannelAnnouncement ret_var = ChannelAnnouncement_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -11034,6 +13001,13 @@ uint32_t __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_clone( return ret_ref; } +void __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_free(uint32_t this_ptr) { + LDKUnsignedChannelUpdate this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + UnsignedChannelUpdate_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_get_chain_hash(uint32_t this_ptr) { LDKUnsignedChannelUpdate this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11158,18 +13132,11 @@ void __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_set_fee_pr UnsignedChannelUpdate_set_fee_proportional_millionths(&this_ptr_conv, val); } -void __attribute__((visibility("default"))) TS_ChannelUpdate_free(uint32_t this_ptr) { - LDKChannelUpdate this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ChannelUpdate_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_ChannelUpdate_clone(uint32_t orig) { - LDKChannelUpdate orig_conv; +uint32_t __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_clone(uint32_t orig) { + LDKUnsignedChannelUpdate orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKChannelUpdate ret_var = ChannelUpdate_clone(&orig_conv); + LDKUnsignedChannelUpdate ret_var = UnsignedChannelUpdate_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -11179,6 +13146,13 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelUpdate_clone(uint32_t return ret_ref; } +void __attribute__((visibility("default"))) TS_ChannelUpdate_free(uint32_t this_ptr) { + LDKChannelUpdate this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ChannelUpdate_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_ChannelUpdate_get_signature(uint32_t this_ptr) { LDKChannelUpdate this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11241,18 +13215,11 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelUpdate_new(int8_tArra return ret_ref; } -void __attribute__((visibility("default"))) TS_QueryChannelRange_free(uint32_t this_ptr) { - LDKQueryChannelRange this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - QueryChannelRange_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_QueryChannelRange_clone(uint32_t orig) { - LDKQueryChannelRange orig_conv; +uint32_t __attribute__((visibility("default"))) TS_ChannelUpdate_clone(uint32_t orig) { + LDKChannelUpdate orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKQueryChannelRange ret_var = QueryChannelRange_clone(&orig_conv); + LDKChannelUpdate ret_var = ChannelUpdate_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -11262,6 +13229,13 @@ uint32_t __attribute__((visibility("default"))) TS_QueryChannelRange_clone(uint return ret_ref; } +void __attribute__((visibility("default"))) TS_QueryChannelRange_free(uint32_t this_ptr) { + LDKQueryChannelRange this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + QueryChannelRange_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_QueryChannelRange_get_chain_hash(uint32_t this_ptr) { LDKQueryChannelRange this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11325,18 +13299,11 @@ uint32_t __attribute__((visibility("default"))) TS_QueryChannelRange_new(int8_t return ret_ref; } -void __attribute__((visibility("default"))) TS_ReplyChannelRange_free(uint32_t this_ptr) { - LDKReplyChannelRange this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ReplyChannelRange_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_ReplyChannelRange_clone(uint32_t orig) { - LDKReplyChannelRange orig_conv; +uint32_t __attribute__((visibility("default"))) TS_QueryChannelRange_clone(uint32_t orig) { + LDKQueryChannelRange orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKReplyChannelRange ret_var = ReplyChannelRange_clone(&orig_conv); + LDKQueryChannelRange ret_var = QueryChannelRange_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -11346,6 +13313,13 @@ uint32_t __attribute__((visibility("default"))) TS_ReplyChannelRange_clone(uint return ret_ref; } +void __attribute__((visibility("default"))) TS_ReplyChannelRange_free(uint32_t this_ptr) { + LDKReplyChannelRange this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ReplyChannelRange_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_ReplyChannelRange_get_chain_hash(uint32_t this_ptr) { LDKReplyChannelRange this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11395,19 +13369,19 @@ void __attribute__((visibility("default"))) TS_ReplyChannelRange_set_number_of_ ReplyChannelRange_set_number_of_blocks(&this_ptr_conv, val); } -jboolean __attribute__((visibility("default"))) TS_ReplyChannelRange_get_full_information(uint32_t this_ptr) { +jboolean __attribute__((visibility("default"))) TS_ReplyChannelRange_get_sync_complete(uint32_t this_ptr) { LDKReplyChannelRange this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); this_ptr_conv.is_owned = false; - jboolean ret_val = ReplyChannelRange_get_full_information(&this_ptr_conv); + jboolean ret_val = ReplyChannelRange_get_sync_complete(&this_ptr_conv); return ret_val; } -void __attribute__((visibility("default"))) TS_ReplyChannelRange_set_full_information(uint32_t this_ptr, jboolean val) { +void __attribute__((visibility("default"))) TS_ReplyChannelRange_set_sync_complete(uint32_t this_ptr, jboolean val) { LDKReplyChannelRange this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); this_ptr_conv.is_owned = false; - ReplyChannelRange_set_full_information(&this_ptr_conv, val); + ReplyChannelRange_set_sync_complete(&this_ptr_conv, val); } void __attribute__((visibility("default"))) TS_ReplyChannelRange_set_short_channel_ids(uint32_t this_ptr, int64_tArray val) { @@ -11428,7 +13402,7 @@ void __attribute__((visibility("default"))) TS_ReplyChannelRange_set_short_chan ReplyChannelRange_set_short_channel_ids(&this_ptr_conv, val_constr); } -uint32_t __attribute__((visibility("default"))) TS_ReplyChannelRange_new(int8_tArray chain_hash_arg, int32_t first_blocknum_arg, int32_t number_of_blocks_arg, jboolean full_information_arg, int64_tArray short_channel_ids_arg) { +uint32_t __attribute__((visibility("default"))) TS_ReplyChannelRange_new(int8_tArray chain_hash_arg, int32_t first_blocknum_arg, int32_t number_of_blocks_arg, jboolean sync_complete_arg, int64_tArray short_channel_ids_arg) { LDKThirtyTwoBytes chain_hash_arg_ref; CHECK(*((uint32_t*)chain_hash_arg) == 32); memcpy(chain_hash_arg_ref.data, (uint8_t*)(chain_hash_arg + 4), 32); @@ -11443,7 +13417,7 @@ uint32_t __attribute__((visibility("default"))) TS_ReplyChannelRange_new(int8_t int64_t arr_conv_8 = short_channel_ids_arg_vals[i]; short_channel_ids_arg_constr.data[i] = arr_conv_8; } - LDKReplyChannelRange ret_var = ReplyChannelRange_new(chain_hash_arg_ref, first_blocknum_arg, number_of_blocks_arg, full_information_arg, short_channel_ids_arg_constr); + LDKReplyChannelRange ret_var = ReplyChannelRange_new(chain_hash_arg_ref, first_blocknum_arg, number_of_blocks_arg, sync_complete_arg, short_channel_ids_arg_constr); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -11453,18 +13427,11 @@ uint32_t __attribute__((visibility("default"))) TS_ReplyChannelRange_new(int8_t return ret_ref; } -void __attribute__((visibility("default"))) TS_QueryShortChannelIds_free(uint32_t this_ptr) { - LDKQueryShortChannelIds this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - QueryShortChannelIds_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_QueryShortChannelIds_clone(uint32_t orig) { - LDKQueryShortChannelIds orig_conv; +uint32_t __attribute__((visibility("default"))) TS_ReplyChannelRange_clone(uint32_t orig) { + LDKReplyChannelRange orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKQueryShortChannelIds ret_var = QueryShortChannelIds_clone(&orig_conv); + LDKReplyChannelRange ret_var = ReplyChannelRange_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -11474,6 +13441,13 @@ uint32_t __attribute__((visibility("default"))) TS_QueryShortChannelIds_clone(u return ret_ref; } +void __attribute__((visibility("default"))) TS_QueryShortChannelIds_free(uint32_t this_ptr) { + LDKQueryShortChannelIds this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + QueryShortChannelIds_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_QueryShortChannelIds_get_chain_hash(uint32_t this_ptr) { LDKQueryShortChannelIds this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11536,18 +13510,11 @@ uint32_t __attribute__((visibility("default"))) TS_QueryShortChannelIds_new(int return ret_ref; } -void __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_free(uint32_t this_ptr) { - LDKReplyShortChannelIdsEnd this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ReplyShortChannelIdsEnd_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_clone(uint32_t orig) { - LDKReplyShortChannelIdsEnd orig_conv; +uint32_t __attribute__((visibility("default"))) TS_QueryShortChannelIds_clone(uint32_t orig) { + LDKQueryShortChannelIds orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKReplyShortChannelIdsEnd ret_var = ReplyShortChannelIdsEnd_clone(&orig_conv); + LDKQueryShortChannelIds ret_var = QueryShortChannelIds_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -11557,6 +13524,13 @@ uint32_t __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_clon return ret_ref; } +void __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_free(uint32_t this_ptr) { + LDKReplyShortChannelIdsEnd this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ReplyShortChannelIdsEnd_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_get_chain_hash(uint32_t this_ptr) { LDKReplyShortChannelIdsEnd this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11605,18 +13579,11 @@ uint32_t __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_new( return ret_ref; } -void __attribute__((visibility("default"))) TS_GossipTimestampFilter_free(uint32_t this_ptr) { - LDKGossipTimestampFilter this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - GossipTimestampFilter_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_GossipTimestampFilter_clone(uint32_t orig) { - LDKGossipTimestampFilter orig_conv; +uint32_t __attribute__((visibility("default"))) TS_ReplyShortChannelIdsEnd_clone(uint32_t orig) { + LDKReplyShortChannelIdsEnd orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKGossipTimestampFilter ret_var = GossipTimestampFilter_clone(&orig_conv); + LDKReplyShortChannelIdsEnd ret_var = ReplyShortChannelIdsEnd_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -11626,6 +13593,13 @@ uint32_t __attribute__((visibility("default"))) TS_GossipTimestampFilter_clone( return ret_ref; } +void __attribute__((visibility("default"))) TS_GossipTimestampFilter_free(uint32_t this_ptr) { + LDKGossipTimestampFilter this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + GossipTimestampFilter_free(this_ptr_conv); +} + int8_tArray __attribute__((visibility("default"))) TS_GossipTimestampFilter_get_chain_hash(uint32_t this_ptr) { LDKGossipTimestampFilter this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11689,6 +13663,20 @@ uint32_t __attribute__((visibility("default"))) TS_GossipTimestampFilter_new(in return ret_ref; } +uint32_t __attribute__((visibility("default"))) TS_GossipTimestampFilter_clone(uint32_t orig) { + LDKGossipTimestampFilter orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKGossipTimestampFilter ret_var = GossipTimestampFilter_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + void __attribute__((visibility("default"))) TS_ErrorAction_free(uint32_t this_ptr) { if ((this_ptr & 1) != 0) return; LDKErrorAction this_ptr_conv = *(LDKErrorAction*)(((uint64_t)this_ptr) & ~1); @@ -11711,20 +13699,6 @@ void __attribute__((visibility("default"))) TS_LightningError_free(uint32_t thi LightningError_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_LightningError_clone(uint32_t orig) { - LDKLightningError orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKLightningError ret_var = LightningError_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - jstring __attribute__((visibility("default"))) TS_LightningError_get_err(uint32_t this_ptr) { LDKLightningError this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -11781,18 +13755,11 @@ uint32_t __attribute__((visibility("default"))) TS_LightningError_new(int8_tArr return ret_ref; } -void __attribute__((visibility("default"))) TS_CommitmentUpdate_free(uint32_t this_ptr) { - LDKCommitmentUpdate this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - CommitmentUpdate_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_CommitmentUpdate_clone(uint32_t orig) { - LDKCommitmentUpdate orig_conv; +uint32_t __attribute__((visibility("default"))) TS_LightningError_clone(uint32_t orig) { + LDKLightningError orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKCommitmentUpdate ret_var = CommitmentUpdate_clone(&orig_conv); + LDKLightningError ret_var = LightningError_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -11802,6 +13769,13 @@ uint32_t __attribute__((visibility("default"))) TS_CommitmentUpdate_clone(uint3 return ret_ref; } +void __attribute__((visibility("default"))) TS_CommitmentUpdate_free(uint32_t this_ptr) { + LDKCommitmentUpdate this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + CommitmentUpdate_free(this_ptr_conv); +} + void __attribute__((visibility("default"))) TS_CommitmentUpdate_set_update_add_htlcs(uint32_t this_ptr, uint32_tArray val) { LDKCommitmentUpdate this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -12019,6 +13993,20 @@ uint32_t __attribute__((visibility("default"))) TS_CommitmentUpdate_new(uint32_ return ret_ref; } +uint32_t __attribute__((visibility("default"))) TS_CommitmentUpdate_clone(uint32_t orig) { + LDKCommitmentUpdate orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKCommitmentUpdate ret_var = CommitmentUpdate_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + void __attribute__((visibility("default"))) TS_HTLCFailChannelUpdate_free(uint32_t this_ptr) { if ((this_ptr & 1) != 0) return; LDKHTLCFailChannelUpdate this_ptr_conv = *(LDKHTLCFailChannelUpdate*)(((uint64_t)this_ptr) & ~1); @@ -12063,14 +14051,9 @@ uint32_t __attribute__((visibility("default"))) TS_AcceptChannel_read(int8_tArr LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKAcceptChannel ret_var = AcceptChannel_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_AcceptChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AcceptChannelDecodeErrorZ), "LDKCResult_AcceptChannelDecodeErrorZ"); + *ret_conv = AcceptChannel_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_AnnouncementSignatures_write(uint32_t obj) { @@ -12088,14 +14071,9 @@ uint32_t __attribute__((visibility("default"))) TS_AnnouncementSignatures_read( LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKAnnouncementSignatures ret_var = AnnouncementSignatures_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_AnnouncementSignaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_AnnouncementSignaturesDecodeErrorZ), "LDKCResult_AnnouncementSignaturesDecodeErrorZ"); + *ret_conv = AnnouncementSignatures_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_ChannelReestablish_write(uint32_t obj) { @@ -12133,14 +14111,9 @@ uint32_t __attribute__((visibility("default"))) TS_ClosingSigned_read(int8_tArr LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKClosingSigned ret_var = ClosingSigned_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_ClosingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ClosingSignedDecodeErrorZ), "LDKCResult_ClosingSignedDecodeErrorZ"); + *ret_conv = ClosingSigned_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_CommitmentSigned_write(uint32_t obj) { @@ -12158,14 +14131,9 @@ uint32_t __attribute__((visibility("default"))) TS_CommitmentSigned_read(int8_t LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKCommitmentSigned ret_var = CommitmentSigned_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_CommitmentSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentSignedDecodeErrorZ), "LDKCResult_CommitmentSignedDecodeErrorZ"); + *ret_conv = CommitmentSigned_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_FundingCreated_write(uint32_t obj) { @@ -12183,14 +14151,9 @@ uint32_t __attribute__((visibility("default"))) TS_FundingCreated_read(int8_tAr LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKFundingCreated ret_var = FundingCreated_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_FundingCreatedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingCreatedDecodeErrorZ), "LDKCResult_FundingCreatedDecodeErrorZ"); + *ret_conv = FundingCreated_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_FundingSigned_write(uint32_t obj) { @@ -12208,14 +14171,9 @@ uint32_t __attribute__((visibility("default"))) TS_FundingSigned_read(int8_tArr LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKFundingSigned ret_var = FundingSigned_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_FundingSignedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingSignedDecodeErrorZ), "LDKCResult_FundingSignedDecodeErrorZ"); + *ret_conv = FundingSigned_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_FundingLocked_write(uint32_t obj) { @@ -12233,14 +14191,9 @@ uint32_t __attribute__((visibility("default"))) TS_FundingLocked_read(int8_tArr LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKFundingLocked ret_var = FundingLocked_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_FundingLockedDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_FundingLockedDecodeErrorZ), "LDKCResult_FundingLockedDecodeErrorZ"); + *ret_conv = FundingLocked_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_Init_write(uint32_t obj) { @@ -12278,14 +14231,9 @@ uint32_t __attribute__((visibility("default"))) TS_OpenChannel_read(int8_tArray LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKOpenChannel ret_var = OpenChannel_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_OpenChannelDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_OpenChannelDecodeErrorZ), "LDKCResult_OpenChannelDecodeErrorZ"); + *ret_conv = OpenChannel_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_RevokeAndACK_write(uint32_t obj) { @@ -12303,14 +14251,9 @@ uint32_t __attribute__((visibility("default"))) TS_RevokeAndACK_read(int8_tArra LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKRevokeAndACK ret_var = RevokeAndACK_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_RevokeAndACKDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RevokeAndACKDecodeErrorZ), "LDKCResult_RevokeAndACKDecodeErrorZ"); + *ret_conv = RevokeAndACK_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_Shutdown_write(uint32_t obj) { @@ -12328,14 +14271,9 @@ uint32_t __attribute__((visibility("default"))) TS_Shutdown_read(int8_tArray se LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKShutdown ret_var = Shutdown_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_ShutdownDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ShutdownDecodeErrorZ), "LDKCResult_ShutdownDecodeErrorZ"); + *ret_conv = Shutdown_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_UpdateFailHTLC_write(uint32_t obj) { @@ -12353,14 +14291,9 @@ uint32_t __attribute__((visibility("default"))) TS_UpdateFailHTLC_read(int8_tAr LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKUpdateFailHTLC ret_var = UpdateFailHTLC_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_UpdateFailHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailHTLCDecodeErrorZ), "LDKCResult_UpdateFailHTLCDecodeErrorZ"); + *ret_conv = UpdateFailHTLC_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_write(uint32_t obj) { @@ -12378,14 +14311,9 @@ uint32_t __attribute__((visibility("default"))) TS_UpdateFailMalformedHTLC_read LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKUpdateFailMalformedHTLC ret_var = UpdateFailMalformedHTLC_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ), "LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ"); + *ret_conv = UpdateFailMalformedHTLC_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_UpdateFee_write(uint32_t obj) { @@ -12403,14 +14331,9 @@ uint32_t __attribute__((visibility("default"))) TS_UpdateFee_read(int8_tArray s LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKUpdateFee ret_var = UpdateFee_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_UpdateFeeDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFeeDecodeErrorZ), "LDKCResult_UpdateFeeDecodeErrorZ"); + *ret_conv = UpdateFee_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_write(uint32_t obj) { @@ -12428,14 +14351,9 @@ uint32_t __attribute__((visibility("default"))) TS_UpdateFulfillHTLC_read(int8_ LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKUpdateFulfillHTLC ret_var = UpdateFulfillHTLC_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_UpdateFulfillHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateFulfillHTLCDecodeErrorZ), "LDKCResult_UpdateFulfillHTLCDecodeErrorZ"); + *ret_conv = UpdateFulfillHTLC_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_UpdateAddHTLC_write(uint32_t obj) { @@ -12453,14 +14371,9 @@ uint32_t __attribute__((visibility("default"))) TS_UpdateAddHTLC_read(int8_tArr LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKUpdateAddHTLC ret_var = UpdateAddHTLC_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_UpdateAddHTLCDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_UpdateAddHTLCDecodeErrorZ), "LDKCResult_UpdateAddHTLCDecodeErrorZ"); + *ret_conv = UpdateAddHTLC_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_Ping_write(uint32_t obj) { @@ -12538,14 +14451,9 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelAnnouncement_read(int LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKChannelAnnouncement ret_var = ChannelAnnouncement_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_ChannelAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelAnnouncementDecodeErrorZ), "LDKCResult_ChannelAnnouncementDecodeErrorZ"); + *ret_conv = ChannelAnnouncement_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_UnsignedChannelUpdate_write(uint32_t obj) { @@ -12583,14 +14491,9 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelUpdate_read(int8_tArr LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKChannelUpdate ret_var = ChannelUpdate_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_ChannelUpdateDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelUpdateDecodeErrorZ), "LDKCResult_ChannelUpdateDecodeErrorZ"); + *ret_conv = ChannelUpdate_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_ErrorMessage_write(uint32_t obj) { @@ -12648,14 +14551,9 @@ uint32_t __attribute__((visibility("default"))) TS_NodeAnnouncement_read(int8_t LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKNodeAnnouncement ret_var = NodeAnnouncement_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_NodeAnnouncementDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeAnnouncementDecodeErrorZ), "LDKCResult_NodeAnnouncementDecodeErrorZ"); + *ret_conv = NodeAnnouncement_read(ser_ref); + return (long)ret_conv; } uint32_t __attribute__((visibility("default"))) TS_QueryShortChannelIds_read(int8_tArray ser) { @@ -12831,20 +14729,6 @@ void __attribute__((visibility("default"))) TS_PeerHandleError_free(uint32_t th PeerHandleError_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_PeerHandleError_clone(uint32_t orig) { - LDKPeerHandleError orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKPeerHandleError ret_var = PeerHandleError_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - jboolean __attribute__((visibility("default"))) TS_PeerHandleError_get_no_connection_possible(uint32_t this_ptr) { LDKPeerHandleError this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -12871,6 +14755,20 @@ uint32_t __attribute__((visibility("default"))) TS_PeerHandleError_new(jboolean return ret_ref; } +uint32_t __attribute__((visibility("default"))) TS_PeerHandleError_clone(uint32_t orig) { + LDKPeerHandleError orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKPeerHandleError ret_var = PeerHandleError_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + void __attribute__((visibility("default"))) TS_PeerManager_free(uint32_t this_ptr) { LDKPeerManager this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -13013,7 +14911,7 @@ uint32_t __attribute__((visibility("default"))) TS_derive_private_key(int8_tArr CHECK(*((uint32_t*)base_secret) == 32); memcpy(base_secret_arr, (uint8_t*)(base_secret + 4), 32); unsigned char (*base_secret_ref)[32] = &base_secret_arr; - LDKCResult_SecretKeySecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeySecpErrorZ), "LDKCResult_SecretKeySecpErrorZ"); + LDKCResult_SecretKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeyErrorZ), "LDKCResult_SecretKeyErrorZ"); *ret_conv = derive_private_key(per_commitment_point_ref, base_secret_ref); return (long)ret_conv; } @@ -13025,7 +14923,7 @@ uint32_t __attribute__((visibility("default"))) TS_derive_public_key(int8_tArra LDKPublicKey base_point_ref; CHECK(*((uint32_t*)base_point) == 33); memcpy(base_point_ref.compressed_form, (uint8_t*)(base_point + 4), 33); - LDKCResult_PublicKeySecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeySecpErrorZ), "LDKCResult_PublicKeySecpErrorZ"); + LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ"); *ret_conv = derive_public_key(per_commitment_point_ref, base_point_ref); return (long)ret_conv; } @@ -13039,7 +14937,7 @@ uint32_t __attribute__((visibility("default"))) TS_derive_private_revocation_ke CHECK(*((uint32_t*)countersignatory_revocation_base_secret) == 32); memcpy(countersignatory_revocation_base_secret_arr, (uint8_t*)(countersignatory_revocation_base_secret + 4), 32); unsigned char (*countersignatory_revocation_base_secret_ref)[32] = &countersignatory_revocation_base_secret_arr; - LDKCResult_SecretKeySecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeySecpErrorZ), "LDKCResult_SecretKeySecpErrorZ"); + LDKCResult_SecretKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SecretKeyErrorZ), "LDKCResult_SecretKeyErrorZ"); *ret_conv = derive_private_revocation_key(per_commitment_secret_ref, countersignatory_revocation_base_secret_ref); return (long)ret_conv; } @@ -13051,7 +14949,7 @@ uint32_t __attribute__((visibility("default"))) TS_derive_public_revocation_key LDKPublicKey countersignatory_revocation_base_point_ref; CHECK(*((uint32_t*)countersignatory_revocation_base_point) == 33); memcpy(countersignatory_revocation_base_point_ref.compressed_form, (uint8_t*)(countersignatory_revocation_base_point + 4), 33); - LDKCResult_PublicKeySecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeySecpErrorZ), "LDKCResult_PublicKeySecpErrorZ"); + LDKCResult_PublicKeyErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_PublicKeyErrorZ), "LDKCResult_PublicKeyErrorZ"); *ret_conv = derive_public_revocation_key(per_commitment_point_ref, countersignatory_revocation_base_point_ref); return (long)ret_conv; } @@ -13063,20 +14961,6 @@ void __attribute__((visibility("default"))) TS_TxCreationKeys_free(uint32_t thi TxCreationKeys_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_TxCreationKeys_clone(uint32_t orig) { - LDKTxCreationKeys orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKTxCreationKeys ret_var = TxCreationKeys_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - int8_tArray __attribute__((visibility("default"))) TS_TxCreationKeys_get_per_commitment_point(uint32_t this_ptr) { LDKTxCreationKeys this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -13198,6 +15082,20 @@ uint32_t __attribute__((visibility("default"))) TS_TxCreationKeys_new(int8_tArr return ret_ref; } +uint32_t __attribute__((visibility("default"))) TS_TxCreationKeys_clone(uint32_t orig) { + LDKTxCreationKeys orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKTxCreationKeys ret_var = TxCreationKeys_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + int8_tArray __attribute__((visibility("default"))) TS_TxCreationKeys_write(uint32_t obj) { LDKTxCreationKeys obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -13213,14 +15111,9 @@ uint32_t __attribute__((visibility("default"))) TS_TxCreationKeys_read(int8_tAr LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKTxCreationKeys ret_var = TxCreationKeys_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_TxCreationKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysDecodeErrorZ), "LDKCResult_TxCreationKeysDecodeErrorZ"); + *ret_conv = TxCreationKeys_read(ser_ref); + return (long)ret_conv; } void __attribute__((visibility("default"))) TS_ChannelPublicKeys_free(uint32_t this_ptr) { @@ -13230,20 +15123,6 @@ void __attribute__((visibility("default"))) TS_ChannelPublicKeys_free(uint32_t ChannelPublicKeys_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_ChannelPublicKeys_clone(uint32_t orig) { - LDKChannelPublicKeys orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKChannelPublicKeys ret_var = ChannelPublicKeys_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - int8_tArray __attribute__((visibility("default"))) TS_ChannelPublicKeys_get_funding_pubkey(uint32_t this_ptr) { LDKChannelPublicKeys this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -13365,6 +15244,20 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelPublicKeys_new(int8_t return ret_ref; } +uint32_t __attribute__((visibility("default"))) TS_ChannelPublicKeys_clone(uint32_t orig) { + LDKChannelPublicKeys orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKChannelPublicKeys ret_var = ChannelPublicKeys_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + int8_tArray __attribute__((visibility("default"))) TS_ChannelPublicKeys_write(uint32_t obj) { LDKChannelPublicKeys obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -13380,14 +15273,9 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelPublicKeys_read(int8_ LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKChannelPublicKeys ret_var = ChannelPublicKeys_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_ChannelPublicKeysDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelPublicKeysDecodeErrorZ), "LDKCResult_ChannelPublicKeysDecodeErrorZ"); + *ret_conv = ChannelPublicKeys_read(ser_ref); + return (long)ret_conv; } uint32_t __attribute__((visibility("default"))) TS_TxCreationKeys_derive_new(int8_tArray per_commitment_point, int8_tArray broadcaster_delayed_payment_base, int8_tArray broadcaster_htlc_base, int8_tArray countersignatory_revocation_base, int8_tArray countersignatory_htlc_base) { @@ -13406,7 +15294,7 @@ uint32_t __attribute__((visibility("default"))) TS_TxCreationKeys_derive_new(in LDKPublicKey countersignatory_htlc_base_ref; CHECK(*((uint32_t*)countersignatory_htlc_base) == 33); memcpy(countersignatory_htlc_base_ref.compressed_form, (uint8_t*)(countersignatory_htlc_base + 4), 33); - LDKCResult_TxCreationKeysSecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysSecpErrorZ), "LDKCResult_TxCreationKeysSecpErrorZ"); + LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ"); *ret_conv = TxCreationKeys_derive_new(per_commitment_point_ref, broadcaster_delayed_payment_base_ref, broadcaster_htlc_base_ref, countersignatory_revocation_base_ref, countersignatory_htlc_base_ref); return (long)ret_conv; } @@ -13421,7 +15309,7 @@ uint32_t __attribute__((visibility("default"))) TS_TxCreationKeys_from_channel_ LDKChannelPublicKeys countersignatory_keys_conv; countersignatory_keys_conv.inner = (void*)(countersignatory_keys & (~1)); countersignatory_keys_conv.is_owned = false; - LDKCResult_TxCreationKeysSecpErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysSecpErrorZ), "LDKCResult_TxCreationKeysSecpErrorZ"); + LDKCResult_TxCreationKeysErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_TxCreationKeysErrorZ), "LDKCResult_TxCreationKeysErrorZ"); *ret_conv = TxCreationKeys_from_channel_static_keys(per_commitment_point_ref, &broadcaster_keys_conv, &countersignatory_keys_conv); return (long)ret_conv; } @@ -13447,20 +15335,6 @@ void __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_free(uint HTLCOutputInCommitment_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_clone(uint32_t orig) { - LDKHTLCOutputInCommitment orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - jboolean __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_get_offered(uint32_t this_ptr) { LDKHTLCOutputInCommitment this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -13525,6 +15399,20 @@ void __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_set_payme HTLCOutputInCommitment_set_payment_hash(&this_ptr_conv, val_ref); } +uint32_t __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_clone(uint32_t orig) { + LDKHTLCOutputInCommitment orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + int8_tArray __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_write(uint32_t obj) { LDKHTLCOutputInCommitment obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -13540,14 +15428,9 @@ uint32_t __attribute__((visibility("default"))) TS_HTLCOutputInCommitment_read( LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKHTLCOutputInCommitment ret_var = HTLCOutputInCommitment_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_HTLCOutputInCommitmentDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ), "LDKCResult_HTLCOutputInCommitmentDecodeErrorZ"); + *ret_conv = HTLCOutputInCommitment_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_get_htlc_redeemscript(uint32_t htlc, uint32_t keys) { @@ -13603,21 +15486,7 @@ void __attribute__((visibility("default"))) TS_ChannelTransactionParameters_fre LDKChannelTransactionParameters this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ChannelTransactionParameters_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_ChannelTransactionParameters_clone(uint32_t orig) { - LDKChannelTransactionParameters orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + ChannelTransactionParameters_free(this_ptr_conv); } uint32_t __attribute__((visibility("default"))) TS_ChannelTransactionParameters_get_holder_pubkeys(uint32_t this_ptr) { @@ -13748,18 +15617,11 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelTransactionParameters return ret_ref; } -void __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_free(uint32_t this_ptr) { - LDKCounterpartyChannelTransactionParameters this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - CounterpartyChannelTransactionParameters_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_clone(uint32_t orig) { - LDKCounterpartyChannelTransactionParameters orig_conv; +uint32_t __attribute__((visibility("default"))) TS_ChannelTransactionParameters_clone(uint32_t orig) { + LDKChannelTransactionParameters orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_clone(&orig_conv); + LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -13769,6 +15631,13 @@ uint32_t __attribute__((visibility("default"))) TS_CounterpartyChannelTransacti return ret_ref; } +void __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_free(uint32_t this_ptr) { + LDKCounterpartyChannelTransactionParameters this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + CounterpartyChannelTransactionParameters_free(this_ptr_conv); +} + uint32_t __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_get_pubkeys(uint32_t this_ptr) { LDKCounterpartyChannelTransactionParameters this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -13824,6 +15693,20 @@ uint32_t __attribute__((visibility("default"))) TS_CounterpartyChannelTransacti return ret_ref; } +uint32_t __attribute__((visibility("default"))) TS_CounterpartyChannelTransactionParameters_clone(uint32_t orig) { + LDKCounterpartyChannelTransactionParameters orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + jboolean __attribute__((visibility("default"))) TS_ChannelTransactionParameters_is_populated(uint32_t this_arg) { LDKChannelTransactionParameters this_arg_conv; this_arg_conv.inner = (void*)(this_arg & (~1)); @@ -13875,14 +15758,9 @@ uint32_t __attribute__((visibility("default"))) TS_CounterpartyChannelTransacti LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKCounterpartyChannelTransactionParameters ret_var = CounterpartyChannelTransactionParameters_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ), "LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ"); + *ret_conv = CounterpartyChannelTransactionParameters_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_ChannelTransactionParameters_write(uint32_t obj) { @@ -13900,14 +15778,9 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelTransactionParameters LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKChannelTransactionParameters ret_var = ChannelTransactionParameters_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_ChannelTransactionParametersDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelTransactionParametersDecodeErrorZ), "LDKCResult_ChannelTransactionParametersDecodeErrorZ"); + *ret_conv = ChannelTransactionParameters_read(ser_ref); + return (long)ret_conv; } void __attribute__((visibility("default"))) TS_DirectedChannelTransactionParameters_free(uint32_t this_ptr) { @@ -13982,20 +15855,6 @@ void __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_free HolderCommitmentTransaction_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_clone(uint32_t orig) { - LDKHolderCommitmentTransaction orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - int8_tArray __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_get_counterparty_sig(uint32_t this_ptr) { LDKHolderCommitmentTransaction this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -14036,6 +15895,20 @@ void __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_set_ HolderCommitmentTransaction_set_counterparty_htlc_sigs(&this_ptr_conv, val_constr); } +uint32_t __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_clone(uint32_t orig) { + LDKHolderCommitmentTransaction orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + int8_tArray __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_write(uint32_t obj) { LDKHolderCommitmentTransaction obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -14051,14 +15924,9 @@ uint32_t __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_ LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKHolderCommitmentTransaction ret_var = HolderCommitmentTransaction_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_HolderCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_HolderCommitmentTransactionDecodeErrorZ), "LDKCResult_HolderCommitmentTransactionDecodeErrorZ"); + *ret_conv = HolderCommitmentTransaction_read(ser_ref); + return (long)ret_conv; } uint32_t __attribute__((visibility("default"))) TS_HolderCommitmentTransaction_new(uint32_t commitment_tx, int8_tArray counterparty_sig, ptrArray counterparty_htlc_sigs, int8_tArray holder_funding_key, int8_tArray counterparty_funding_key) { @@ -14106,20 +15974,6 @@ void __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_free( BuiltCommitmentTransaction_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_clone(uint32_t orig) { - LDKBuiltCommitmentTransaction orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - int8_tArray __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_get_transaction(uint32_t this_ptr) { LDKBuiltCommitmentTransaction this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -14181,6 +16035,20 @@ uint32_t __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_n return ret_ref; } +uint32_t __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_clone(uint32_t orig) { + LDKBuiltCommitmentTransaction orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + int8_tArray __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_write(uint32_t obj) { LDKBuiltCommitmentTransaction obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -14196,14 +16064,9 @@ uint32_t __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_r LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKBuiltCommitmentTransaction ret_var = BuiltCommitmentTransaction_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_BuiltCommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ), "LDKCResult_BuiltCommitmentTransactionDecodeErrorZ"); + *ret_conv = BuiltCommitmentTransaction_read(ser_ref); + return (long)ret_conv; } int8_tArray __attribute__((visibility("default"))) TS_BuiltCommitmentTransaction_get_sighash_all(uint32_t this_arg, int8_tArray funding_redeemscript, int64_t channel_value_satoshis) { @@ -14270,14 +16133,9 @@ uint32_t __attribute__((visibility("default"))) TS_CommitmentTransaction_read(i LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKCommitmentTransaction ret_var = CommitmentTransaction_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_CommitmentTransactionDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CommitmentTransactionDecodeErrorZ), "LDKCResult_CommitmentTransactionDecodeErrorZ"); + *ret_conv = CommitmentTransaction_read(ser_ref); + return (long)ret_conv; } int64_t __attribute__((visibility("default"))) TS_CommitmentTransaction_commitment_number(uint32_t this_arg) { @@ -14404,36 +16262,204 @@ uint32_t __attribute__((visibility("default"))) TS_TrustedCommitmentTransaction return (long)ret_conv; } -int64_t __attribute__((visibility("default"))) TS_get_commitment_transaction_number_obscure_factor(int8_tArray broadcaster_payment_basepoint, int8_tArray countersignatory_payment_basepoint, jboolean outbound_from_broadcaster) { - LDKPublicKey broadcaster_payment_basepoint_ref; - CHECK(*((uint32_t*)broadcaster_payment_basepoint) == 33); - memcpy(broadcaster_payment_basepoint_ref.compressed_form, (uint8_t*)(broadcaster_payment_basepoint + 4), 33); - LDKPublicKey countersignatory_payment_basepoint_ref; - CHECK(*((uint32_t*)countersignatory_payment_basepoint) == 33); - memcpy(countersignatory_payment_basepoint_ref.compressed_form, (uint8_t*)(countersignatory_payment_basepoint + 4), 33); - int64_t ret_val = get_commitment_transaction_number_obscure_factor(broadcaster_payment_basepoint_ref, countersignatory_payment_basepoint_ref, outbound_from_broadcaster); - return ret_val; +int64_t __attribute__((visibility("default"))) TS_get_commitment_transaction_number_obscure_factor(int8_tArray broadcaster_payment_basepoint, int8_tArray countersignatory_payment_basepoint, jboolean outbound_from_broadcaster) { + LDKPublicKey broadcaster_payment_basepoint_ref; + CHECK(*((uint32_t*)broadcaster_payment_basepoint) == 33); + memcpy(broadcaster_payment_basepoint_ref.compressed_form, (uint8_t*)(broadcaster_payment_basepoint + 4), 33); + LDKPublicKey countersignatory_payment_basepoint_ref; + CHECK(*((uint32_t*)countersignatory_payment_basepoint) == 33); + memcpy(countersignatory_payment_basepoint_ref.compressed_form, (uint8_t*)(countersignatory_payment_basepoint + 4), 33); + int64_t ret_val = get_commitment_transaction_number_obscure_factor(broadcaster_payment_basepoint_ref, countersignatory_payment_basepoint_ref, outbound_from_broadcaster); + return ret_val; +} + +uint32_t __attribute__((visibility("default"))) TS_InitFeatures_clone(uint32_t orig) { + LDKInitFeatures orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKInitFeatures ret_var = InitFeatures_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +uint32_t __attribute__((visibility("default"))) TS_NodeFeatures_clone(uint32_t orig) { + LDKNodeFeatures orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKNodeFeatures ret_var = NodeFeatures_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +uint32_t __attribute__((visibility("default"))) TS_ChannelFeatures_clone(uint32_t orig) { + LDKChannelFeatures orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKChannelFeatures ret_var = ChannelFeatures_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +void __attribute__((visibility("default"))) TS_InitFeatures_free(uint32_t this_ptr) { + LDKInitFeatures this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + InitFeatures_free(this_ptr_conv); +} + +void __attribute__((visibility("default"))) TS_NodeFeatures_free(uint32_t this_ptr) { + LDKNodeFeatures this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + NodeFeatures_free(this_ptr_conv); +} + +void __attribute__((visibility("default"))) TS_ChannelFeatures_free(uint32_t this_ptr) { + LDKChannelFeatures this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + ChannelFeatures_free(this_ptr_conv); +} + +uint32_t __attribute__((visibility("default"))) TS_InitFeatures_empty() { + LDKInitFeatures ret_var = InitFeatures_empty(); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +uint32_t __attribute__((visibility("default"))) TS_InitFeatures_known() { + LDKInitFeatures ret_var = InitFeatures_known(); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +uint32_t __attribute__((visibility("default"))) TS_NodeFeatures_empty() { + LDKNodeFeatures ret_var = NodeFeatures_empty(); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +uint32_t __attribute__((visibility("default"))) TS_NodeFeatures_known() { + LDKNodeFeatures ret_var = NodeFeatures_known(); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +uint32_t __attribute__((visibility("default"))) TS_ChannelFeatures_empty() { + LDKChannelFeatures ret_var = ChannelFeatures_empty(); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +uint32_t __attribute__((visibility("default"))) TS_ChannelFeatures_known() { + LDKChannelFeatures ret_var = ChannelFeatures_known(); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +int8_tArray __attribute__((visibility("default"))) TS_InitFeatures_write(uint32_t obj) { + LDKInitFeatures obj_conv; + obj_conv.inner = (void*)(obj & (~1)); + obj_conv.is_owned = false; + LDKCVec_u8Z arg_var = InitFeatures_write(&obj_conv); + int8_tArray arg_arr = init_arr(arg_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(arg_arr + 4), arg_var.data, arg_var.datalen); + CVec_u8Z_free(arg_var); + return arg_arr; +} + +int8_tArray __attribute__((visibility("default"))) TS_NodeFeatures_write(uint32_t obj) { + LDKNodeFeatures obj_conv; + obj_conv.inner = (void*)(obj & (~1)); + obj_conv.is_owned = false; + LDKCVec_u8Z arg_var = NodeFeatures_write(&obj_conv); + int8_tArray arg_arr = init_arr(arg_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(arg_arr + 4), arg_var.data, arg_var.datalen); + CVec_u8Z_free(arg_var); + return arg_arr; } -void __attribute__((visibility("default"))) TS_InitFeatures_free(uint32_t this_ptr) { - LDKInitFeatures this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - InitFeatures_free(this_ptr_conv); +int8_tArray __attribute__((visibility("default"))) TS_ChannelFeatures_write(uint32_t obj) { + LDKChannelFeatures obj_conv; + obj_conv.inner = (void*)(obj & (~1)); + obj_conv.is_owned = false; + LDKCVec_u8Z arg_var = ChannelFeatures_write(&obj_conv); + int8_tArray arg_arr = init_arr(arg_var.datalen, sizeof(uint8_t), "Native int8_tArray Bytes"); + memcpy((uint8_t*)(arg_arr + 4), arg_var.data, arg_var.datalen); + CVec_u8Z_free(arg_var); + return arg_arr; } -void __attribute__((visibility("default"))) TS_NodeFeatures_free(uint32_t this_ptr) { - LDKNodeFeatures this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - NodeFeatures_free(this_ptr_conv); +uint32_t __attribute__((visibility("default"))) TS_InitFeatures_read(int8_tArray ser) { + LDKu8slice ser_ref; + ser_ref.datalen = *((uint32_t*)ser); + ser_ref.data = (int8_t*)(ser + 4); + LDKCResult_InitFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_InitFeaturesDecodeErrorZ), "LDKCResult_InitFeaturesDecodeErrorZ"); + *ret_conv = InitFeatures_read(ser_ref); + return (long)ret_conv; } -void __attribute__((visibility("default"))) TS_ChannelFeatures_free(uint32_t this_ptr) { - LDKChannelFeatures this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - ChannelFeatures_free(this_ptr_conv); +uint32_t __attribute__((visibility("default"))) TS_NodeFeatures_read(int8_tArray ser) { + LDKu8slice ser_ref; + ser_ref.datalen = *((uint32_t*)ser); + ser_ref.data = (int8_t*)(ser + 4); + LDKCResult_NodeFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NodeFeaturesDecodeErrorZ), "LDKCResult_NodeFeaturesDecodeErrorZ"); + *ret_conv = NodeFeatures_read(ser_ref); + return (long)ret_conv; +} + +uint32_t __attribute__((visibility("default"))) TS_ChannelFeatures_read(int8_tArray ser) { + LDKu8slice ser_ref; + ser_ref.datalen = *((uint32_t*)ser); + ser_ref.data = (int8_t*)(ser + 4); + LDKCResult_ChannelFeaturesDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelFeaturesDecodeErrorZ), "LDKCResult_ChannelFeaturesDecodeErrorZ"); + *ret_conv = ChannelFeatures_read(ser_ref); + return (long)ret_conv; } void __attribute__((visibility("default"))) TS_RouteHop_free(uint32_t this_ptr) { @@ -14443,20 +16469,6 @@ void __attribute__((visibility("default"))) TS_RouteHop_free(uint32_t this_ptr) RouteHop_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_RouteHop_clone(uint32_t orig) { - LDKRouteHop orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKRouteHop ret_var = RouteHop_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - int8_tArray __attribute__((visibility("default"))) TS_RouteHop_get_pubkey(uint32_t this_ptr) { LDKRouteHop this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -14497,7 +16509,7 @@ void __attribute__((visibility("default"))) TS_RouteHop_set_node_features(uint3 LDKNodeFeatures val_conv; val_conv.inner = (void*)(val & (~1)); val_conv.is_owned = (val & 1) || (val == 0); - // Warning: we need a move here but no clone is available for LDKNodeFeatures + val_conv = NodeFeatures_clone(&val_conv); RouteHop_set_node_features(&this_ptr_conv, val_conv); } @@ -14537,7 +16549,7 @@ void __attribute__((visibility("default"))) TS_RouteHop_set_channel_features(ui LDKChannelFeatures val_conv; val_conv.inner = (void*)(val & (~1)); val_conv.is_owned = (val & 1) || (val == 0); - // Warning: we need a move here but no clone is available for LDKChannelFeatures + val_conv = ChannelFeatures_clone(&val_conv); RouteHop_set_channel_features(&this_ptr_conv, val_conv); } @@ -14578,11 +16590,11 @@ uint32_t __attribute__((visibility("default"))) TS_RouteHop_new(int8_tArray pub LDKNodeFeatures node_features_arg_conv; node_features_arg_conv.inner = (void*)(node_features_arg & (~1)); node_features_arg_conv.is_owned = (node_features_arg & 1) || (node_features_arg == 0); - // Warning: we need a move here but no clone is available for LDKNodeFeatures + node_features_arg_conv = NodeFeatures_clone(&node_features_arg_conv); LDKChannelFeatures channel_features_arg_conv; channel_features_arg_conv.inner = (void*)(channel_features_arg & (~1)); channel_features_arg_conv.is_owned = (channel_features_arg & 1) || (channel_features_arg == 0); - // Warning: we need a move here but no clone is available for LDKChannelFeatures + channel_features_arg_conv = ChannelFeatures_clone(&channel_features_arg_conv); LDKRouteHop ret_var = RouteHop_new(pubkey_arg_ref, node_features_arg_conv, short_channel_id_arg, channel_features_arg_conv, fee_msat_arg, cltv_expiry_delta_arg); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. @@ -14593,18 +16605,11 @@ uint32_t __attribute__((visibility("default"))) TS_RouteHop_new(int8_tArray pub return ret_ref; } -void __attribute__((visibility("default"))) TS_Route_free(uint32_t this_ptr) { - LDKRoute this_ptr_conv; - this_ptr_conv.inner = (void*)(this_ptr & (~1)); - this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); - Route_free(this_ptr_conv); -} - -uint32_t __attribute__((visibility("default"))) TS_Route_clone(uint32_t orig) { - LDKRoute orig_conv; +uint32_t __attribute__((visibility("default"))) TS_RouteHop_clone(uint32_t orig) { + LDKRouteHop orig_conv; orig_conv.inner = (void*)(orig & (~1)); orig_conv.is_owned = false; - LDKRoute ret_var = Route_clone(&orig_conv); + LDKRouteHop ret_var = RouteHop_clone(&orig_conv); CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. long ret_ref = (long)ret_var.inner; @@ -14614,6 +16619,13 @@ uint32_t __attribute__((visibility("default"))) TS_Route_clone(uint32_t orig) { return ret_ref; } +void __attribute__((visibility("default"))) TS_Route_free(uint32_t this_ptr) { + LDKRoute this_ptr_conv; + this_ptr_conv.inner = (void*)(this_ptr & (~1)); + this_ptr_conv.is_owned = (this_ptr & 1) || (this_ptr == 0); + Route_free(this_ptr_conv); +} + void __attribute__((visibility("default"))) TS_Route_set_paths(uint32_t this_ptr, ptrArray val) { LDKRoute this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -14684,6 +16696,20 @@ uint32_t __attribute__((visibility("default"))) TS_Route_new(ptrArray paths_arg return ret_ref; } +uint32_t __attribute__((visibility("default"))) TS_Route_clone(uint32_t orig) { + LDKRoute orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKRoute ret_var = Route_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + int8_tArray __attribute__((visibility("default"))) TS_Route_write(uint32_t obj) { LDKRoute obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -14711,20 +16737,6 @@ void __attribute__((visibility("default"))) TS_RouteHint_free(uint32_t this_ptr RouteHint_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_RouteHint_clone(uint32_t orig) { - LDKRouteHint orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKRouteHint ret_var = RouteHint_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - int8_tArray __attribute__((visibility("default"))) TS_RouteHint_get_src_node_id(uint32_t this_ptr) { LDKRouteHint this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -14832,6 +16844,20 @@ uint32_t __attribute__((visibility("default"))) TS_RouteHint_new(int8_tArray sr return ret_ref; } +uint32_t __attribute__((visibility("default"))) TS_RouteHint_clone(uint32_t orig) { + LDKRouteHint orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKRouteHint ret_var = RouteHint_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + uint32_t __attribute__((visibility("default"))) TS_get_route(int8_tArray our_node_id, uint32_t network, int8_tArray target, uint32_tArray first_hops, uint32_tArray last_hops, int64_t final_value_msat, int32_t final_cltv, uint32_t logger) { LDKPublicKey our_node_id_ref; CHECK(*((uint32_t*)our_node_id) == 33); @@ -14985,20 +17011,6 @@ void __attribute__((visibility("default"))) TS_DirectionalChannelInfo_free(uint DirectionalChannelInfo_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_DirectionalChannelInfo_clone(uint32_t orig) { - LDKDirectionalChannelInfo orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - int32_t __attribute__((visibility("default"))) TS_DirectionalChannelInfo_get_last_update(uint32_t this_ptr) { LDKDirectionalChannelInfo this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -15109,6 +17121,20 @@ void __attribute__((visibility("default"))) TS_DirectionalChannelInfo_set_last_ DirectionalChannelInfo_set_last_update_message(&this_ptr_conv, val_conv); } +uint32_t __attribute__((visibility("default"))) TS_DirectionalChannelInfo_clone(uint32_t orig) { + LDKDirectionalChannelInfo orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + int8_tArray __attribute__((visibility("default"))) TS_DirectionalChannelInfo_write(uint32_t obj) { LDKDirectionalChannelInfo obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -15124,14 +17150,9 @@ uint32_t __attribute__((visibility("default"))) TS_DirectionalChannelInfo_read( LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKDirectionalChannelInfo ret_var = DirectionalChannelInfo_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_DirectionalChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_DirectionalChannelInfoDecodeErrorZ), "LDKCResult_DirectionalChannelInfoDecodeErrorZ"); + *ret_conv = DirectionalChannelInfo_read(ser_ref); + return (long)ret_conv; } void __attribute__((visibility("default"))) TS_ChannelInfo_free(uint32_t this_ptr) { @@ -15162,7 +17183,7 @@ void __attribute__((visibility("default"))) TS_ChannelInfo_set_features(uint32_ LDKChannelFeatures val_conv; val_conv.inner = (void*)(val & (~1)); val_conv.is_owned = (val & 1) || (val == 0); - // Warning: we need a move here but no clone is available for LDKChannelFeatures + val_conv = ChannelFeatures_clone(&val_conv); ChannelInfo_set_features(&this_ptr_conv, val_conv); } @@ -15294,14 +17315,9 @@ uint32_t __attribute__((visibility("default"))) TS_ChannelInfo_read(int8_tArray LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); ser_ref.data = (int8_t*)(ser + 4); - LDKChannelInfo ret_var = ChannelInfo_read(ser_ref); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; + LDKCResult_ChannelInfoDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ChannelInfoDecodeErrorZ), "LDKCResult_ChannelInfoDecodeErrorZ"); + *ret_conv = ChannelInfo_read(ser_ref); + return (long)ret_conv; } void __attribute__((visibility("default"))) TS_RoutingFees_free(uint32_t this_ptr) { @@ -15311,20 +17327,6 @@ void __attribute__((visibility("default"))) TS_RoutingFees_free(uint32_t this_p RoutingFees_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_RoutingFees_clone(uint32_t orig) { - LDKRoutingFees orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKRoutingFees ret_var = RoutingFees_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - int32_t __attribute__((visibility("default"))) TS_RoutingFees_get_base_msat(uint32_t this_ptr) { LDKRoutingFees this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -15366,6 +17368,20 @@ uint32_t __attribute__((visibility("default"))) TS_RoutingFees_new(int32_t base return ret_ref; } +uint32_t __attribute__((visibility("default"))) TS_RoutingFees_clone(uint32_t orig) { + LDKRoutingFees orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKRoutingFees ret_var = RoutingFees_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + uint32_t __attribute__((visibility("default"))) TS_RoutingFees_read(int8_tArray ser) { LDKu8slice ser_ref; ser_ref.datalen = *((uint32_t*)ser); @@ -15393,20 +17409,6 @@ void __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_free(uint32 NodeAnnouncementInfo_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_clone(uint32_t orig) { - LDKNodeAnnouncementInfo orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKNodeAnnouncementInfo ret_var = NodeAnnouncementInfo_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - uint32_t __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_get_features(uint32_t this_ptr) { LDKNodeAnnouncementInfo this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -15428,7 +17430,7 @@ void __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_set_feature LDKNodeFeatures val_conv; val_conv.inner = (void*)(val & (~1)); val_conv.is_owned = (val & 1) || (val == 0); - // Warning: we need a move here but no clone is available for LDKNodeFeatures + val_conv = NodeFeatures_clone(&val_conv); NodeAnnouncementInfo_set_features(&this_ptr_conv, val_conv); } @@ -15534,7 +17536,7 @@ uint32_t __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_new(uin LDKNodeFeatures features_arg_conv; features_arg_conv.inner = (void*)(features_arg & (~1)); features_arg_conv.is_owned = (features_arg & 1) || (features_arg == 0); - // Warning: we need a move here but no clone is available for LDKNodeFeatures + features_arg_conv = NodeFeatures_clone(&features_arg_conv); LDKThreeBytes rgb_arg_ref; CHECK(*((uint32_t*)rgb_arg) == 3); memcpy(rgb_arg_ref.data, (uint8_t*)(rgb_arg + 4), 3); @@ -15568,6 +17570,20 @@ uint32_t __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_new(uin return ret_ref; } +uint32_t __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_clone(uint32_t orig) { + LDKNodeAnnouncementInfo orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKNodeAnnouncementInfo ret_var = NodeAnnouncementInfo_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + int8_tArray __attribute__((visibility("default"))) TS_NodeAnnouncementInfo_write(uint32_t obj) { LDKNodeAnnouncementInfo obj_conv; obj_conv.inner = (void*)(obj & (~1)); @@ -15595,20 +17611,6 @@ void __attribute__((visibility("default"))) TS_NodeInfo_free(uint32_t this_ptr) NodeInfo_free(this_ptr_conv); } -uint32_t __attribute__((visibility("default"))) TS_NodeInfo_clone(uint32_t orig) { - LDKNodeInfo orig_conv; - orig_conv.inner = (void*)(orig & (~1)); - orig_conv.is_owned = false; - LDKNodeInfo ret_var = NodeInfo_clone(&orig_conv); - CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. - CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. - long ret_ref = (long)ret_var.inner; - if (ret_var.is_owned) { - ret_ref |= 1; - } - return ret_ref; -} - void __attribute__((visibility("default"))) TS_NodeInfo_set_channels(uint32_t this_ptr, int64_tArray val) { LDKNodeInfo this_ptr_conv; this_ptr_conv.inner = (void*)(this_ptr & (~1)); @@ -15707,6 +17709,20 @@ uint32_t __attribute__((visibility("default"))) TS_NodeInfo_new(int64_tArray ch return ret_ref; } +uint32_t __attribute__((visibility("default"))) TS_NodeInfo_clone(uint32_t orig) { + LDKNodeInfo orig_conv; + orig_conv.inner = (void*)(orig & (~1)); + orig_conv.is_owned = false; + LDKNodeInfo ret_var = NodeInfo_clone(&orig_conv); + CHECK((((long)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((long)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + long ret_ref = (long)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + int8_tArray __attribute__((visibility("default"))) TS_NodeInfo_write(uint32_t obj) { LDKNodeInfo obj_conv; obj_conv.inner = (void*)(obj & (~1)); diff --git a/ts/bindings.ts b/ts/bindings.ts index d5c6475b..64cc2939 100644 --- a/ts/bindings.ts +++ b/ts/bindings.ts @@ -152,36 +152,78 @@ public static native long new_empty_slice_vec(); */ public static native long LDKCVec_u8Z_new(number[] elems); - public static native long LDKC2Tuple_u64u64Z_new(number a, number b); - public static native number LDKC2Tuple_u64u64Z_get_a(long ptr); - public static native number LDKC2Tuple_u64u64Z_get_b(long ptr); - public static class LDKSpendableOutputDescriptor { - private LDKSpendableOutputDescriptor() {} - export class StaticOutput extends LDKSpendableOutputDescriptor { - public number outpoint; - public number output; - StaticOutput(number outpoint, number output) { this.outpoint = outpoint; this.output = output; } - } - export class DynamicOutputP2WSH extends LDKSpendableOutputDescriptor { - public number outpoint; - public Uint8Array per_commitment_point; - public number to_self_delay; - public number output; - public number key_derivation_params; - public Uint8Array revocation_pubkey; - DynamicOutputP2WSH(number outpoint, Uint8Array per_commitment_point, number to_self_delay, number output, number key_derivation_params, Uint8Array revocation_pubkey) { this.outpoint = outpoint; this.per_commitment_point = per_commitment_point; this.to_self_delay = to_self_delay; this.output = output; this.key_derivation_params = key_derivation_params; this.revocation_pubkey = revocation_pubkey; } - } - export class StaticOutputCounterpartyPayment extends LDKSpendableOutputDescriptor { - public number outpoint; - public number output; - public number key_derivation_params; - StaticOutputCounterpartyPayment(number outpoint, number output, number key_derivation_params) { this.outpoint = outpoint; this.output = output; this.key_derivation_params = key_derivation_params; } - } - static native void init(); - } - static { LDKSpendableOutputDescriptor.init(); } - public static native LDKSpendableOutputDescriptor LDKSpendableOutputDescriptor_ref_from_ptr(long ptr); - public static native long LDKCVec_SpendableOutputDescriptorZ_new(number[] elems); + public static native boolean LDKCResult_SecretKeyErrorZ_result_ok(long arg); + public static native Uint8Array LDKCResult_SecretKeyErrorZ_get_ok(long arg); + public static native LDKSecp256k1Error LDKCResult_SecretKeyErrorZ_get_err(long arg); + public static native boolean LDKCResult_PublicKeyErrorZ_result_ok(long arg); + public static native Uint8Array LDKCResult_PublicKeyErrorZ_get_ok(long arg); + public static native LDKSecp256k1Error LDKCResult_PublicKeyErrorZ_get_err(long arg); + public static native boolean LDKCResult_TxCreationKeysDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_TxCreationKeysDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_TxCreationKeysDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ChannelPublicKeysDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_ChannelPublicKeysDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_ChannelPublicKeysDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_TxCreationKeysErrorZ_result_ok(long arg); + public static native number LDKCResult_TxCreationKeysErrorZ_get_ok(long arg); + public static native LDKSecp256k1Error LDKCResult_TxCreationKeysErrorZ_get_err(long arg); + public static native boolean LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ChannelTransactionParametersDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_ChannelTransactionParametersDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_ChannelTransactionParametersDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_HolderCommitmentTransactionDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_HolderCommitmentTransactionDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_HolderCommitmentTransactionDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_CommitmentTransactionDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_CommitmentTransactionDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_CommitmentTransactionDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_TrustedCommitmentTransactionNoneZ_result_ok(long arg); + public static native number LDKCResult_TrustedCommitmentTransactionNoneZ_get_ok(long arg); + public static native void LDKCResult_TrustedCommitmentTransactionNoneZ_get_err(long arg); + public static native boolean LDKCResult_CVec_SignatureZNoneZ_result_ok(long arg); + public static native Uint8Array[] LDKCResult_CVec_SignatureZNoneZ_get_ok(long arg); + public static native void LDKCResult_CVec_SignatureZNoneZ_get_err(long arg); + public static native boolean LDKCResult_CVec_u8ZPeerHandleErrorZ_result_ok(long arg); + public static native Uint8Array LDKCResult_CVec_u8ZPeerHandleErrorZ_get_ok(long arg); + public static native number LDKCResult_CVec_u8ZPeerHandleErrorZ_get_err(long arg); + public static native boolean LDKCResult_NonePeerHandleErrorZ_result_ok(long arg); + public static native void LDKCResult_NonePeerHandleErrorZ_get_ok(long arg); + public static native number LDKCResult_NonePeerHandleErrorZ_get_err(long arg); + public static native boolean LDKCResult_boolPeerHandleErrorZ_result_ok(long arg); + public static native boolean LDKCResult_boolPeerHandleErrorZ_get_ok(long arg); + public static native number LDKCResult_boolPeerHandleErrorZ_get_err(long arg); + public static native boolean LDKCResult_InitFeaturesDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_InitFeaturesDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_InitFeaturesDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_NodeFeaturesDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_NodeFeaturesDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_NodeFeaturesDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ChannelFeaturesDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_ChannelFeaturesDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_ChannelFeaturesDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ChannelConfigDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_ChannelConfigDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_ChannelConfigDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_boolLightningErrorZ_result_ok(long arg); + public static native boolean LDKCResult_boolLightningErrorZ_get_ok(long arg); + public static native number LDKCResult_boolLightningErrorZ_get_err(long arg); + public static native long LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(number a, number b, number c); + public static native number LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(long ptr); + public static native number LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(long ptr); + public static native number LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(long ptr); + public static native long LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_new(number[] elems); + public static native long LDKCVec_NodeAnnouncementZ_new(number[] elems); + public static native boolean LDKCResult_NoneLightningErrorZ_result_ok(long arg); + public static native void LDKCResult_NoneLightningErrorZ_get_ok(long arg); + public static native number LDKCResult_NoneLightningErrorZ_get_err(long arg); public static class LDKErrorAction { private LDKErrorAction() {} export class DisconnectPeer extends LDKErrorAction { @@ -313,6 +355,92 @@ public static native long new_empty_slice_vec(); static { LDKMessageSendEvent.init(); } public static native LDKMessageSendEvent LDKMessageSendEvent_ref_from_ptr(long ptr); public static native long LDKCVec_MessageSendEventZ_new(number[] elems); + public static native boolean LDKCResult_DirectionalChannelInfoDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_DirectionalChannelInfoDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_DirectionalChannelInfoDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ChannelInfoDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_ChannelInfoDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_ChannelInfoDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_RoutingFeesDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_RoutingFeesDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_RoutingFeesDecodeErrorZ_get_err(long arg); + public static class LDKNetAddress { + private LDKNetAddress() {} + export class IPv4 extends LDKNetAddress { + public Uint8Array addr; + public number port; + IPv4(Uint8Array addr, number port) { this.addr = addr; this.port = port; } + } + export class IPv6 extends LDKNetAddress { + public Uint8Array addr; + public number port; + IPv6(Uint8Array addr, number port) { this.addr = addr; this.port = port; } + } + export class OnionV2 extends LDKNetAddress { + public Uint8Array addr; + public number port; + OnionV2(Uint8Array addr, number port) { this.addr = addr; this.port = port; } + } + export class OnionV3 extends LDKNetAddress { + public Uint8Array ed25519_pubkey; + public number checksum; + public number version; + public number port; + OnionV3(Uint8Array ed25519_pubkey, number checksum, number version, number port) { this.ed25519_pubkey = ed25519_pubkey; this.checksum = checksum; this.version = version; this.port = port; } + } + static native void init(); + } + static { LDKNetAddress.init(); } + public static native LDKNetAddress LDKNetAddress_ref_from_ptr(long ptr); + public static native long LDKCVec_NetAddressZ_new(number[] elems); + public static native boolean LDKCResult_NodeAnnouncementInfoDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_err(long arg); + public static native long LDKCVec_u64Z_new(number[] elems); + public static native boolean LDKCResult_NodeInfoDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_NodeInfoDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_NodeInfoDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_NetworkGraphDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_NetworkGraphDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_NetworkGraphDecodeErrorZ_get_err(long arg); + public static native long LDKC2Tuple_usizeTransactionZ_new(number a, Uint8Array b); + public static native number LDKC2Tuple_usizeTransactionZ_get_a(long ptr); + public static native Uint8Array LDKC2Tuple_usizeTransactionZ_get_b(long ptr); + public static native long LDKCVec_C2Tuple_usizeTransactionZZ_new(number[] elems); + public static native boolean LDKCResult_NoneChannelMonitorUpdateErrZ_result_ok(long arg); + public static native void LDKCResult_NoneChannelMonitorUpdateErrZ_get_ok(long arg); + public static native LDKChannelMonitorUpdateErr LDKCResult_NoneChannelMonitorUpdateErrZ_get_err(long arg); + public static native long LDKCVec_MonitorEventZ_new(number[] elems); + public static native long LDKC2Tuple_u64u64Z_new(number a, number b); + public static native number LDKC2Tuple_u64u64Z_get_a(long ptr); + public static native number LDKC2Tuple_u64u64Z_get_b(long ptr); + public static class LDKSpendableOutputDescriptor { + private LDKSpendableOutputDescriptor() {} + export class StaticOutput extends LDKSpendableOutputDescriptor { + public number outpoint; + public number output; + StaticOutput(number outpoint, number output) { this.outpoint = outpoint; this.output = output; } + } + export class DynamicOutputP2WSH extends LDKSpendableOutputDescriptor { + public number outpoint; + public Uint8Array per_commitment_point; + public number to_self_delay; + public number output; + public number key_derivation_params; + public Uint8Array revocation_pubkey; + DynamicOutputP2WSH(number outpoint, Uint8Array per_commitment_point, number to_self_delay, number output, number key_derivation_params, Uint8Array revocation_pubkey) { this.outpoint = outpoint; this.per_commitment_point = per_commitment_point; this.to_self_delay = to_self_delay; this.output = output; this.key_derivation_params = key_derivation_params; this.revocation_pubkey = revocation_pubkey; } + } + export class StaticOutputCounterpartyPayment extends LDKSpendableOutputDescriptor { + public number outpoint; + public number output; + public number key_derivation_params; + StaticOutputCounterpartyPayment(number outpoint, number output, number key_derivation_params) { this.outpoint = outpoint; this.output = output; this.key_derivation_params = key_derivation_params; } + } + static native void init(); + } + static { LDKSpendableOutputDescriptor.init(); } + public static native LDKSpendableOutputDescriptor LDKSpendableOutputDescriptor_ref_from_ptr(long ptr); + public static native long LDKCVec_SpendableOutputDescriptorZ_new(number[] elems); public static class LDKEvent { private LDKEvent() {} export class FundingGenerationReady extends LDKEvent { @@ -355,17 +483,15 @@ public static native long new_empty_slice_vec(); static { LDKEvent.init(); } public static native LDKEvent LDKEvent_ref_from_ptr(long ptr); public static native long LDKCVec_EventZ_new(number[] elems); - public static native long LDKC2Tuple_usizeTransactionZ_new(number a, Uint8Array b); - public static native number LDKC2Tuple_usizeTransactionZ_get_a(long ptr); - public static native Uint8Array LDKC2Tuple_usizeTransactionZ_get_b(long ptr); - public static native long LDKCVec_C2Tuple_usizeTransactionZZ_new(number[] elems); - public static native boolean LDKCResult_NoneChannelMonitorUpdateErrZ_result_ok(long arg); - public static native void LDKCResult_NoneChannelMonitorUpdateErrZ_get_ok(long arg); - public static native LDKChannelMonitorUpdateErr LDKCResult_NoneChannelMonitorUpdateErrZ_get_err(long arg); - public static native long LDKCVec_MonitorEventZ_new(number[] elems); + public static native boolean LDKCResult_OutPointDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_OutPointDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_OutPointDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_ChannelMonitorUpdateDecodeErrorZ_result_ok(long arg); public static native number LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(long arg); public static native number LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_HTLCUpdateDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_HTLCUpdateDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_HTLCUpdateDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_NoneMonitorUpdateErrorZ_result_ok(long arg); public static native void LDKCResult_NoneMonitorUpdateErrorZ_get_ok(long arg); public static native number LDKCResult_NoneMonitorUpdateErrorZ_get_err(long arg); @@ -517,15 +643,6 @@ public static native long new_empty_slice_vec(); public static native boolean LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_result_ok(long arg); public static native number LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(long arg); public static native number LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(long arg); - public static native boolean LDKCResult_SpendableOutputDescriptorDecodeErrorZ_result_ok(long arg); - public static native number LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(long arg); - public static native number LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_err(long arg); - public static native boolean LDKCResult_ChanKeySignerDecodeErrorZ_result_ok(long arg); - public static native number LDKCResult_ChanKeySignerDecodeErrorZ_get_ok(long arg); - public static native number LDKCResult_ChanKeySignerDecodeErrorZ_get_err(long arg); - public static native boolean LDKCResult_InMemoryChannelKeysDecodeErrorZ_result_ok(long arg); - public static native number LDKCResult_InMemoryChannelKeysDecodeErrorZ_get_ok(long arg); - public static native number LDKCResult_InMemoryChannelKeysDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_TxOutAccessErrorZ_result_ok(long arg); public static native number LDKCResult_TxOutAccessErrorZ_get_ok(long arg); public static native LDKAccessError LDKCResult_TxOutAccessErrorZ_get_err(long arg); @@ -562,35 +679,6 @@ public static native long new_empty_slice_vec(); public static native boolean LDKCResult_NonePaymentSendFailureZ_result_ok(long arg); public static native void LDKCResult_NonePaymentSendFailureZ_get_ok(long arg); public static native number LDKCResult_NonePaymentSendFailureZ_get_err(long arg); - public static class LDKNetAddress { - private LDKNetAddress() {} - export class IPv4 extends LDKNetAddress { - public Uint8Array addr; - public number port; - IPv4(Uint8Array addr, number port) { this.addr = addr; this.port = port; } - } - export class IPv6 extends LDKNetAddress { - public Uint8Array addr; - public number port; - IPv6(Uint8Array addr, number port) { this.addr = addr; this.port = port; } - } - export class OnionV2 extends LDKNetAddress { - public Uint8Array addr; - public number port; - OnionV2(Uint8Array addr, number port) { this.addr = addr; this.port = port; } - } - export class OnionV3 extends LDKNetAddress { - public Uint8Array ed25519_pubkey; - public number checksum; - public number version; - public number port; - OnionV3(Uint8Array ed25519_pubkey, number checksum, number version, number port) { this.ed25519_pubkey = ed25519_pubkey; this.checksum = checksum; this.version = version; this.port = port; } - } - static native void init(); - } - static { LDKNetAddress.init(); } - public static native LDKNetAddress LDKNetAddress_ref_from_ptr(long ptr); - public static native long LDKCVec_NetAddressZ_new(number[] elems); public static native long LDKCVec_ChannelMonitorZ_new(number[] elems); @@ -658,6 +746,9 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.BroadcasterInterface_broadcast_transaction(this_arg, encodeArray(tx)); // debug statements here } + public static native boolean LDKCResult_ChannelKeysDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_ChannelKeysDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_ChannelKeysDecodeErrorZ_get_err(long arg); @@ -719,7 +810,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.KeysInterface_get_secure_random_bytes(this_arg); return decodeArray(nativeResponseValue); } - // LDKCResult_ChanKeySignerDecodeErrorZ KeysInterface_read_chan_signer LDKKeysInterface* this_arg, struct LDKu8slice reader + // LDKCResult_ChannelKeysDecodeErrorZ KeysInterface_read_chan_signer LDKKeysInterface* this_arg, struct LDKu8slice reader export function KeysInterface_read_chan_signer(this_arg: number, reader: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -773,35 +864,81 @@ public static native long new_empty_slice_vec(); public static native boolean LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_result_ok(long arg); public static native number LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(long arg); public static native number LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_SpendableOutputDescriptorDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_InMemoryChannelKeysDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_InMemoryChannelKeysDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_InMemoryChannelKeysDecodeErrorZ_get_err(long arg); + public static native long LDKCVec_RouteHopZ_new(number[] elems); + public static native boolean LDKCResult_RouteDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_RouteDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_RouteDecodeErrorZ_get_err(long arg); + public static native long LDKCVec_RouteHintZ_new(number[] elems); + public static native boolean LDKCResult_RouteLightningErrorZ_result_ok(long arg); + public static native number LDKCResult_RouteLightningErrorZ_get_ok(long arg); + public static native number LDKCResult_RouteLightningErrorZ_get_err(long arg); public static native boolean LDKCResult_NetAddressu8Z_result_ok(long arg); public static native number LDKCResult_NetAddressu8Z_get_ok(long arg); public static native number LDKCResult_NetAddressu8Z_get_err(long arg); public static native boolean LDKCResult_CResult_NetAddressu8ZDecodeErrorZ_result_ok(long arg); public static native number LDKCResult_CResult_NetAddressu8ZDecodeErrorZ_get_ok(long arg); public static native number LDKCResult_CResult_NetAddressu8ZDecodeErrorZ_get_err(long arg); - public static native long LDKCVec_u64Z_new(number[] elems); public static native long LDKCVec_UpdateAddHTLCZ_new(number[] elems); public static native long LDKCVec_UpdateFulfillHTLCZ_new(number[] elems); public static native long LDKCVec_UpdateFailHTLCZ_new(number[] elems); public static native long LDKCVec_UpdateFailMalformedHTLCZ_new(number[] elems); - public static native boolean LDKCResult_boolLightningErrorZ_result_ok(long arg); - public static native boolean LDKCResult_boolLightningErrorZ_get_ok(long arg); - public static native number LDKCResult_boolLightningErrorZ_get_err(long arg); - public static native long LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(number a, number b, number c); - public static native number LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(long ptr); - public static native number LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(long ptr); - public static native number LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(long ptr); - public static native long LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_new(number[] elems); - public static native long LDKCVec_NodeAnnouncementZ_new(number[] elems); - public static native boolean LDKCResult_NoneLightningErrorZ_result_ok(long arg); - public static native void LDKCResult_NoneLightningErrorZ_get_ok(long arg); - public static native number LDKCResult_NoneLightningErrorZ_get_err(long arg); + public static native boolean LDKCResult_AcceptChannelDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_AcceptChannelDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_AcceptChannelDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_AnnouncementSignaturesDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_AnnouncementSignaturesDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_AnnouncementSignaturesDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_ChannelReestablishDecodeErrorZ_result_ok(long arg); public static native number LDKCResult_ChannelReestablishDecodeErrorZ_get_ok(long arg); public static native number LDKCResult_ChannelReestablishDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ClosingSignedDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_ClosingSignedDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_ClosingSignedDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_CommitmentSignedDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_CommitmentSignedDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_CommitmentSignedDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_FundingCreatedDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_FundingCreatedDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_FundingCreatedDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_FundingSignedDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_FundingSignedDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_FundingSignedDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_FundingLockedDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_FundingLockedDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_FundingLockedDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_InitDecodeErrorZ_result_ok(long arg); public static native number LDKCResult_InitDecodeErrorZ_get_ok(long arg); public static native number LDKCResult_InitDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_OpenChannelDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_OpenChannelDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_OpenChannelDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_RevokeAndACKDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_RevokeAndACKDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_RevokeAndACKDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ShutdownDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_ShutdownDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_ShutdownDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_UpdateFailHTLCDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_UpdateFailHTLCDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_UpdateFailHTLCDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_UpdateFeeDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_UpdateFeeDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_UpdateFeeDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_UpdateFulfillHTLCDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_UpdateFulfillHTLCDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_UpdateAddHTLCDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_UpdateAddHTLCDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_UpdateAddHTLCDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_PingDecodeErrorZ_result_ok(long arg); public static native number LDKCResult_PingDecodeErrorZ_get_ok(long arg); public static native number LDKCResult_PingDecodeErrorZ_get_err(long arg); @@ -811,15 +948,24 @@ public static native long new_empty_slice_vec(); public static native boolean LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_result_ok(long arg); public static native number LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(long arg); public static native number LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ChannelAnnouncementDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_ChannelAnnouncementDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_ChannelAnnouncementDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_UnsignedChannelUpdateDecodeErrorZ_result_ok(long arg); public static native number LDKCResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(long arg); public static native number LDKCResult_UnsignedChannelUpdateDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_ChannelUpdateDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_ChannelUpdateDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_ChannelUpdateDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_ErrorMessageDecodeErrorZ_result_ok(long arg); public static native number LDKCResult_ErrorMessageDecodeErrorZ_get_ok(long arg); public static native number LDKCResult_ErrorMessageDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_result_ok(long arg); public static native number LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(long arg); public static native number LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(long arg); + public static native boolean LDKCResult_NodeAnnouncementDecodeErrorZ_result_ok(long arg); + public static native number LDKCResult_NodeAnnouncementDecodeErrorZ_get_ok(long arg); + public static native number LDKCResult_NodeAnnouncementDecodeErrorZ_get_err(long arg); public static native boolean LDKCResult_QueryShortChannelIdsDecodeErrorZ_result_ok(long arg); public static native number LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_ok(long arg); public static native number LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_err(long arg); @@ -835,50 +981,6 @@ public static native long new_empty_slice_vec(); public static native boolean LDKCResult_GossipTimestampFilterDecodeErrorZ_result_ok(long arg); public static native number LDKCResult_GossipTimestampFilterDecodeErrorZ_get_ok(long arg); public static native number LDKCResult_GossipTimestampFilterDecodeErrorZ_get_err(long arg); - public static native boolean LDKCResult_CVec_u8ZPeerHandleErrorZ_result_ok(long arg); - public static native Uint8Array LDKCResult_CVec_u8ZPeerHandleErrorZ_get_ok(long arg); - public static native number LDKCResult_CVec_u8ZPeerHandleErrorZ_get_err(long arg); - public static native boolean LDKCResult_NonePeerHandleErrorZ_result_ok(long arg); - public static native void LDKCResult_NonePeerHandleErrorZ_get_ok(long arg); - public static native number LDKCResult_NonePeerHandleErrorZ_get_err(long arg); - public static native boolean LDKCResult_boolPeerHandleErrorZ_result_ok(long arg); - public static native boolean LDKCResult_boolPeerHandleErrorZ_get_ok(long arg); - public static native number LDKCResult_boolPeerHandleErrorZ_get_err(long arg); - public static native boolean LDKCResult_SecretKeySecpErrorZ_result_ok(long arg); - public static native Uint8Array LDKCResult_SecretKeySecpErrorZ_get_ok(long arg); - public static native LDKSecp256k1Error LDKCResult_SecretKeySecpErrorZ_get_err(long arg); - public static native boolean LDKCResult_PublicKeySecpErrorZ_result_ok(long arg); - public static native Uint8Array LDKCResult_PublicKeySecpErrorZ_get_ok(long arg); - public static native LDKSecp256k1Error LDKCResult_PublicKeySecpErrorZ_get_err(long arg); - public static native boolean LDKCResult_TxCreationKeysSecpErrorZ_result_ok(long arg); - public static native number LDKCResult_TxCreationKeysSecpErrorZ_get_ok(long arg); - public static native LDKSecp256k1Error LDKCResult_TxCreationKeysSecpErrorZ_get_err(long arg); - public static native boolean LDKCResult_TrustedCommitmentTransactionNoneZ_result_ok(long arg); - public static native number LDKCResult_TrustedCommitmentTransactionNoneZ_get_ok(long arg); - public static native void LDKCResult_TrustedCommitmentTransactionNoneZ_get_err(long arg); - public static native boolean LDKCResult_CVec_SignatureZNoneZ_result_ok(long arg); - public static native Uint8Array[] LDKCResult_CVec_SignatureZNoneZ_get_ok(long arg); - public static native void LDKCResult_CVec_SignatureZNoneZ_get_err(long arg); - public static native long LDKCVec_RouteHopZ_new(number[] elems); - public static native boolean LDKCResult_RouteDecodeErrorZ_result_ok(long arg); - public static native number LDKCResult_RouteDecodeErrorZ_get_ok(long arg); - public static native number LDKCResult_RouteDecodeErrorZ_get_err(long arg); - public static native long LDKCVec_RouteHintZ_new(number[] elems); - public static native boolean LDKCResult_RouteLightningErrorZ_result_ok(long arg); - public static native number LDKCResult_RouteLightningErrorZ_get_ok(long arg); - public static native number LDKCResult_RouteLightningErrorZ_get_err(long arg); - public static native boolean LDKCResult_RoutingFeesDecodeErrorZ_result_ok(long arg); - public static native number LDKCResult_RoutingFeesDecodeErrorZ_get_ok(long arg); - public static native number LDKCResult_RoutingFeesDecodeErrorZ_get_err(long arg); - public static native boolean LDKCResult_NodeAnnouncementInfoDecodeErrorZ_result_ok(long arg); - public static native number LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(long arg); - public static native number LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_err(long arg); - public static native boolean LDKCResult_NodeInfoDecodeErrorZ_result_ok(long arg); - public static native number LDKCResult_NodeInfoDecodeErrorZ_get_ok(long arg); - public static native number LDKCResult_NodeInfoDecodeErrorZ_get_err(long arg); - public static native boolean LDKCResult_NetworkGraphDecodeErrorZ_result_ok(long arg); - public static native number LDKCResult_NetworkGraphDecodeErrorZ_get_ok(long arg); - public static native number LDKCResult_NetworkGraphDecodeErrorZ_get_err(long arg); @@ -1384,572 +1486,812 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.TxOut_clone(orig); return nativeResponseValue; } - // void CVec_SpendableOutputDescriptorZ_free(struct LDKCVec_SpendableOutputDescriptorZ _res); - export function CVec_SpendableOutputDescriptorZ_free(_res: number[]): void { + // struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_ok(struct LDKSecretKey o); + export function CResult_SecretKeyErrorZ_ok(o: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_SpendableOutputDescriptorZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_SecretKeyErrorZ_ok(encodeArray(o)); + return nativeResponseValue; } - // void CVec_MessageSendEventZ_free(struct LDKCVec_MessageSendEventZ _res); - export function CVec_MessageSendEventZ_free(_res: number[]): void { + // struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_err(enum LDKSecp256k1Error e); + export function CResult_SecretKeyErrorZ_err(e: LDKSecp256k1Error): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_MessageSendEventZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_SecretKeyErrorZ_err(e); + return nativeResponseValue; } - // void CVec_EventZ_free(struct LDKCVec_EventZ _res); - export function CVec_EventZ_free(_res: number[]): void { + // void CResult_SecretKeyErrorZ_free(struct LDKCResult_SecretKeyErrorZ _res); + export function CResult_SecretKeyErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_EventZ_free(_res); + const nativeResponseValue = wasm.CResult_SecretKeyErrorZ_free(_res); // debug statements here } - // void C2Tuple_usizeTransactionZ_free(struct LDKC2Tuple_usizeTransactionZ _res); - export function C2Tuple_usizeTransactionZ_free(_res: number): void { + // struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_ok(struct LDKPublicKey o); + export function CResult_PublicKeyErrorZ_ok(o: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_usizeTransactionZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_PublicKeyErrorZ_ok(encodeArray(o)); + return nativeResponseValue; } - // struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_new(uintptr_t a, struct LDKTransaction b); - export function C2Tuple_usizeTransactionZ_new(a: number, b: Uint8Array): number { + // struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_err(enum LDKSecp256k1Error e); + export function CResult_PublicKeyErrorZ_err(e: LDKSecp256k1Error): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_usizeTransactionZ_new(a, encodeArray(b)); + const nativeResponseValue = wasm.CResult_PublicKeyErrorZ_err(e); return nativeResponseValue; } - // void CVec_C2Tuple_usizeTransactionZZ_free(struct LDKCVec_C2Tuple_usizeTransactionZZ _res); - export function CVec_C2Tuple_usizeTransactionZZ_free(_res: number[]): void { + // void CResult_PublicKeyErrorZ_free(struct LDKCResult_PublicKeyErrorZ _res); + export function CResult_PublicKeyErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_C2Tuple_usizeTransactionZZ_free(_res); + const nativeResponseValue = wasm.CResult_PublicKeyErrorZ_free(_res); // debug statements here } - // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_ok(void); - export function CResult_NoneChannelMonitorUpdateErrZ_ok(): number { + // struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_ok(struct LDKTxCreationKeys o); + export function CResult_TxCreationKeysDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NoneChannelMonitorUpdateErrZ_ok(); + const nativeResponseValue = wasm.CResult_TxCreationKeysDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_err(enum LDKChannelMonitorUpdateErr e); - export function CResult_NoneChannelMonitorUpdateErrZ_err(e: LDKChannelMonitorUpdateErr): number { + // struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_TxCreationKeysDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NoneChannelMonitorUpdateErrZ_err(e); + const nativeResponseValue = wasm.CResult_TxCreationKeysDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_NoneChannelMonitorUpdateErrZ_free(struct LDKCResult_NoneChannelMonitorUpdateErrZ _res); - export function CResult_NoneChannelMonitorUpdateErrZ_free(_res: number): void { + // void CResult_TxCreationKeysDecodeErrorZ_free(struct LDKCResult_TxCreationKeysDecodeErrorZ _res); + export function CResult_TxCreationKeysDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NoneChannelMonitorUpdateErrZ_free(_res); + const nativeResponseValue = wasm.CResult_TxCreationKeysDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_clone(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR orig); - export function CResult_NoneChannelMonitorUpdateErrZ_clone(orig: number): number { + // struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_clone(const struct LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR orig); + export function CResult_TxCreationKeysDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NoneChannelMonitorUpdateErrZ_clone(orig); + const nativeResponseValue = wasm.CResult_TxCreationKeysDecodeErrorZ_clone(orig); return nativeResponseValue; } - // void CVec_MonitorEventZ_free(struct LDKCVec_MonitorEventZ _res); - export function CVec_MonitorEventZ_free(_res: number[]): void { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.CVec_MonitorEventZ_free(_res); - // debug statements here - } - // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_ok(struct LDKChannelMonitorUpdate o); - export function CResult_ChannelMonitorUpdateDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_ok(struct LDKChannelPublicKeys o); + export function CResult_ChannelPublicKeysDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ChannelMonitorUpdateDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_ChannelPublicKeysDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_ChannelMonitorUpdateDecodeErrorZ_err(e: number): number { + // struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_ChannelPublicKeysDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ChannelMonitorUpdateDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_ChannelPublicKeysDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_ChannelMonitorUpdateDecodeErrorZ_free(struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res); - export function CResult_ChannelMonitorUpdateDecodeErrorZ_free(_res: number): void { + // void CResult_ChannelPublicKeysDecodeErrorZ_free(struct LDKCResult_ChannelPublicKeysDecodeErrorZ _res); + export function CResult_ChannelPublicKeysDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ChannelMonitorUpdateDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_ChannelPublicKeysDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_ok(void); - export function CResult_NoneMonitorUpdateErrorZ_ok(): number { + // struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_clone(const struct LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR orig); + export function CResult_ChannelPublicKeysDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NoneMonitorUpdateErrorZ_ok(); + const nativeResponseValue = wasm.CResult_ChannelPublicKeysDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_err(struct LDKMonitorUpdateError e); - export function CResult_NoneMonitorUpdateErrorZ_err(e: number): number { + // struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_ok(struct LDKTxCreationKeys o); + export function CResult_TxCreationKeysErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NoneMonitorUpdateErrorZ_err(e); + const nativeResponseValue = wasm.CResult_TxCreationKeysErrorZ_ok(o); return nativeResponseValue; } - // void CResult_NoneMonitorUpdateErrorZ_free(struct LDKCResult_NoneMonitorUpdateErrorZ _res); - export function CResult_NoneMonitorUpdateErrorZ_free(_res: number): void { + // struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_err(enum LDKSecp256k1Error e); + export function CResult_TxCreationKeysErrorZ_err(e: LDKSecp256k1Error): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NoneMonitorUpdateErrorZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_TxCreationKeysErrorZ_err(e); + return nativeResponseValue; } - // struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_clone(const struct LDKCResult_NoneMonitorUpdateErrorZ *NONNULL_PTR orig); - export function CResult_NoneMonitorUpdateErrorZ_clone(orig: number): number { + // void CResult_TxCreationKeysErrorZ_free(struct LDKCResult_TxCreationKeysErrorZ _res); + export function CResult_TxCreationKeysErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NoneMonitorUpdateErrorZ_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.CResult_TxCreationKeysErrorZ_free(_res); + // debug statements here } - // void C2Tuple_OutPointScriptZ_free(struct LDKC2Tuple_OutPointScriptZ _res); - export function C2Tuple_OutPointScriptZ_free(_res: number): void { + // struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(struct LDKHTLCOutputInCommitment o); + export function CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_OutPointScriptZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(o); + return nativeResponseValue; } - // struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_new(struct LDKOutPoint a, struct LDKCVec_u8Z b); - export function C2Tuple_OutPointScriptZ_new(a: number, b: Uint8Array): number { + // struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_HTLCOutputInCommitmentDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_OutPointScriptZ_new(a, encodeArray(b)); + const nativeResponseValue = wasm.CResult_HTLCOutputInCommitmentDecodeErrorZ_err(e); return nativeResponseValue; } - // void CVec_TransactionZ_free(struct LDKCVec_TransactionZ _res); - export function CVec_TransactionZ_free(_res: Uint8Array[]): void { + // void CResult_HTLCOutputInCommitmentDecodeErrorZ_free(struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ _res); + export function CResult_HTLCOutputInCommitmentDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_TransactionZ_free(_res); + const nativeResponseValue = wasm.CResult_HTLCOutputInCommitmentDecodeErrorZ_free(_res); // debug statements here } - // struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_clone(const struct LDKC2Tuple_u32TxOutZ *NONNULL_PTR orig); - export function C2Tuple_u32TxOutZ_clone(orig: number): number { + // struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(const struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR orig); + export function CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_u32TxOutZ_clone(orig); + const nativeResponseValue = wasm.CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(orig); return nativeResponseValue; } - // void C2Tuple_u32TxOutZ_free(struct LDKC2Tuple_u32TxOutZ _res); - export function C2Tuple_u32TxOutZ_free(_res: number): void { + // struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(struct LDKCounterpartyChannelTransactionParameters o); + export function CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_u32TxOutZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(o); + return nativeResponseValue; } - // struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_new(uint32_t a, struct LDKTxOut b); - export function C2Tuple_u32TxOutZ_new(a: number, b: number): number { + // struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_u32TxOutZ_new(a, b); + const nativeResponseValue = wasm.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(e); return nativeResponseValue; } - // void CVec_C2Tuple_u32TxOutZZ_free(struct LDKCVec_C2Tuple_u32TxOutZZ _res); - export function CVec_C2Tuple_u32TxOutZZ_free(_res: number[]): void { + // void CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ _res); + export function CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_C2Tuple_u32TxOutZZ_free(_res); + const nativeResponseValue = wasm.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(_res); // debug statements here } - // void C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res); - export function C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(_res: number): void { + // struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig); + export function CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(orig); + return nativeResponseValue; } - // struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32TxOutZZ b); - export function C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(a: Uint8Array, b: number[]): number { + // struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_ok(struct LDKChannelTransactionParameters o); + export function CResult_ChannelTransactionParametersDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(encodeArray(a), b); + const nativeResponseValue = wasm.CResult_ChannelTransactionParametersDecodeErrorZ_ok(o); return nativeResponseValue; } - // void CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ _res); - export function CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(_res: number[]): void { + // struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_ChannelTransactionParametersDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_ChannelTransactionParametersDecodeErrorZ_err(e); + return nativeResponseValue; } - // void C2Tuple_BlockHashChannelMonitorZ_free(struct LDKC2Tuple_BlockHashChannelMonitorZ _res); - export function C2Tuple_BlockHashChannelMonitorZ_free(_res: number): void { + // void CResult_ChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_ChannelTransactionParametersDecodeErrorZ _res); + export function CResult_ChannelTransactionParametersDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_BlockHashChannelMonitorZ_free(_res); + const nativeResponseValue = wasm.CResult_ChannelTransactionParametersDecodeErrorZ_free(_res); // debug statements here } - // struct LDKC2Tuple_BlockHashChannelMonitorZ C2Tuple_BlockHashChannelMonitorZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelMonitor b); - export function C2Tuple_BlockHashChannelMonitorZ_new(a: Uint8Array, b: number): number { + // struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig); + export function CResult_ChannelTransactionParametersDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_BlockHashChannelMonitorZ_new(encodeArray(a), b); + const nativeResponseValue = wasm.CResult_ChannelTransactionParametersDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelMonitorZ o); - export function CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(o: number): number { + // void CVec_SignatureZ_free(struct LDKCVec_SignatureZ _res); + export function CVec_SignatureZ_free(_res: Uint8Array[]): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(o); - return nativeResponseValue; + const nativeResponseValue = wasm.CVec_SignatureZ_free(_res); + // debug statements here } - // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(e: number): number { + // struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_ok(struct LDKHolderCommitmentTransaction o); + export function CResult_HolderCommitmentTransactionDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_HolderCommitmentTransactionDecodeErrorZ_ok(o); return nativeResponseValue; } - // void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res); - export function CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(_res: number): void { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(_res); - // debug statements here - } - // struct LDKC2Tuple_u64u64Z C2Tuple_u64u64Z_clone(const struct LDKC2Tuple_u64u64Z *NONNULL_PTR orig); - export function C2Tuple_u64u64Z_clone(orig: number): number { + // struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_HolderCommitmentTransactionDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_u64u64Z_clone(orig); + const nativeResponseValue = wasm.CResult_HolderCommitmentTransactionDecodeErrorZ_err(e); return nativeResponseValue; } - // void C2Tuple_u64u64Z_free(struct LDKC2Tuple_u64u64Z _res); - export function C2Tuple_u64u64Z_free(_res: number): void { + // void CResult_HolderCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ _res); + export function CResult_HolderCommitmentTransactionDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_u64u64Z_free(_res); + const nativeResponseValue = wasm.CResult_HolderCommitmentTransactionDecodeErrorZ_free(_res); // debug statements here } - // struct LDKC2Tuple_u64u64Z C2Tuple_u64u64Z_new(uint64_t a, uint64_t b); - export function C2Tuple_u64u64Z_new(a: number, b: number): number { + // struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig); + export function CResult_HolderCommitmentTransactionDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_u64u64Z_new(a, b); + const nativeResponseValue = wasm.CResult_HolderCommitmentTransactionDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_ok(struct LDKSpendableOutputDescriptor o); - export function CResult_SpendableOutputDescriptorDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(struct LDKBuiltCommitmentTransaction o); + export function CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_SpendableOutputDescriptorDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_SpendableOutputDescriptorDecodeErrorZ_err(e: number): number { + // struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_BuiltCommitmentTransactionDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_SpendableOutputDescriptorDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_BuiltCommitmentTransactionDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_SpendableOutputDescriptorDecodeErrorZ_free(struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ _res); - export function CResult_SpendableOutputDescriptorDecodeErrorZ_free(_res: number): void { + // void CResult_BuiltCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ _res); + export function CResult_BuiltCommitmentTransactionDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_SpendableOutputDescriptorDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_BuiltCommitmentTransactionDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR orig); - export function CResult_SpendableOutputDescriptorDecodeErrorZ_clone(orig: number): number { + // struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig); + export function CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_SpendableOutputDescriptorDecodeErrorZ_clone(orig); + const nativeResponseValue = wasm.CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(orig); return nativeResponseValue; } - // void CVec_SignatureZ_free(struct LDKCVec_SignatureZ _res); - export function CVec_SignatureZ_free(_res: Uint8Array[]): void { + // struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_ok(struct LDKCommitmentTransaction o); + export function CResult_CommitmentTransactionDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_SignatureZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_CommitmentTransactionDecodeErrorZ_ok(o); + return nativeResponseValue; } - // struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_clone(const struct LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR orig); - export function C2Tuple_SignatureCVec_SignatureZZ_clone(orig: number): number { + // struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_CommitmentTransactionDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_SignatureCVec_SignatureZZ_clone(orig); + const nativeResponseValue = wasm.CResult_CommitmentTransactionDecodeErrorZ_err(e); return nativeResponseValue; } - // void C2Tuple_SignatureCVec_SignatureZZ_free(struct LDKC2Tuple_SignatureCVec_SignatureZZ _res); - export function C2Tuple_SignatureCVec_SignatureZZ_free(_res: number): void { + // void CResult_CommitmentTransactionDecodeErrorZ_free(struct LDKCResult_CommitmentTransactionDecodeErrorZ _res); + export function CResult_CommitmentTransactionDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_SignatureCVec_SignatureZZ_free(_res); + const nativeResponseValue = wasm.CResult_CommitmentTransactionDecodeErrorZ_free(_res); // debug statements here } - // struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_new(struct LDKSignature a, struct LDKCVec_SignatureZ b); - export function C2Tuple_SignatureCVec_SignatureZZ_new(a: Uint8Array, b: Uint8Array[]): number { + // struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR orig); + export function CResult_CommitmentTransactionDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_SignatureCVec_SignatureZZ_new(encodeArray(a), b); + const nativeResponseValue = wasm.CResult_CommitmentTransactionDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(struct LDKC2Tuple_SignatureCVec_SignatureZZ o); - export function CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(o: number): number { + // struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_ok(struct LDKTrustedCommitmentTransaction o); + export function CResult_TrustedCommitmentTransactionNoneZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(o); + const nativeResponseValue = wasm.CResult_TrustedCommitmentTransactionNoneZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(void); - export function CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(): number { + // struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_err(void); + export function CResult_TrustedCommitmentTransactionNoneZ_err(): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(); + const nativeResponseValue = wasm.CResult_TrustedCommitmentTransactionNoneZ_err(); return nativeResponseValue; } - // void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ _res); - export function CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(_res: number): void { + // void CResult_TrustedCommitmentTransactionNoneZ_free(struct LDKCResult_TrustedCommitmentTransactionNoneZ _res); + export function CResult_TrustedCommitmentTransactionNoneZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(_res); + const nativeResponseValue = wasm.CResult_TrustedCommitmentTransactionNoneZ_free(_res); // debug statements here } - // struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR orig); - export function CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(orig: number): number { + // struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_ok(struct LDKCVec_SignatureZ o); + export function CResult_CVec_SignatureZNoneZ_ok(o: Uint8Array[]): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(orig); + const nativeResponseValue = wasm.CResult_CVec_SignatureZNoneZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_ok(struct LDKSignature o); - export function CResult_SignatureNoneZ_ok(o: Uint8Array): number { + // struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_err(void); + export function CResult_CVec_SignatureZNoneZ_err(): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_SignatureNoneZ_ok(encodeArray(o)); + const nativeResponseValue = wasm.CResult_CVec_SignatureZNoneZ_err(); return nativeResponseValue; } - // struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_err(void); - export function CResult_SignatureNoneZ_err(): number { + // void CResult_CVec_SignatureZNoneZ_free(struct LDKCResult_CVec_SignatureZNoneZ _res); + export function CResult_CVec_SignatureZNoneZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_SignatureNoneZ_err(); + const nativeResponseValue = wasm.CResult_CVec_SignatureZNoneZ_free(_res); + // debug statements here + } + // struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_clone(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR orig); + export function CResult_CVec_SignatureZNoneZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_CVec_SignatureZNoneZ_clone(orig); return nativeResponseValue; } - // void CResult_SignatureNoneZ_free(struct LDKCResult_SignatureNoneZ _res); - export function CResult_SignatureNoneZ_free(_res: number): void { + // void CVec_PublicKeyZ_free(struct LDKCVec_PublicKeyZ _res); + export function CVec_PublicKeyZ_free(_res: Uint8Array[]): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_SignatureNoneZ_free(_res); + const nativeResponseValue = wasm.CVec_PublicKeyZ_free(_res); // debug statements here } - // struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_clone(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR orig); - export function CResult_SignatureNoneZ_clone(orig: number): number { + // void CVec_u8Z_free(struct LDKCVec_u8Z _res); + export function CVec_u8Z_free(_res: Uint8Array): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_SignatureNoneZ_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.CVec_u8Z_free(encodeArray(_res)); + // debug statements here } - // struct LDKCResult_ChanKeySignerDecodeErrorZ CResult_ChanKeySignerDecodeErrorZ_ok(struct LDKChannelKeys o); - export function CResult_ChanKeySignerDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_ok(struct LDKCVec_u8Z o); + export function CResult_CVec_u8ZPeerHandleErrorZ_ok(o: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ChanKeySignerDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_CVec_u8ZPeerHandleErrorZ_ok(encodeArray(o)); return nativeResponseValue; } - // struct LDKCResult_ChanKeySignerDecodeErrorZ CResult_ChanKeySignerDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_ChanKeySignerDecodeErrorZ_err(e: number): number { + // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_err(struct LDKPeerHandleError e); + export function CResult_CVec_u8ZPeerHandleErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ChanKeySignerDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_CVec_u8ZPeerHandleErrorZ_err(e); return nativeResponseValue; } - // void CResult_ChanKeySignerDecodeErrorZ_free(struct LDKCResult_ChanKeySignerDecodeErrorZ _res); - export function CResult_ChanKeySignerDecodeErrorZ_free(_res: number): void { + // void CResult_CVec_u8ZPeerHandleErrorZ_free(struct LDKCResult_CVec_u8ZPeerHandleErrorZ _res); + export function CResult_CVec_u8ZPeerHandleErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ChanKeySignerDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_CVec_u8ZPeerHandleErrorZ_free(_res); // debug statements here } - // struct LDKCResult_ChanKeySignerDecodeErrorZ CResult_ChanKeySignerDecodeErrorZ_clone(const struct LDKCResult_ChanKeySignerDecodeErrorZ *NONNULL_PTR orig); - export function CResult_ChanKeySignerDecodeErrorZ_clone(orig: number): number { + // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_clone(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR orig); + export function CResult_CVec_u8ZPeerHandleErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ChanKeySignerDecodeErrorZ_clone(orig); + const nativeResponseValue = wasm.CResult_CVec_u8ZPeerHandleErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_InMemoryChannelKeysDecodeErrorZ CResult_InMemoryChannelKeysDecodeErrorZ_ok(struct LDKInMemoryChannelKeys o); - export function CResult_InMemoryChannelKeysDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_ok(void); + export function CResult_NonePeerHandleErrorZ_ok(): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_InMemoryChannelKeysDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_NonePeerHandleErrorZ_ok(); return nativeResponseValue; } - // struct LDKCResult_InMemoryChannelKeysDecodeErrorZ CResult_InMemoryChannelKeysDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_InMemoryChannelKeysDecodeErrorZ_err(e: number): number { + // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_err(struct LDKPeerHandleError e); + export function CResult_NonePeerHandleErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_InMemoryChannelKeysDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_NonePeerHandleErrorZ_err(e); return nativeResponseValue; } - // void CResult_InMemoryChannelKeysDecodeErrorZ_free(struct LDKCResult_InMemoryChannelKeysDecodeErrorZ _res); - export function CResult_InMemoryChannelKeysDecodeErrorZ_free(_res: number): void { + // void CResult_NonePeerHandleErrorZ_free(struct LDKCResult_NonePeerHandleErrorZ _res); + export function CResult_NonePeerHandleErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_InMemoryChannelKeysDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_NonePeerHandleErrorZ_free(_res); // debug statements here } - // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_ok(struct LDKTxOut o); - export function CResult_TxOutAccessErrorZ_ok(o: number): number { + // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_clone(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR orig); + export function CResult_NonePeerHandleErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_TxOutAccessErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_NonePeerHandleErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_err(enum LDKAccessError e); - export function CResult_TxOutAccessErrorZ_err(e: LDKAccessError): number { + // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_ok(bool o); + export function CResult_boolPeerHandleErrorZ_ok(o: boolean): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_TxOutAccessErrorZ_err(e); + const nativeResponseValue = wasm.CResult_boolPeerHandleErrorZ_ok(o); return nativeResponseValue; } - // void CResult_TxOutAccessErrorZ_free(struct LDKCResult_TxOutAccessErrorZ _res); - export function CResult_TxOutAccessErrorZ_free(_res: number): void { - if(!isWasmInitialized) { + // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_err(struct LDKPeerHandleError e); + export function CResult_boolPeerHandleErrorZ_err(e: number): number { + if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_TxOutAccessErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_boolPeerHandleErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_boolPeerHandleErrorZ_free(struct LDKCResult_boolPeerHandleErrorZ _res); + export function CResult_boolPeerHandleErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_boolPeerHandleErrorZ_free(_res); // debug statements here } - // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_clone(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR orig); - export function CResult_TxOutAccessErrorZ_clone(orig: number): number { + // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_clone(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR orig); + export function CResult_boolPeerHandleErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_TxOutAccessErrorZ_clone(orig); + const nativeResponseValue = wasm.CResult_boolPeerHandleErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_ok(void); - export function CResult_NoneAPIErrorZ_ok(): number { + // struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_ok(struct LDKInitFeatures o); + export function CResult_InitFeaturesDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NoneAPIErrorZ_ok(); + const nativeResponseValue = wasm.CResult_InitFeaturesDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_err(struct LDKAPIError e); - export function CResult_NoneAPIErrorZ_err(e: number): number { + // struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_InitFeaturesDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NoneAPIErrorZ_err(e); + const nativeResponseValue = wasm.CResult_InitFeaturesDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_NoneAPIErrorZ_free(struct LDKCResult_NoneAPIErrorZ _res); - export function CResult_NoneAPIErrorZ_free(_res: number): void { + // void CResult_InitFeaturesDecodeErrorZ_free(struct LDKCResult_InitFeaturesDecodeErrorZ _res); + export function CResult_InitFeaturesDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NoneAPIErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_InitFeaturesDecodeErrorZ_free(_res); // debug statements here } - // void CVec_ChannelDetailsZ_free(struct LDKCVec_ChannelDetailsZ _res); - export function CVec_ChannelDetailsZ_free(_res: number[]): void { + // struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_ok(struct LDKNodeFeatures o); + export function CResult_NodeFeaturesDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_ChannelDetailsZ_free(_res); + const nativeResponseValue = wasm.CResult_NodeFeaturesDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_NodeFeaturesDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NodeFeaturesDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_NodeFeaturesDecodeErrorZ_free(struct LDKCResult_NodeFeaturesDecodeErrorZ _res); + export function CResult_NodeFeaturesDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NodeFeaturesDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_ok(void); - export function CResult_NonePaymentSendFailureZ_ok(): number { + // struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_ok(struct LDKChannelFeatures o); + export function CResult_ChannelFeaturesDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NonePaymentSendFailureZ_ok(); + const nativeResponseValue = wasm.CResult_ChannelFeaturesDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_err(struct LDKPaymentSendFailure e); - export function CResult_NonePaymentSendFailureZ_err(e: number): number { + // struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_ChannelFeaturesDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NonePaymentSendFailureZ_err(e); + const nativeResponseValue = wasm.CResult_ChannelFeaturesDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_NonePaymentSendFailureZ_free(struct LDKCResult_NonePaymentSendFailureZ _res); - export function CResult_NonePaymentSendFailureZ_free(_res: number): void { + // void CResult_ChannelFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelFeaturesDecodeErrorZ _res); + export function CResult_ChannelFeaturesDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NonePaymentSendFailureZ_free(_res); + const nativeResponseValue = wasm.CResult_ChannelFeaturesDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_clone(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR orig); - export function CResult_NonePaymentSendFailureZ_clone(orig: number): number { + // struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_ok(struct LDKChannelConfig o); + export function CResult_ChannelConfigDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NonePaymentSendFailureZ_clone(orig); + const nativeResponseValue = wasm.CResult_ChannelConfigDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_ChannelConfigDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelConfigDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_ChannelConfigDecodeErrorZ_free(struct LDKCResult_ChannelConfigDecodeErrorZ _res); + export function CResult_ChannelConfigDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelConfigDecodeErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_clone(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR orig); + export function CResult_ChannelConfigDecodeErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelConfigDecodeErrorZ_clone(orig); + return nativeResponseValue; + } + // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_ok(bool o); + export function CResult_boolLightningErrorZ_ok(o: boolean): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_boolLightningErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_err(struct LDKLightningError e); + export function CResult_boolLightningErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_boolLightningErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_boolLightningErrorZ_free(struct LDKCResult_boolLightningErrorZ _res); + export function CResult_boolLightningErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_boolLightningErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_clone(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR orig); + export function CResult_boolLightningErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_boolLightningErrorZ_clone(orig); + return nativeResponseValue; + } + // struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(const struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR orig); + export function C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(orig); + return nativeResponseValue; + } + // struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(struct LDKChannelAnnouncement a, struct LDKChannelUpdate b, struct LDKChannelUpdate c); + export function C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(a: number, b: number, c: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(a, b, c); + return nativeResponseValue; + } + // void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res); + export function C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(_res); + // debug statements here + } + // void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res); + export function CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(_res: number[]): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(_res); + // debug statements here + } + // void CVec_NodeAnnouncementZ_free(struct LDKCVec_NodeAnnouncementZ _res); + export function CVec_NodeAnnouncementZ_free(_res: number[]): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CVec_NodeAnnouncementZ_free(_res); + // debug statements here + } + // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_ok(void); + export function CResult_NoneLightningErrorZ_ok(): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NoneLightningErrorZ_ok(); + return nativeResponseValue; + } + // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_err(struct LDKLightningError e); + export function CResult_NoneLightningErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NoneLightningErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_NoneLightningErrorZ_free(struct LDKCResult_NoneLightningErrorZ _res); + export function CResult_NoneLightningErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NoneLightningErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_clone(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR orig); + export function CResult_NoneLightningErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NoneLightningErrorZ_clone(orig); + return nativeResponseValue; + } + // void CVec_MessageSendEventZ_free(struct LDKCVec_MessageSendEventZ _res); + export function CVec_MessageSendEventZ_free(_res: number[]): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CVec_MessageSendEventZ_free(_res); + // debug statements here + } + // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_ok(struct LDKDirectionalChannelInfo o); + export function CResult_DirectionalChannelInfoDecodeErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_DirectionalChannelInfoDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_DirectionalChannelInfoDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_DirectionalChannelInfoDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_DirectionalChannelInfoDecodeErrorZ_free(struct LDKCResult_DirectionalChannelInfoDecodeErrorZ _res); + export function CResult_DirectionalChannelInfoDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_DirectionalChannelInfoDecodeErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_clone(const struct LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR orig); + export function CResult_DirectionalChannelInfoDecodeErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_DirectionalChannelInfoDecodeErrorZ_clone(orig); + return nativeResponseValue; + } + // struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_ok(struct LDKChannelInfo o); + export function CResult_ChannelInfoDecodeErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelInfoDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_ChannelInfoDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelInfoDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_ChannelInfoDecodeErrorZ_free(struct LDKCResult_ChannelInfoDecodeErrorZ _res); + export function CResult_ChannelInfoDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelInfoDecodeErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_ok(struct LDKRoutingFees o); + export function CResult_RoutingFeesDecodeErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_RoutingFeesDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_RoutingFeesDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_RoutingFeesDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_RoutingFeesDecodeErrorZ_free(struct LDKCResult_RoutingFeesDecodeErrorZ _res); + export function CResult_RoutingFeesDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_RoutingFeesDecodeErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_clone(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR orig); + export function CResult_RoutingFeesDecodeErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_RoutingFeesDecodeErrorZ_clone(orig); return nativeResponseValue; } // void CVec_NetAddressZ_free(struct LDKCVec_NetAddressZ _res); @@ -1960,53 +2302,885 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.CVec_NetAddressZ_free(_res); // debug statements here } - // void CVec_ChannelMonitorZ_free(struct LDKCVec_ChannelMonitorZ _res); - export function CVec_ChannelMonitorZ_free(_res: number[]): void { + // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_ok(struct LDKNodeAnnouncementInfo o); + export function CResult_NodeAnnouncementInfoDecodeErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NodeAnnouncementInfoDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_NodeAnnouncementInfoDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NodeAnnouncementInfoDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_NodeAnnouncementInfoDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res); + export function CResult_NodeAnnouncementInfoDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NodeAnnouncementInfoDecodeErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR orig); + export function CResult_NodeAnnouncementInfoDecodeErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NodeAnnouncementInfoDecodeErrorZ_clone(orig); + return nativeResponseValue; + } + // void CVec_u64Z_free(struct LDKCVec_u64Z _res); + export function CVec_u64Z_free(_res: number[]): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CVec_u64Z_free(_res); + // debug statements here + } + // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_ok(struct LDKNodeInfo o); + export function CResult_NodeInfoDecodeErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NodeInfoDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_NodeInfoDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NodeInfoDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_NodeInfoDecodeErrorZ_free(struct LDKCResult_NodeInfoDecodeErrorZ _res); + export function CResult_NodeInfoDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NodeInfoDecodeErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_clone(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR orig); + export function CResult_NodeInfoDecodeErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NodeInfoDecodeErrorZ_clone(orig); + return nativeResponseValue; + } + // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_ok(struct LDKNetworkGraph o); + export function CResult_NetworkGraphDecodeErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NetworkGraphDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_NetworkGraphDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NetworkGraphDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_NetworkGraphDecodeErrorZ_free(struct LDKCResult_NetworkGraphDecodeErrorZ _res); + export function CResult_NetworkGraphDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NetworkGraphDecodeErrorZ_free(_res); + // debug statements here + } + // struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_new(uintptr_t a, struct LDKTransaction b); + export function C2Tuple_usizeTransactionZ_new(a: number, b: Uint8Array): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_usizeTransactionZ_new(a, encodeArray(b)); + return nativeResponseValue; + } + // void C2Tuple_usizeTransactionZ_free(struct LDKC2Tuple_usizeTransactionZ _res); + export function C2Tuple_usizeTransactionZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_usizeTransactionZ_free(_res); + // debug statements here + } + // void CVec_C2Tuple_usizeTransactionZZ_free(struct LDKCVec_C2Tuple_usizeTransactionZZ _res); + export function CVec_C2Tuple_usizeTransactionZZ_free(_res: number[]): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CVec_C2Tuple_usizeTransactionZZ_free(_res); + // debug statements here + } + // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_ok(void); + export function CResult_NoneChannelMonitorUpdateErrZ_ok(): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NoneChannelMonitorUpdateErrZ_ok(); + return nativeResponseValue; + } + // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_err(enum LDKChannelMonitorUpdateErr e); + export function CResult_NoneChannelMonitorUpdateErrZ_err(e: LDKChannelMonitorUpdateErr): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NoneChannelMonitorUpdateErrZ_err(e); + return nativeResponseValue; + } + // void CResult_NoneChannelMonitorUpdateErrZ_free(struct LDKCResult_NoneChannelMonitorUpdateErrZ _res); + export function CResult_NoneChannelMonitorUpdateErrZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NoneChannelMonitorUpdateErrZ_free(_res); + // debug statements here + } + // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_clone(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR orig); + export function CResult_NoneChannelMonitorUpdateErrZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NoneChannelMonitorUpdateErrZ_clone(orig); + return nativeResponseValue; + } + // void CVec_MonitorEventZ_free(struct LDKCVec_MonitorEventZ _res); + export function CVec_MonitorEventZ_free(_res: number[]): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CVec_MonitorEventZ_free(_res); + // debug statements here + } + // void CVec_EventZ_free(struct LDKCVec_EventZ _res); + export function CVec_EventZ_free(_res: number[]): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CVec_EventZ_free(_res); + // debug statements here + } + // struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_ok(struct LDKOutPoint o); + export function CResult_OutPointDecodeErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_OutPointDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_OutPointDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_OutPointDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_OutPointDecodeErrorZ_free(struct LDKCResult_OutPointDecodeErrorZ _res); + export function CResult_OutPointDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_OutPointDecodeErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_clone(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR orig); + export function CResult_OutPointDecodeErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_OutPointDecodeErrorZ_clone(orig); + return nativeResponseValue; + } + // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_ok(struct LDKChannelMonitorUpdate o); + export function CResult_ChannelMonitorUpdateDecodeErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelMonitorUpdateDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_ChannelMonitorUpdateDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelMonitorUpdateDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_ChannelMonitorUpdateDecodeErrorZ_free(struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res); + export function CResult_ChannelMonitorUpdateDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelMonitorUpdateDecodeErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR orig); + export function CResult_ChannelMonitorUpdateDecodeErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelMonitorUpdateDecodeErrorZ_clone(orig); + return nativeResponseValue; + } + // struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_ok(struct LDKHTLCUpdate o); + export function CResult_HTLCUpdateDecodeErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_HTLCUpdateDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_HTLCUpdateDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_HTLCUpdateDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_HTLCUpdateDecodeErrorZ_free(struct LDKCResult_HTLCUpdateDecodeErrorZ _res); + export function CResult_HTLCUpdateDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_HTLCUpdateDecodeErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_clone(const struct LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR orig); + export function CResult_HTLCUpdateDecodeErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_HTLCUpdateDecodeErrorZ_clone(orig); + return nativeResponseValue; + } + // struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_ok(void); + export function CResult_NoneMonitorUpdateErrorZ_ok(): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NoneMonitorUpdateErrorZ_ok(); + return nativeResponseValue; + } + // struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_err(struct LDKMonitorUpdateError e); + export function CResult_NoneMonitorUpdateErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NoneMonitorUpdateErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_NoneMonitorUpdateErrorZ_free(struct LDKCResult_NoneMonitorUpdateErrorZ _res); + export function CResult_NoneMonitorUpdateErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NoneMonitorUpdateErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_clone(const struct LDKCResult_NoneMonitorUpdateErrorZ *NONNULL_PTR orig); + export function CResult_NoneMonitorUpdateErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NoneMonitorUpdateErrorZ_clone(orig); + return nativeResponseValue; + } + // struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_clone(const struct LDKC2Tuple_OutPointScriptZ *NONNULL_PTR orig); + export function C2Tuple_OutPointScriptZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_OutPointScriptZ_clone(orig); + return nativeResponseValue; + } + // struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_new(struct LDKOutPoint a, struct LDKCVec_u8Z b); + export function C2Tuple_OutPointScriptZ_new(a: number, b: Uint8Array): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_OutPointScriptZ_new(a, encodeArray(b)); + return nativeResponseValue; + } + // void C2Tuple_OutPointScriptZ_free(struct LDKC2Tuple_OutPointScriptZ _res); + export function C2Tuple_OutPointScriptZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_OutPointScriptZ_free(_res); + // debug statements here + } + // void CVec_TransactionZ_free(struct LDKCVec_TransactionZ _res); + export function CVec_TransactionZ_free(_res: Uint8Array[]): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CVec_TransactionZ_free(_res); + // debug statements here + } + // struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_clone(const struct LDKC2Tuple_u32TxOutZ *NONNULL_PTR orig); + export function C2Tuple_u32TxOutZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_u32TxOutZ_clone(orig); + return nativeResponseValue; + } + // struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_new(uint32_t a, struct LDKTxOut b); + export function C2Tuple_u32TxOutZ_new(a: number, b: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_u32TxOutZ_new(a, b); + return nativeResponseValue; + } + // void C2Tuple_u32TxOutZ_free(struct LDKC2Tuple_u32TxOutZ _res); + export function C2Tuple_u32TxOutZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_u32TxOutZ_free(_res); + // debug statements here + } + // void CVec_C2Tuple_u32TxOutZZ_free(struct LDKCVec_C2Tuple_u32TxOutZZ _res); + export function CVec_C2Tuple_u32TxOutZZ_free(_res: number[]): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CVec_C2Tuple_u32TxOutZZ_free(_res); + // debug statements here + } + // struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32TxOutZZ b); + export function C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(a: Uint8Array, b: number[]): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(encodeArray(a), b); + return nativeResponseValue; + } + // void C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res); + export function C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(_res); + // debug statements here + } + // void CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ _res); + export function CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(_res: number[]): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(_res); + // debug statements here + } + // struct LDKC2Tuple_BlockHashChannelMonitorZ C2Tuple_BlockHashChannelMonitorZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelMonitor b); + export function C2Tuple_BlockHashChannelMonitorZ_new(a: Uint8Array, b: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_BlockHashChannelMonitorZ_new(encodeArray(a), b); + return nativeResponseValue; + } + // void C2Tuple_BlockHashChannelMonitorZ_free(struct LDKC2Tuple_BlockHashChannelMonitorZ _res); + export function C2Tuple_BlockHashChannelMonitorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_BlockHashChannelMonitorZ_free(_res); + // debug statements here + } + // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelMonitorZ o); + export function CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res); + export function CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(_res); + // debug statements here + } + // void CVec_SpendableOutputDescriptorZ_free(struct LDKCVec_SpendableOutputDescriptorZ _res); + export function CVec_SpendableOutputDescriptorZ_free(_res: number[]): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CVec_SpendableOutputDescriptorZ_free(_res); + // debug statements here + } + // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_ok(struct LDKTxOut o); + export function CResult_TxOutAccessErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_TxOutAccessErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_err(enum LDKAccessError e); + export function CResult_TxOutAccessErrorZ_err(e: LDKAccessError): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_TxOutAccessErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_TxOutAccessErrorZ_free(struct LDKCResult_TxOutAccessErrorZ _res); + export function CResult_TxOutAccessErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_TxOutAccessErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_clone(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR orig); + export function CResult_TxOutAccessErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_TxOutAccessErrorZ_clone(orig); + return nativeResponseValue; + } + // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_ok(void); + export function CResult_NoneAPIErrorZ_ok(): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NoneAPIErrorZ_ok(); + return nativeResponseValue; + } + // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_err(struct LDKAPIError e); + export function CResult_NoneAPIErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NoneAPIErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_NoneAPIErrorZ_free(struct LDKCResult_NoneAPIErrorZ _res); + export function CResult_NoneAPIErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NoneAPIErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_clone(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR orig); + export function CResult_NoneAPIErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NoneAPIErrorZ_clone(orig); + return nativeResponseValue; + } + // void CVec_ChannelDetailsZ_free(struct LDKCVec_ChannelDetailsZ _res); + export function CVec_ChannelDetailsZ_free(_res: number[]): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CVec_ChannelDetailsZ_free(_res); + // debug statements here + } + // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_ok(void); + export function CResult_NonePaymentSendFailureZ_ok(): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NonePaymentSendFailureZ_ok(); + return nativeResponseValue; + } + // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_err(struct LDKPaymentSendFailure e); + export function CResult_NonePaymentSendFailureZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NonePaymentSendFailureZ_err(e); + return nativeResponseValue; + } + // void CResult_NonePaymentSendFailureZ_free(struct LDKCResult_NonePaymentSendFailureZ _res); + export function CResult_NonePaymentSendFailureZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NonePaymentSendFailureZ_free(_res); + // debug statements here + } + // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_clone(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR orig); + export function CResult_NonePaymentSendFailureZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_NonePaymentSendFailureZ_clone(orig); + return nativeResponseValue; + } + // void CVec_ChannelMonitorZ_free(struct LDKCVec_ChannelMonitorZ _res); + export function CVec_ChannelMonitorZ_free(_res: number[]): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CVec_ChannelMonitorZ_free(_res); + // debug statements here + } + // struct LDKC2Tuple_BlockHashChannelManagerZ C2Tuple_BlockHashChannelManagerZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelManager b); + export function C2Tuple_BlockHashChannelManagerZ_new(a: Uint8Array, b: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_BlockHashChannelManagerZ_new(encodeArray(a), b); + return nativeResponseValue; + } + // void C2Tuple_BlockHashChannelManagerZ_free(struct LDKC2Tuple_BlockHashChannelManagerZ _res); + export function C2Tuple_BlockHashChannelManagerZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_BlockHashChannelManagerZ_free(_res); + // debug statements here + } + // struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelManagerZ o); + export function CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res); + export function CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(_res); + // debug statements here + } + // struct LDKC2Tuple_u64u64Z C2Tuple_u64u64Z_clone(const struct LDKC2Tuple_u64u64Z *NONNULL_PTR orig); + export function C2Tuple_u64u64Z_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_u64u64Z_clone(orig); + return nativeResponseValue; + } + // struct LDKC2Tuple_u64u64Z C2Tuple_u64u64Z_new(uint64_t a, uint64_t b); + export function C2Tuple_u64u64Z_new(a: number, b: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_u64u64Z_new(a, b); + return nativeResponseValue; + } + // void C2Tuple_u64u64Z_free(struct LDKC2Tuple_u64u64Z _res); + export function C2Tuple_u64u64Z_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_u64u64Z_free(_res); + // debug statements here + } + // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_ok(struct LDKSpendableOutputDescriptor o); + export function CResult_SpendableOutputDescriptorDecodeErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_SpendableOutputDescriptorDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_SpendableOutputDescriptorDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_SpendableOutputDescriptorDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_SpendableOutputDescriptorDecodeErrorZ_free(struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ _res); + export function CResult_SpendableOutputDescriptorDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_SpendableOutputDescriptorDecodeErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR orig); + export function CResult_SpendableOutputDescriptorDecodeErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_SpendableOutputDescriptorDecodeErrorZ_clone(orig); + return nativeResponseValue; + } + // struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_clone(const struct LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR orig); + export function C2Tuple_SignatureCVec_SignatureZZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_SignatureCVec_SignatureZZ_clone(orig); + return nativeResponseValue; + } + // struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_new(struct LDKSignature a, struct LDKCVec_SignatureZ b); + export function C2Tuple_SignatureCVec_SignatureZZ_new(a: Uint8Array, b: Uint8Array[]): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_SignatureCVec_SignatureZZ_new(encodeArray(a), b); + return nativeResponseValue; + } + // void C2Tuple_SignatureCVec_SignatureZZ_free(struct LDKC2Tuple_SignatureCVec_SignatureZZ _res); + export function C2Tuple_SignatureCVec_SignatureZZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.C2Tuple_SignatureCVec_SignatureZZ_free(_res); + // debug statements here + } + // struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(struct LDKC2Tuple_SignatureCVec_SignatureZZ o); + export function CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(void); + export function CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(); + return nativeResponseValue; + } + // void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ _res); + export function CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(_res); + // debug statements here + } + // struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR orig); + export function CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(orig); + return nativeResponseValue; + } + // struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_ok(struct LDKSignature o); + export function CResult_SignatureNoneZ_ok(o: Uint8Array): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_SignatureNoneZ_ok(encodeArray(o)); + return nativeResponseValue; + } + // struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_err(void); + export function CResult_SignatureNoneZ_err(): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_SignatureNoneZ_err(); + return nativeResponseValue; + } + // void CResult_SignatureNoneZ_free(struct LDKCResult_SignatureNoneZ _res); + export function CResult_SignatureNoneZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_SignatureNoneZ_free(_res); + // debug statements here + } + // struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_clone(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR orig); + export function CResult_SignatureNoneZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_SignatureNoneZ_clone(orig); + return nativeResponseValue; + } + // struct LDKCResult_ChannelKeysDecodeErrorZ CResult_ChannelKeysDecodeErrorZ_ok(struct LDKChannelKeys o); + export function CResult_ChannelKeysDecodeErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelKeysDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_ChannelKeysDecodeErrorZ CResult_ChannelKeysDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_ChannelKeysDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelKeysDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_ChannelKeysDecodeErrorZ_free(struct LDKCResult_ChannelKeysDecodeErrorZ _res); + export function CResult_ChannelKeysDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelKeysDecodeErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_ChannelKeysDecodeErrorZ CResult_ChannelKeysDecodeErrorZ_clone(const struct LDKCResult_ChannelKeysDecodeErrorZ *NONNULL_PTR orig); + export function CResult_ChannelKeysDecodeErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelKeysDecodeErrorZ_clone(orig); + return nativeResponseValue; + } + // struct LDKCResult_InMemoryChannelKeysDecodeErrorZ CResult_InMemoryChannelKeysDecodeErrorZ_ok(struct LDKInMemoryChannelKeys o); + export function CResult_InMemoryChannelKeysDecodeErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_InMemoryChannelKeysDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_InMemoryChannelKeysDecodeErrorZ CResult_InMemoryChannelKeysDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_InMemoryChannelKeysDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_InMemoryChannelKeysDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_InMemoryChannelKeysDecodeErrorZ_free(struct LDKCResult_InMemoryChannelKeysDecodeErrorZ _res); + export function CResult_InMemoryChannelKeysDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_InMemoryChannelKeysDecodeErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_InMemoryChannelKeysDecodeErrorZ CResult_InMemoryChannelKeysDecodeErrorZ_clone(const struct LDKCResult_InMemoryChannelKeysDecodeErrorZ *NONNULL_PTR orig); + export function CResult_InMemoryChannelKeysDecodeErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_InMemoryChannelKeysDecodeErrorZ_clone(orig); + return nativeResponseValue; + } + // void CVec_RouteHopZ_free(struct LDKCVec_RouteHopZ _res); + export function CVec_RouteHopZ_free(_res: number[]): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CVec_RouteHopZ_free(_res); + // debug statements here + } + // void CVec_CVec_RouteHopZZ_free(struct LDKCVec_CVec_RouteHopZZ _res); + export function CVec_CVec_RouteHopZZ_free(_res: number[][]): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CVec_CVec_RouteHopZZ_free(_res); + // debug statements here + } + // struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_ok(struct LDKRoute o); + export function CResult_RouteDecodeErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_RouteDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_RouteDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_RouteDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_RouteDecodeErrorZ_free(struct LDKCResult_RouteDecodeErrorZ _res); + export function CResult_RouteDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_RouteDecodeErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_clone(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR orig); + export function CResult_RouteDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_ChannelMonitorZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_RouteDecodeErrorZ_clone(orig); + return nativeResponseValue; } - // void C2Tuple_BlockHashChannelManagerZ_free(struct LDKC2Tuple_BlockHashChannelManagerZ _res); - export function C2Tuple_BlockHashChannelManagerZ_free(_res: number): void { + // void CVec_RouteHintZ_free(struct LDKCVec_RouteHintZ _res); + export function CVec_RouteHintZ_free(_res: number[]): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_BlockHashChannelManagerZ_free(_res); + const nativeResponseValue = wasm.CVec_RouteHintZ_free(_res); // debug statements here } - // struct LDKC2Tuple_BlockHashChannelManagerZ C2Tuple_BlockHashChannelManagerZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelManager b); - export function C2Tuple_BlockHashChannelManagerZ_new(a: Uint8Array, b: number): number { + // struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_ok(struct LDKRoute o); + export function CResult_RouteLightningErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C2Tuple_BlockHashChannelManagerZ_new(encodeArray(a), b); + const nativeResponseValue = wasm.CResult_RouteLightningErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelManagerZ o); - export function CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_err(struct LDKLightningError e); + export function CResult_RouteLightningErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_RouteLightningErrorZ_err(e); return nativeResponseValue; } - // struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(e: number): number { + // void CResult_RouteLightningErrorZ_free(struct LDKCResult_RouteLightningErrorZ _res); + export function CResult_RouteLightningErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(e); - return nativeResponseValue; + const nativeResponseValue = wasm.CResult_RouteLightningErrorZ_free(_res); + // debug statements here } - // void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res); - export function CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(_res: number): void { + // struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_clone(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR orig); + export function CResult_RouteLightningErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_RouteLightningErrorZ_clone(orig); + return nativeResponseValue; } // struct LDKCResult_NetAddressu8Z CResult_NetAddressu8Z_ok(struct LDKNetAddress o); export function CResult_NetAddressu8Z_ok(o: number): number { @@ -2064,13 +3238,13 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.CResult_CResult_NetAddressu8ZDecodeErrorZ_free(_res); // debug statements here } - // void CVec_u64Z_free(struct LDKCVec_u64Z _res); - export function CVec_u64Z_free(_res: number[]): void { + // struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ CResult_CResult_NetAddressu8ZDecodeErrorZ_clone(const struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ *NONNULL_PTR orig); + export function CResult_CResult_NetAddressu8ZDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_u64Z_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_CResult_NetAddressu8ZDecodeErrorZ_clone(orig); + return nativeResponseValue; } // void CVec_UpdateAddHTLCZ_free(struct LDKCVec_UpdateAddHTLCZ _res); export function CVec_UpdateAddHTLCZ_free(_res: number[]): void { @@ -2104,838 +3278,998 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.CVec_UpdateFailMalformedHTLCZ_free(_res); // debug statements here } - // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_ok(bool o); - export function CResult_boolLightningErrorZ_ok(o: boolean): number { + // struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_ok(struct LDKAcceptChannel o); + export function CResult_AcceptChannelDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_boolLightningErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_AcceptChannelDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_err(struct LDKLightningError e); - export function CResult_boolLightningErrorZ_err(e: number): number { + // struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_AcceptChannelDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_boolLightningErrorZ_err(e); + const nativeResponseValue = wasm.CResult_AcceptChannelDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_boolLightningErrorZ_free(struct LDKCResult_boolLightningErrorZ _res); - export function CResult_boolLightningErrorZ_free(_res: number): void { + // void CResult_AcceptChannelDecodeErrorZ_free(struct LDKCResult_AcceptChannelDecodeErrorZ _res); + export function CResult_AcceptChannelDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_boolLightningErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_AcceptChannelDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_clone(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR orig); - export function CResult_boolLightningErrorZ_clone(orig: number): number { + // struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_clone(const struct LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR orig); + export function CResult_AcceptChannelDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_boolLightningErrorZ_clone(orig); + const nativeResponseValue = wasm.CResult_AcceptChannelDecodeErrorZ_clone(orig); return nativeResponseValue; } - // void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res); - export function C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(_res: number): void { + // struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_ok(struct LDKAnnouncementSignatures o); + export function CResult_AnnouncementSignaturesDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_AnnouncementSignaturesDecodeErrorZ_ok(o); + return nativeResponseValue; } - // struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(struct LDKChannelAnnouncement a, struct LDKChannelUpdate b, struct LDKChannelUpdate c); - export function C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(a: number, b: number, c: number): number { + // struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_AnnouncementSignaturesDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(a, b, c); + const nativeResponseValue = wasm.CResult_AnnouncementSignaturesDecodeErrorZ_err(e); return nativeResponseValue; } - // void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res); - export function CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(_res: number[]): void { + // void CResult_AnnouncementSignaturesDecodeErrorZ_free(struct LDKCResult_AnnouncementSignaturesDecodeErrorZ _res); + export function CResult_AnnouncementSignaturesDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(_res); + const nativeResponseValue = wasm.CResult_AnnouncementSignaturesDecodeErrorZ_free(_res); // debug statements here } - // void CVec_NodeAnnouncementZ_free(struct LDKCVec_NodeAnnouncementZ _res); - export function CVec_NodeAnnouncementZ_free(_res: number[]): void { + // struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_clone(const struct LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR orig); + export function CResult_AnnouncementSignaturesDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_NodeAnnouncementZ_free(_res); + const nativeResponseValue = wasm.CResult_AnnouncementSignaturesDecodeErrorZ_clone(orig); + return nativeResponseValue; + } + // struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_ok(struct LDKChannelReestablish o); + export function CResult_ChannelReestablishDecodeErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelReestablishDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_ChannelReestablishDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelReestablishDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_ChannelReestablishDecodeErrorZ_free(struct LDKCResult_ChannelReestablishDecodeErrorZ _res); + export function CResult_ChannelReestablishDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelReestablishDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_ok(void); - export function CResult_NoneLightningErrorZ_ok(): number { + // struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_clone(const struct LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR orig); + export function CResult_ChannelReestablishDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NoneLightningErrorZ_ok(); + const nativeResponseValue = wasm.CResult_ChannelReestablishDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_err(struct LDKLightningError e); - export function CResult_NoneLightningErrorZ_err(e: number): number { + // struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_ok(struct LDKClosingSigned o); + export function CResult_ClosingSignedDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NoneLightningErrorZ_err(e); + const nativeResponseValue = wasm.CResult_ClosingSignedDecodeErrorZ_ok(o); return nativeResponseValue; } - // void CResult_NoneLightningErrorZ_free(struct LDKCResult_NoneLightningErrorZ _res); - export function CResult_NoneLightningErrorZ_free(_res: number): void { + // struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_ClosingSignedDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NoneLightningErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_ClosingSignedDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_ClosingSignedDecodeErrorZ_free(struct LDKCResult_ClosingSignedDecodeErrorZ _res); + export function CResult_ClosingSignedDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ClosingSignedDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_clone(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR orig); - export function CResult_NoneLightningErrorZ_clone(orig: number): number { + // struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR orig); + export function CResult_ClosingSignedDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NoneLightningErrorZ_clone(orig); + const nativeResponseValue = wasm.CResult_ClosingSignedDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_ok(struct LDKChannelReestablish o); - export function CResult_ChannelReestablishDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_ok(struct LDKCommitmentSigned o); + export function CResult_CommitmentSignedDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ChannelReestablishDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_CommitmentSignedDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_ChannelReestablishDecodeErrorZ_err(e: number): number { + // struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_CommitmentSignedDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ChannelReestablishDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_CommitmentSignedDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_ChannelReestablishDecodeErrorZ_free(struct LDKCResult_ChannelReestablishDecodeErrorZ _res); - export function CResult_ChannelReestablishDecodeErrorZ_free(_res: number): void { + // void CResult_CommitmentSignedDecodeErrorZ_free(struct LDKCResult_CommitmentSignedDecodeErrorZ _res); + export function CResult_CommitmentSignedDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ChannelReestablishDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_CommitmentSignedDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_ok(struct LDKInit o); - export function CResult_InitDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_clone(const struct LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR orig); + export function CResult_CommitmentSignedDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_InitDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_CommitmentSignedDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_InitDecodeErrorZ_err(e: number): number { + // struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_ok(struct LDKFundingCreated o); + export function CResult_FundingCreatedDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_InitDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_FundingCreatedDecodeErrorZ_ok(o); return nativeResponseValue; } - // void CResult_InitDecodeErrorZ_free(struct LDKCResult_InitDecodeErrorZ _res); - export function CResult_InitDecodeErrorZ_free(_res: number): void { + // struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_FundingCreatedDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_InitDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_FundingCreatedDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_FundingCreatedDecodeErrorZ_free(struct LDKCResult_FundingCreatedDecodeErrorZ _res); + export function CResult_FundingCreatedDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_FundingCreatedDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_ok(struct LDKPing o); - export function CResult_PingDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_clone(const struct LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR orig); + export function CResult_FundingCreatedDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_PingDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_FundingCreatedDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_PingDecodeErrorZ_err(e: number): number { + // struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_ok(struct LDKFundingSigned o); + export function CResult_FundingSignedDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_PingDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_FundingSignedDecodeErrorZ_ok(o); return nativeResponseValue; } - // void CResult_PingDecodeErrorZ_free(struct LDKCResult_PingDecodeErrorZ _res); - export function CResult_PingDecodeErrorZ_free(_res: number): void { + // struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_FundingSignedDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_PingDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_FundingSignedDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_FundingSignedDecodeErrorZ_free(struct LDKCResult_FundingSignedDecodeErrorZ _res); + export function CResult_FundingSignedDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_FundingSignedDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_ok(struct LDKPong o); - export function CResult_PongDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_clone(const struct LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR orig); + export function CResult_FundingSignedDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_PongDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_FundingSignedDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_PongDecodeErrorZ_err(e: number): number { + // struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_ok(struct LDKFundingLocked o); + export function CResult_FundingLockedDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_PongDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_FundingLockedDecodeErrorZ_ok(o); return nativeResponseValue; } - // void CResult_PongDecodeErrorZ_free(struct LDKCResult_PongDecodeErrorZ _res); - export function CResult_PongDecodeErrorZ_free(_res: number): void { + // struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_FundingLockedDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_PongDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_FundingLockedDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_FundingLockedDecodeErrorZ_free(struct LDKCResult_FundingLockedDecodeErrorZ _res); + export function CResult_FundingLockedDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_FundingLockedDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(struct LDKUnsignedChannelAnnouncement o); - export function CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_clone(const struct LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR orig); + export function CResult_FundingLockedDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_FundingLockedDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(e: number): number { + // struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_ok(struct LDKInit o); + export function CResult_InitDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_InitDecodeErrorZ_ok(o); return nativeResponseValue; } - // void CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res); - export function CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(_res: number): void { + // struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_InitDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_InitDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_InitDecodeErrorZ_free(struct LDKCResult_InitDecodeErrorZ _res); + export function CResult_InitDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_InitDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_ok(struct LDKUnsignedChannelUpdate o); - export function CResult_UnsignedChannelUpdateDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_clone(const struct LDKCResult_InitDecodeErrorZ *NONNULL_PTR orig); + export function CResult_InitDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_UnsignedChannelUpdateDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_InitDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_UnsignedChannelUpdateDecodeErrorZ_err(e: number): number { + // struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_ok(struct LDKOpenChannel o); + export function CResult_OpenChannelDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_UnsignedChannelUpdateDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_OpenChannelDecodeErrorZ_ok(o); return nativeResponseValue; } - // void CResult_UnsignedChannelUpdateDecodeErrorZ_free(struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res); - export function CResult_UnsignedChannelUpdateDecodeErrorZ_free(_res: number): void { + // struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_OpenChannelDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_UnsignedChannelUpdateDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_OpenChannelDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_OpenChannelDecodeErrorZ_free(struct LDKCResult_OpenChannelDecodeErrorZ _res); + export function CResult_OpenChannelDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_OpenChannelDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_ok(struct LDKErrorMessage o); - export function CResult_ErrorMessageDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_clone(const struct LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR orig); + export function CResult_OpenChannelDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ErrorMessageDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_OpenChannelDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_ErrorMessageDecodeErrorZ_err(e: number): number { + // struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_ok(struct LDKRevokeAndACK o); + export function CResult_RevokeAndACKDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ErrorMessageDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_RevokeAndACKDecodeErrorZ_ok(o); return nativeResponseValue; } - // void CResult_ErrorMessageDecodeErrorZ_free(struct LDKCResult_ErrorMessageDecodeErrorZ _res); - export function CResult_ErrorMessageDecodeErrorZ_free(_res: number): void { + // struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_RevokeAndACKDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ErrorMessageDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_RevokeAndACKDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_RevokeAndACKDecodeErrorZ_free(struct LDKCResult_RevokeAndACKDecodeErrorZ _res); + export function CResult_RevokeAndACKDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_RevokeAndACKDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(struct LDKUnsignedNodeAnnouncement o); - export function CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_clone(const struct LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR orig); + export function CResult_RevokeAndACKDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_RevokeAndACKDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(e: number): number { + // struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_ok(struct LDKShutdown o); + export function CResult_ShutdownDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_ShutdownDecodeErrorZ_ok(o); return nativeResponseValue; } - // void CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res); - export function CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(_res: number): void { + // struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_ShutdownDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_ShutdownDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_ShutdownDecodeErrorZ_free(struct LDKCResult_ShutdownDecodeErrorZ _res); + export function CResult_ShutdownDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ShutdownDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_ok(struct LDKQueryShortChannelIds o); - export function CResult_QueryShortChannelIdsDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_clone(const struct LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR orig); + export function CResult_ShutdownDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_QueryShortChannelIdsDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_ShutdownDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_QueryShortChannelIdsDecodeErrorZ_err(e: number): number { + // struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_ok(struct LDKUpdateFailHTLC o); + export function CResult_UpdateFailHTLCDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_QueryShortChannelIdsDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_UpdateFailHTLCDecodeErrorZ_ok(o); return nativeResponseValue; } - // void CResult_QueryShortChannelIdsDecodeErrorZ_free(struct LDKCResult_QueryShortChannelIdsDecodeErrorZ _res); - export function CResult_QueryShortChannelIdsDecodeErrorZ_free(_res: number): void { + // struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_UpdateFailHTLCDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_QueryShortChannelIdsDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_UpdateFailHTLCDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_UpdateFailHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailHTLCDecodeErrorZ _res); + export function CResult_UpdateFailHTLCDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_UpdateFailHTLCDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(struct LDKReplyShortChannelIdsEnd o); - export function CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR orig); + export function CResult_UpdateFailHTLCDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_UpdateFailHTLCDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(e: number): number { + // struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(struct LDKUpdateFailMalformedHTLC o); + export function CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(o: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(o); + return nativeResponseValue; + } + // struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ _res); + export function CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(_res); + // debug statements here + } + // struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR orig); + export function CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(orig); return nativeResponseValue; } - // void CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res); - export function CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(_res: number): void { + // struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_ok(struct LDKUpdateFee o); + export function CResult_UpdateFeeDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_UpdateFeeDecodeErrorZ_ok(o); + return nativeResponseValue; } - // struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_ok(struct LDKQueryChannelRange o); - export function CResult_QueryChannelRangeDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_UpdateFeeDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_QueryChannelRangeDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_UpdateFeeDecodeErrorZ_err(e); return nativeResponseValue; } - // struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_QueryChannelRangeDecodeErrorZ_err(e: number): number { + // void CResult_UpdateFeeDecodeErrorZ_free(struct LDKCResult_UpdateFeeDecodeErrorZ _res); + export function CResult_UpdateFeeDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_QueryChannelRangeDecodeErrorZ_err(e); - return nativeResponseValue; + const nativeResponseValue = wasm.CResult_UpdateFeeDecodeErrorZ_free(_res); + // debug statements here } - // void CResult_QueryChannelRangeDecodeErrorZ_free(struct LDKCResult_QueryChannelRangeDecodeErrorZ _res); - export function CResult_QueryChannelRangeDecodeErrorZ_free(_res: number): void { + // struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_clone(const struct LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR orig); + export function CResult_UpdateFeeDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_QueryChannelRangeDecodeErrorZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_UpdateFeeDecodeErrorZ_clone(orig); + return nativeResponseValue; } - // struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_ok(struct LDKReplyChannelRange o); - export function CResult_ReplyChannelRangeDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_ok(struct LDKUpdateFulfillHTLC o); + export function CResult_UpdateFulfillHTLCDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ReplyChannelRangeDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_UpdateFulfillHTLCDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_ReplyChannelRangeDecodeErrorZ_err(e: number): number { + // struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_UpdateFulfillHTLCDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ReplyChannelRangeDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_UpdateFulfillHTLCDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_ReplyChannelRangeDecodeErrorZ_free(struct LDKCResult_ReplyChannelRangeDecodeErrorZ _res); - export function CResult_ReplyChannelRangeDecodeErrorZ_free(_res: number): void { + // void CResult_UpdateFulfillHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ _res); + export function CResult_UpdateFulfillHTLCDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_ReplyChannelRangeDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_UpdateFulfillHTLCDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_ok(struct LDKGossipTimestampFilter o); - export function CResult_GossipTimestampFilterDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR orig); + export function CResult_UpdateFulfillHTLCDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_GossipTimestampFilterDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_UpdateFulfillHTLCDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_GossipTimestampFilterDecodeErrorZ_err(e: number): number { + // struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_ok(struct LDKUpdateAddHTLC o); + export function CResult_UpdateAddHTLCDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_GossipTimestampFilterDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_UpdateAddHTLCDecodeErrorZ_ok(o); return nativeResponseValue; } - // void CResult_GossipTimestampFilterDecodeErrorZ_free(struct LDKCResult_GossipTimestampFilterDecodeErrorZ _res); - export function CResult_GossipTimestampFilterDecodeErrorZ_free(_res: number): void { + // struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_UpdateAddHTLCDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_GossipTimestampFilterDecodeErrorZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_UpdateAddHTLCDecodeErrorZ_err(e); + return nativeResponseValue; } - // void CVec_PublicKeyZ_free(struct LDKCVec_PublicKeyZ _res); - export function CVec_PublicKeyZ_free(_res: Uint8Array[]): void { + // void CResult_UpdateAddHTLCDecodeErrorZ_free(struct LDKCResult_UpdateAddHTLCDecodeErrorZ _res); + export function CResult_UpdateAddHTLCDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_PublicKeyZ_free(_res); + const nativeResponseValue = wasm.CResult_UpdateAddHTLCDecodeErrorZ_free(_res); // debug statements here } - // void CVec_u8Z_free(struct LDKCVec_u8Z _res); - export function CVec_u8Z_free(_res: Uint8Array): void { + // struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR orig); + export function CResult_UpdateAddHTLCDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_u8Z_free(encodeArray(_res)); - // debug statements here + const nativeResponseValue = wasm.CResult_UpdateAddHTLCDecodeErrorZ_clone(orig); + return nativeResponseValue; } - // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_ok(struct LDKCVec_u8Z o); - export function CResult_CVec_u8ZPeerHandleErrorZ_ok(o: Uint8Array): number { + // struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_ok(struct LDKPing o); + export function CResult_PingDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_CVec_u8ZPeerHandleErrorZ_ok(encodeArray(o)); + const nativeResponseValue = wasm.CResult_PingDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_err(struct LDKPeerHandleError e); - export function CResult_CVec_u8ZPeerHandleErrorZ_err(e: number): number { + // struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_PingDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_CVec_u8ZPeerHandleErrorZ_err(e); + const nativeResponseValue = wasm.CResult_PingDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_CVec_u8ZPeerHandleErrorZ_free(struct LDKCResult_CVec_u8ZPeerHandleErrorZ _res); - export function CResult_CVec_u8ZPeerHandleErrorZ_free(_res: number): void { + // void CResult_PingDecodeErrorZ_free(struct LDKCResult_PingDecodeErrorZ _res); + export function CResult_PingDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_CVec_u8ZPeerHandleErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_PingDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_clone(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR orig); - export function CResult_CVec_u8ZPeerHandleErrorZ_clone(orig: number): number { + // struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_clone(const struct LDKCResult_PingDecodeErrorZ *NONNULL_PTR orig); + export function CResult_PingDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_CVec_u8ZPeerHandleErrorZ_clone(orig); + const nativeResponseValue = wasm.CResult_PingDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_ok(void); - export function CResult_NonePeerHandleErrorZ_ok(): number { + // struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_ok(struct LDKPong o); + export function CResult_PongDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NonePeerHandleErrorZ_ok(); + const nativeResponseValue = wasm.CResult_PongDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_err(struct LDKPeerHandleError e); - export function CResult_NonePeerHandleErrorZ_err(e: number): number { + // struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_PongDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NonePeerHandleErrorZ_err(e); + const nativeResponseValue = wasm.CResult_PongDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_NonePeerHandleErrorZ_free(struct LDKCResult_NonePeerHandleErrorZ _res); - export function CResult_NonePeerHandleErrorZ_free(_res: number): void { + // void CResult_PongDecodeErrorZ_free(struct LDKCResult_PongDecodeErrorZ _res); + export function CResult_PongDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NonePeerHandleErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_PongDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_clone(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR orig); - export function CResult_NonePeerHandleErrorZ_clone(orig: number): number { + // struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_clone(const struct LDKCResult_PongDecodeErrorZ *NONNULL_PTR orig); + export function CResult_PongDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NonePeerHandleErrorZ_clone(orig); + const nativeResponseValue = wasm.CResult_PongDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_ok(bool o); - export function CResult_boolPeerHandleErrorZ_ok(o: boolean): number { + // struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(struct LDKUnsignedChannelAnnouncement o); + export function CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_boolPeerHandleErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_err(struct LDKPeerHandleError e); - export function CResult_boolPeerHandleErrorZ_err(e: number): number { + // struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_boolPeerHandleErrorZ_err(e); + const nativeResponseValue = wasm.CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_boolPeerHandleErrorZ_free(struct LDKCResult_boolPeerHandleErrorZ _res); - export function CResult_boolPeerHandleErrorZ_free(_res: number): void { + // void CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res); + export function CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_boolPeerHandleErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_clone(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR orig); - export function CResult_boolPeerHandleErrorZ_clone(orig: number): number { + // struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig); + export function CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_boolPeerHandleErrorZ_clone(orig); + const nativeResponseValue = wasm.CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_SecretKeySecpErrorZ CResult_SecretKeySecpErrorZ_ok(struct LDKSecretKey o); - export function CResult_SecretKeySecpErrorZ_ok(o: Uint8Array): number { + // struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_ok(struct LDKChannelAnnouncement o); + export function CResult_ChannelAnnouncementDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_SecretKeySecpErrorZ_ok(encodeArray(o)); + const nativeResponseValue = wasm.CResult_ChannelAnnouncementDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_SecretKeySecpErrorZ CResult_SecretKeySecpErrorZ_err(enum LDKSecp256k1Error e); - export function CResult_SecretKeySecpErrorZ_err(e: LDKSecp256k1Error): number { + // struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_ChannelAnnouncementDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_SecretKeySecpErrorZ_err(e); + const nativeResponseValue = wasm.CResult_ChannelAnnouncementDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_SecretKeySecpErrorZ_free(struct LDKCResult_SecretKeySecpErrorZ _res); - export function CResult_SecretKeySecpErrorZ_free(_res: number): void { + // void CResult_ChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_ChannelAnnouncementDecodeErrorZ _res); + export function CResult_ChannelAnnouncementDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_SecretKeySecpErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_ChannelAnnouncementDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_PublicKeySecpErrorZ CResult_PublicKeySecpErrorZ_ok(struct LDKPublicKey o); - export function CResult_PublicKeySecpErrorZ_ok(o: Uint8Array): number { + // struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig); + export function CResult_ChannelAnnouncementDecodeErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ChannelAnnouncementDecodeErrorZ_clone(orig); + return nativeResponseValue; + } + // struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_ok(struct LDKUnsignedChannelUpdate o); + export function CResult_UnsignedChannelUpdateDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_PublicKeySecpErrorZ_ok(encodeArray(o)); + const nativeResponseValue = wasm.CResult_UnsignedChannelUpdateDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_PublicKeySecpErrorZ CResult_PublicKeySecpErrorZ_err(enum LDKSecp256k1Error e); - export function CResult_PublicKeySecpErrorZ_err(e: LDKSecp256k1Error): number { + // struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_UnsignedChannelUpdateDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_PublicKeySecpErrorZ_err(e); + const nativeResponseValue = wasm.CResult_UnsignedChannelUpdateDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_PublicKeySecpErrorZ_free(struct LDKCResult_PublicKeySecpErrorZ _res); - export function CResult_PublicKeySecpErrorZ_free(_res: number): void { + // void CResult_UnsignedChannelUpdateDecodeErrorZ_free(struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res); + export function CResult_UnsignedChannelUpdateDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_PublicKeySecpErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_UnsignedChannelUpdateDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_TxCreationKeysSecpErrorZ CResult_TxCreationKeysSecpErrorZ_ok(struct LDKTxCreationKeys o); - export function CResult_TxCreationKeysSecpErrorZ_ok(o: number): number { + // struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR orig); + export function CResult_UnsignedChannelUpdateDecodeErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_UnsignedChannelUpdateDecodeErrorZ_clone(orig); + return nativeResponseValue; + } + // struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_ok(struct LDKChannelUpdate o); + export function CResult_ChannelUpdateDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_TxCreationKeysSecpErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_ChannelUpdateDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_TxCreationKeysSecpErrorZ CResult_TxCreationKeysSecpErrorZ_err(enum LDKSecp256k1Error e); - export function CResult_TxCreationKeysSecpErrorZ_err(e: LDKSecp256k1Error): number { + // struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_ChannelUpdateDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_TxCreationKeysSecpErrorZ_err(e); + const nativeResponseValue = wasm.CResult_ChannelUpdateDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_TxCreationKeysSecpErrorZ_free(struct LDKCResult_TxCreationKeysSecpErrorZ _res); - export function CResult_TxCreationKeysSecpErrorZ_free(_res: number): void { + // void CResult_ChannelUpdateDecodeErrorZ_free(struct LDKCResult_ChannelUpdateDecodeErrorZ _res); + export function CResult_ChannelUpdateDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_TxCreationKeysSecpErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_ChannelUpdateDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_ok(struct LDKTrustedCommitmentTransaction o); - export function CResult_TrustedCommitmentTransactionNoneZ_ok(o: number): number { + // struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR orig); + export function CResult_ChannelUpdateDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_TrustedCommitmentTransactionNoneZ_ok(o); + const nativeResponseValue = wasm.CResult_ChannelUpdateDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_err(void); - export function CResult_TrustedCommitmentTransactionNoneZ_err(): number { + // struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_ok(struct LDKErrorMessage o); + export function CResult_ErrorMessageDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_TrustedCommitmentTransactionNoneZ_err(); + const nativeResponseValue = wasm.CResult_ErrorMessageDecodeErrorZ_ok(o); return nativeResponseValue; } - // void CResult_TrustedCommitmentTransactionNoneZ_free(struct LDKCResult_TrustedCommitmentTransactionNoneZ _res); - export function CResult_TrustedCommitmentTransactionNoneZ_free(_res: number): void { + // struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_ErrorMessageDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_TrustedCommitmentTransactionNoneZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_ErrorMessageDecodeErrorZ_err(e); + return nativeResponseValue; } - // struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_ok(struct LDKCVec_SignatureZ o); - export function CResult_CVec_SignatureZNoneZ_ok(o: Uint8Array[]): number { + // void CResult_ErrorMessageDecodeErrorZ_free(struct LDKCResult_ErrorMessageDecodeErrorZ _res); + export function CResult_ErrorMessageDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_CVec_SignatureZNoneZ_ok(o); - return nativeResponseValue; + const nativeResponseValue = wasm.CResult_ErrorMessageDecodeErrorZ_free(_res); + // debug statements here } - // struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_err(void); - export function CResult_CVec_SignatureZNoneZ_err(): number { + // struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_clone(const struct LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR orig); + export function CResult_ErrorMessageDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_CVec_SignatureZNoneZ_err(); + const nativeResponseValue = wasm.CResult_ErrorMessageDecodeErrorZ_clone(orig); return nativeResponseValue; } - // void CResult_CVec_SignatureZNoneZ_free(struct LDKCResult_CVec_SignatureZNoneZ _res); - export function CResult_CVec_SignatureZNoneZ_free(_res: number): void { + // struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(struct LDKUnsignedNodeAnnouncement o); + export function CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_CVec_SignatureZNoneZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(o); + return nativeResponseValue; } - // struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_clone(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR orig); - export function CResult_CVec_SignatureZNoneZ_clone(orig: number): number { + // struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_CVec_SignatureZNoneZ_clone(orig); + const nativeResponseValue = wasm.CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(e); return nativeResponseValue; } - // void CVec_RouteHopZ_free(struct LDKCVec_RouteHopZ _res); - export function CVec_RouteHopZ_free(_res: number[]): void { + // void CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res); + export function CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_RouteHopZ_free(_res); + const nativeResponseValue = wasm.CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(_res); // debug statements here } - // void CVec_CVec_RouteHopZZ_free(struct LDKCVec_CVec_RouteHopZZ _res); - export function CVec_CVec_RouteHopZZ_free(_res: number[][]): void { + // struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR orig); + export function CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_CVec_RouteHopZZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(orig); + return nativeResponseValue; } - // struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_ok(struct LDKRoute o); - export function CResult_RouteDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_ok(struct LDKNodeAnnouncement o); + export function CResult_NodeAnnouncementDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_RouteDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_NodeAnnouncementDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_RouteDecodeErrorZ_err(e: number): number { + // struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_NodeAnnouncementDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_RouteDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_NodeAnnouncementDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_RouteDecodeErrorZ_free(struct LDKCResult_RouteDecodeErrorZ _res); - export function CResult_RouteDecodeErrorZ_free(_res: number): void { + // void CResult_NodeAnnouncementDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementDecodeErrorZ _res); + export function CResult_NodeAnnouncementDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_RouteDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_NodeAnnouncementDecodeErrorZ_free(_res); // debug statements here } - // void CVec_RouteHintZ_free(struct LDKCVec_RouteHintZ _res); - export function CVec_RouteHintZ_free(_res: number[]): void { + // struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR orig); + export function CResult_NodeAnnouncementDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CVec_RouteHintZ_free(_res); - // debug statements here + const nativeResponseValue = wasm.CResult_NodeAnnouncementDecodeErrorZ_clone(orig); + return nativeResponseValue; } - // struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_ok(struct LDKRoute o); - export function CResult_RouteLightningErrorZ_ok(o: number): number { + // struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_ok(struct LDKQueryShortChannelIds o); + export function CResult_QueryShortChannelIdsDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_RouteLightningErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_QueryShortChannelIdsDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_err(struct LDKLightningError e); - export function CResult_RouteLightningErrorZ_err(e: number): number { + // struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_QueryShortChannelIdsDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_RouteLightningErrorZ_err(e); + const nativeResponseValue = wasm.CResult_QueryShortChannelIdsDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_RouteLightningErrorZ_free(struct LDKCResult_RouteLightningErrorZ _res); - export function CResult_RouteLightningErrorZ_free(_res: number): void { + // void CResult_QueryShortChannelIdsDecodeErrorZ_free(struct LDKCResult_QueryShortChannelIdsDecodeErrorZ _res); + export function CResult_QueryShortChannelIdsDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_RouteLightningErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_QueryShortChannelIdsDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_ok(struct LDKRoutingFees o); - export function CResult_RoutingFeesDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_clone(const struct LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR orig); + export function CResult_QueryShortChannelIdsDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_RoutingFeesDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_QueryShortChannelIdsDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_RoutingFeesDecodeErrorZ_err(e: number): number { + // struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(struct LDKReplyShortChannelIdsEnd o); + export function CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_RoutingFeesDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(o); return nativeResponseValue; } - // void CResult_RoutingFeesDecodeErrorZ_free(struct LDKCResult_RoutingFeesDecodeErrorZ _res); - export function CResult_RoutingFeesDecodeErrorZ_free(_res: number): void { + // struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_RoutingFeesDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res); + export function CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(_res: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_ok(struct LDKNodeAnnouncementInfo o); - export function CResult_NodeAnnouncementInfoDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(const struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR orig); + export function CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NodeAnnouncementInfoDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_NodeAnnouncementInfoDecodeErrorZ_err(e: number): number { + // struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_ok(struct LDKQueryChannelRange o); + export function CResult_QueryChannelRangeDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NodeAnnouncementInfoDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_QueryChannelRangeDecodeErrorZ_ok(o); return nativeResponseValue; } - // void CResult_NodeAnnouncementInfoDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res); - export function CResult_NodeAnnouncementInfoDecodeErrorZ_free(_res: number): void { + // struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_QueryChannelRangeDecodeErrorZ_err(e: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_QueryChannelRangeDecodeErrorZ_err(e); + return nativeResponseValue; + } + // void CResult_QueryChannelRangeDecodeErrorZ_free(struct LDKCResult_QueryChannelRangeDecodeErrorZ _res); + export function CResult_QueryChannelRangeDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NodeAnnouncementInfoDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_QueryChannelRangeDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR orig); - export function CResult_NodeAnnouncementInfoDecodeErrorZ_clone(orig: number): number { + // struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_clone(const struct LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR orig); + export function CResult_QueryChannelRangeDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NodeAnnouncementInfoDecodeErrorZ_clone(orig); + const nativeResponseValue = wasm.CResult_QueryChannelRangeDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_ok(struct LDKNodeInfo o); - export function CResult_NodeInfoDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_ok(struct LDKReplyChannelRange o); + export function CResult_ReplyChannelRangeDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NodeInfoDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_ReplyChannelRangeDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_NodeInfoDecodeErrorZ_err(e: number): number { + // struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_ReplyChannelRangeDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NodeInfoDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_ReplyChannelRangeDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_NodeInfoDecodeErrorZ_free(struct LDKCResult_NodeInfoDecodeErrorZ _res); - export function CResult_NodeInfoDecodeErrorZ_free(_res: number): void { + // void CResult_ReplyChannelRangeDecodeErrorZ_free(struct LDKCResult_ReplyChannelRangeDecodeErrorZ _res); + export function CResult_ReplyChannelRangeDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NodeInfoDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_ReplyChannelRangeDecodeErrorZ_free(_res); // debug statements here } - // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_clone(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR orig); - export function CResult_NodeInfoDecodeErrorZ_clone(orig: number): number { + // struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_clone(const struct LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR orig); + export function CResult_ReplyChannelRangeDecodeErrorZ_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NodeInfoDecodeErrorZ_clone(orig); + const nativeResponseValue = wasm.CResult_ReplyChannelRangeDecodeErrorZ_clone(orig); return nativeResponseValue; } - // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_ok(struct LDKNetworkGraph o); - export function CResult_NetworkGraphDecodeErrorZ_ok(o: number): number { + // struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_ok(struct LDKGossipTimestampFilter o); + export function CResult_GossipTimestampFilterDecodeErrorZ_ok(o: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NetworkGraphDecodeErrorZ_ok(o); + const nativeResponseValue = wasm.CResult_GossipTimestampFilterDecodeErrorZ_ok(o); return nativeResponseValue; } - // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_err(struct LDKDecodeError e); - export function CResult_NetworkGraphDecodeErrorZ_err(e: number): number { + // struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_err(struct LDKDecodeError e); + export function CResult_GossipTimestampFilterDecodeErrorZ_err(e: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NetworkGraphDecodeErrorZ_err(e); + const nativeResponseValue = wasm.CResult_GossipTimestampFilterDecodeErrorZ_err(e); return nativeResponseValue; } - // void CResult_NetworkGraphDecodeErrorZ_free(struct LDKCResult_NetworkGraphDecodeErrorZ _res); - export function CResult_NetworkGraphDecodeErrorZ_free(_res: number): void { + // void CResult_GossipTimestampFilterDecodeErrorZ_free(struct LDKCResult_GossipTimestampFilterDecodeErrorZ _res); + export function CResult_GossipTimestampFilterDecodeErrorZ_free(_res: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CResult_NetworkGraphDecodeErrorZ_free(_res); + const nativeResponseValue = wasm.CResult_GossipTimestampFilterDecodeErrorZ_free(_res); // debug statements here } + // struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_clone(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR orig); + export function CResult_GossipTimestampFilterDecodeErrorZ_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CResult_GossipTimestampFilterDecodeErrorZ_clone(orig); + return nativeResponseValue; + } // void Event_free(struct LDKEvent this_ptr); export function Event_free(this_ptr: number): void { if(!isWasmInitialized) { @@ -3040,14 +4374,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelHandshakeConfig_free(this_ptr); // debug statements here } - // struct LDKChannelHandshakeConfig ChannelHandshakeConfig_clone(const struct LDKChannelHandshakeConfig *NONNULL_PTR orig); - export function ChannelHandshakeConfig_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.ChannelHandshakeConfig_clone(orig); - return nativeResponseValue; - } // uint32_t ChannelHandshakeConfig_get_minimum_depth(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr); export function ChannelHandshakeConfig_get_minimum_depth(this_ptr: number): number { if(!isWasmInitialized) { @@ -3104,6 +4430,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelHandshakeConfig_new(minimum_depth_arg, our_to_self_delay_arg, our_htlc_minimum_msat_arg); return nativeResponseValue; } + // struct LDKChannelHandshakeConfig ChannelHandshakeConfig_clone(const struct LDKChannelHandshakeConfig *NONNULL_PTR orig); + export function ChannelHandshakeConfig_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.ChannelHandshakeConfig_clone(orig); + return nativeResponseValue; + } // MUST_USE_RES struct LDKChannelHandshakeConfig ChannelHandshakeConfig_default(void); export function ChannelHandshakeConfig_default(): number { if(!isWasmInitialized) { @@ -3120,14 +4454,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelHandshakeLimits_free(this_ptr); // debug statements here } - // struct LDKChannelHandshakeLimits ChannelHandshakeLimits_clone(const struct LDKChannelHandshakeLimits *NONNULL_PTR orig); - export function ChannelHandshakeLimits_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.ChannelHandshakeLimits_clone(orig); - return nativeResponseValue; - } // uint64_t ChannelHandshakeLimits_get_min_funding_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr); export function ChannelHandshakeLimits_get_min_funding_satoshis(this_ptr: number): number { if(!isWasmInitialized) { @@ -3296,6 +4622,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelHandshakeLimits_new(min_funding_satoshis_arg, max_htlc_minimum_msat_arg, min_max_htlc_value_in_flight_msat_arg, max_channel_reserve_satoshis_arg, min_max_accepted_htlcs_arg, min_dust_limit_satoshis_arg, max_dust_limit_satoshis_arg, max_minimum_depth_arg, force_announced_channel_preference_arg, their_to_self_delay_arg); return nativeResponseValue; } + // struct LDKChannelHandshakeLimits ChannelHandshakeLimits_clone(const struct LDKChannelHandshakeLimits *NONNULL_PTR orig); + export function ChannelHandshakeLimits_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.ChannelHandshakeLimits_clone(orig); + return nativeResponseValue; + } // MUST_USE_RES struct LDKChannelHandshakeLimits ChannelHandshakeLimits_default(void); export function ChannelHandshakeLimits_default(): number { if(!isWasmInitialized) { @@ -3312,14 +4646,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelConfig_free(this_ptr); // debug statements here } - // struct LDKChannelConfig ChannelConfig_clone(const struct LDKChannelConfig *NONNULL_PTR orig); - export function ChannelConfig_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.ChannelConfig_clone(orig); - return nativeResponseValue; - } // uint32_t ChannelConfig_get_fee_proportional_millionths(const struct LDKChannelConfig *NONNULL_PTR this_ptr); export function ChannelConfig_get_fee_proportional_millionths(this_ptr: number): number { if(!isWasmInitialized) { @@ -3376,6 +4702,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelConfig_new(fee_proportional_millionths_arg, announced_channel_arg, commit_upfront_shutdown_pubkey_arg); return nativeResponseValue; } + // struct LDKChannelConfig ChannelConfig_clone(const struct LDKChannelConfig *NONNULL_PTR orig); + export function ChannelConfig_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.ChannelConfig_clone(orig); + return nativeResponseValue; + } // MUST_USE_RES struct LDKChannelConfig ChannelConfig_default(void); export function ChannelConfig_default(): number { if(!isWasmInitialized) { @@ -3392,7 +4726,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelConfig_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKChannelConfig ChannelConfig_read(struct LDKu8slice ser); + // struct LDKCResult_ChannelConfigDecodeErrorZ ChannelConfig_read(struct LDKu8slice ser); export function ChannelConfig_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -3408,14 +4742,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.UserConfig_free(this_ptr); // debug statements here } - // struct LDKUserConfig UserConfig_clone(const struct LDKUserConfig *NONNULL_PTR orig); - export function UserConfig_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.UserConfig_clone(orig); - return nativeResponseValue; - } // struct LDKChannelHandshakeConfig UserConfig_get_own_channel_config(const struct LDKUserConfig *NONNULL_PTR this_ptr); export function UserConfig_get_own_channel_config(this_ptr: number): number { if(!isWasmInitialized) { @@ -3472,6 +4798,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.UserConfig_new(own_channel_config_arg, peer_channel_config_limits_arg, channel_options_arg); return nativeResponseValue; } + // struct LDKUserConfig UserConfig_clone(const struct LDKUserConfig *NONNULL_PTR orig); + export function UserConfig_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.UserConfig_clone(orig); + return nativeResponseValue; + } // MUST_USE_RES struct LDKUserConfig UserConfig_default(void); export function UserConfig_default(): number { if(!isWasmInitialized) { @@ -3592,14 +4926,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelMonitorUpdate_free(this_ptr); // debug statements here } - // struct LDKChannelMonitorUpdate ChannelMonitorUpdate_clone(const struct LDKChannelMonitorUpdate *NONNULL_PTR orig); - export function ChannelMonitorUpdate_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.ChannelMonitorUpdate_clone(orig); - return nativeResponseValue; - } // uint64_t ChannelMonitorUpdate_get_update_id(const struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr); export function ChannelMonitorUpdate_get_update_id(this_ptr: number): number { if(!isWasmInitialized) { @@ -3616,6 +4942,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelMonitorUpdate_set_update_id(this_ptr, val); // debug statements here } + // struct LDKChannelMonitorUpdate ChannelMonitorUpdate_clone(const struct LDKChannelMonitorUpdate *NONNULL_PTR orig); + export function ChannelMonitorUpdate_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.ChannelMonitorUpdate_clone(orig); + return nativeResponseValue; + } // struct LDKCVec_u8Z ChannelMonitorUpdate_write(const struct LDKChannelMonitorUpdate *NONNULL_PTR obj); export function ChannelMonitorUpdate_write(obj: number): Uint8Array { if(!isWasmInitialized) { @@ -3696,7 +5030,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.HTLCUpdate_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKHTLCUpdate HTLCUpdate_read(struct LDKu8slice ser); + // struct LDKCResult_HTLCUpdateDecodeErrorZ HTLCUpdate_read(struct LDKu8slice ser); export function HTLCUpdate_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -3816,14 +5150,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.OutPoint_free(this_ptr); // debug statements here } - // struct LDKOutPoint OutPoint_clone(const struct LDKOutPoint *NONNULL_PTR orig); - export function OutPoint_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.OutPoint_clone(orig); - return nativeResponseValue; - } // const uint8_t (*OutPoint_get_txid(const struct LDKOutPoint *NONNULL_PTR this_ptr))[32]; export function OutPoint_get_txid(this_ptr: number): Uint8Array { if(!isWasmInitialized) { @@ -3864,6 +5190,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.OutPoint_new(encodeArray(txid_arg), index_arg); return nativeResponseValue; } + // struct LDKOutPoint OutPoint_clone(const struct LDKOutPoint *NONNULL_PTR orig); + export function OutPoint_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.OutPoint_clone(orig); + return nativeResponseValue; + } // MUST_USE_RES struct LDKThirtyTwoBytes OutPoint_to_channel_id(const struct LDKOutPoint *NONNULL_PTR this_arg); export function OutPoint_to_channel_id(this_arg: number): Uint8Array { if(!isWasmInitialized) { @@ -3880,7 +5214,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.OutPoint_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKOutPoint OutPoint_read(struct LDKu8slice ser); + // struct LDKCResult_OutPointDecodeErrorZ OutPoint_read(struct LDKu8slice ser); export function OutPoint_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -3952,14 +5286,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.InMemoryChannelKeys_free(this_ptr); // debug statements here } - // struct LDKInMemoryChannelKeys InMemoryChannelKeys_clone(const struct LDKInMemoryChannelKeys *NONNULL_PTR orig); - export function InMemoryChannelKeys_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.InMemoryChannelKeys_clone(orig); - return nativeResponseValue; - } // const uint8_t (*InMemoryChannelKeys_get_funding_key(const struct LDKInMemoryChannelKeys *NONNULL_PTR this_ptr))[32]; export function InMemoryChannelKeys_get_funding_key(this_ptr: number): Uint8Array { if(!isWasmInitialized) { @@ -4056,6 +5382,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.InMemoryChannelKeys_set_commitment_seed(this_ptr, encodeArray(val)); // debug statements here } + // struct LDKInMemoryChannelKeys InMemoryChannelKeys_clone(const struct LDKInMemoryChannelKeys *NONNULL_PTR orig); + export function InMemoryChannelKeys_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.InMemoryChannelKeys_clone(orig); + return nativeResponseValue; + } // MUST_USE_RES struct LDKInMemoryChannelKeys InMemoryChannelKeys_new(struct LDKSecretKey funding_key, struct LDKSecretKey revocation_base_key, struct LDKSecretKey payment_key, struct LDKSecretKey delayed_payment_base_key, struct LDKSecretKey htlc_base_key, struct LDKThirtyTwoBytes commitment_seed, uint64_t channel_value_satoshis, struct LDKC2Tuple_u64u64Z key_derivation_params); export function InMemoryChannelKeys_new(funding_key: Uint8Array, revocation_base_key: Uint8Array, payment_key: Uint8Array, delayed_payment_base_key: Uint8Array, htlc_base_key: Uint8Array, commitment_seed: Uint8Array, channel_value_satoshis: number, key_derivation_params: number): number { if(!isWasmInitialized) { @@ -4184,14 +5518,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelDetails_free(this_ptr); // debug statements here } - // struct LDKChannelDetails ChannelDetails_clone(const struct LDKChannelDetails *NONNULL_PTR orig); - export function ChannelDetails_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.ChannelDetails_clone(orig); - return nativeResponseValue; - } // const uint8_t (*ChannelDetails_get_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr))[32]; export function ChannelDetails_get_channel_id(this_ptr: number): Uint8Array { if(!isWasmInitialized) { @@ -4320,6 +5646,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelDetails_set_is_live(this_ptr, val); // debug statements here } + // struct LDKChannelDetails ChannelDetails_clone(const struct LDKChannelDetails *NONNULL_PTR orig); + export function ChannelDetails_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.ChannelDetails_clone(orig); + return nativeResponseValue; + } // void PaymentSendFailure_free(struct LDKPaymentSendFailure this_ptr); export function PaymentSendFailure_free(this_ptr: number): void { if(!isWasmInitialized) { @@ -4672,14 +6006,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ErrorMessage_free(this_ptr); // debug statements here } - // struct LDKErrorMessage ErrorMessage_clone(const struct LDKErrorMessage *NONNULL_PTR orig); - export function ErrorMessage_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.ErrorMessage_clone(orig); - return nativeResponseValue; - } // const uint8_t (*ErrorMessage_get_channel_id(const struct LDKErrorMessage *NONNULL_PTR this_ptr))[32]; export function ErrorMessage_get_channel_id(this_ptr: number): Uint8Array { if(!isWasmInitialized) { @@ -4720,21 +6046,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ErrorMessage_new(encodeArray(channel_id_arg), encodeArray(data_arg)); return nativeResponseValue; } - // void Ping_free(struct LDKPing this_ptr); - export function Ping_free(this_ptr: number): void { + // struct LDKErrorMessage ErrorMessage_clone(const struct LDKErrorMessage *NONNULL_PTR orig); + export function ErrorMessage_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.Ping_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.ErrorMessage_clone(orig); + return nativeResponseValue; } - // struct LDKPing Ping_clone(const struct LDKPing *NONNULL_PTR orig); - export function Ping_clone(orig: number): number { + // void Ping_free(struct LDKPing this_ptr); + export function Ping_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.Ping_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.Ping_free(this_ptr); + // debug statements here } // uint16_t Ping_get_ponglen(const struct LDKPing *NONNULL_PTR this_ptr); export function Ping_get_ponglen(this_ptr: number): number { @@ -4776,21 +6102,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.Ping_new(ponglen_arg, byteslen_arg); return nativeResponseValue; } - // void Pong_free(struct LDKPong this_ptr); - export function Pong_free(this_ptr: number): void { + // struct LDKPing Ping_clone(const struct LDKPing *NONNULL_PTR orig); + export function Ping_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.Pong_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.Ping_clone(orig); + return nativeResponseValue; } - // struct LDKPong Pong_clone(const struct LDKPong *NONNULL_PTR orig); - export function Pong_clone(orig: number): number { + // void Pong_free(struct LDKPong this_ptr); + export function Pong_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.Pong_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.Pong_free(this_ptr); + // debug statements here } // uint16_t Pong_get_byteslen(const struct LDKPong *NONNULL_PTR this_ptr); export function Pong_get_byteslen(this_ptr: number): number { @@ -4816,21 +6142,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.Pong_new(byteslen_arg); return nativeResponseValue; } - // void OpenChannel_free(struct LDKOpenChannel this_ptr); - export function OpenChannel_free(this_ptr: number): void { + // struct LDKPong Pong_clone(const struct LDKPong *NONNULL_PTR orig); + export function Pong_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.OpenChannel_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.Pong_clone(orig); + return nativeResponseValue; } - // struct LDKOpenChannel OpenChannel_clone(const struct LDKOpenChannel *NONNULL_PTR orig); - export function OpenChannel_clone(orig: number): number { + // void OpenChannel_free(struct LDKOpenChannel this_ptr); + export function OpenChannel_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.OpenChannel_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.OpenChannel_free(this_ptr); + // debug statements here } // const uint8_t (*OpenChannel_get_chain_hash(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32]; export function OpenChannel_get_chain_hash(this_ptr: number): Uint8Array { @@ -5120,21 +6446,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.OpenChannel_set_channel_flags(this_ptr, val); // debug statements here } - // void AcceptChannel_free(struct LDKAcceptChannel this_ptr); - export function AcceptChannel_free(this_ptr: number): void { + // struct LDKOpenChannel OpenChannel_clone(const struct LDKOpenChannel *NONNULL_PTR orig); + export function OpenChannel_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.AcceptChannel_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.OpenChannel_clone(orig); + return nativeResponseValue; } - // struct LDKAcceptChannel AcceptChannel_clone(const struct LDKAcceptChannel *NONNULL_PTR orig); - export function AcceptChannel_clone(orig: number): number { + // void AcceptChannel_free(struct LDKAcceptChannel this_ptr); + export function AcceptChannel_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.AcceptChannel_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.AcceptChannel_free(this_ptr); + // debug statements here } // const uint8_t (*AcceptChannel_get_temporary_channel_id(const struct LDKAcceptChannel *NONNULL_PTR this_ptr))[32]; export function AcceptChannel_get_temporary_channel_id(this_ptr: number): Uint8Array { @@ -5360,6 +6686,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.AcceptChannel_set_first_per_commitment_point(this_ptr, encodeArray(val)); // debug statements here } + // struct LDKAcceptChannel AcceptChannel_clone(const struct LDKAcceptChannel *NONNULL_PTR orig); + export function AcceptChannel_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.AcceptChannel_clone(orig); + return nativeResponseValue; + } // void FundingCreated_free(struct LDKFundingCreated this_ptr); export function FundingCreated_free(this_ptr: number): void { if(!isWasmInitialized) { @@ -5368,14 +6702,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.FundingCreated_free(this_ptr); // debug statements here } - // struct LDKFundingCreated FundingCreated_clone(const struct LDKFundingCreated *NONNULL_PTR orig); - export function FundingCreated_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.FundingCreated_clone(orig); - return nativeResponseValue; - } // const uint8_t (*FundingCreated_get_temporary_channel_id(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32]; export function FundingCreated_get_temporary_channel_id(this_ptr: number): Uint8Array { if(!isWasmInitialized) { @@ -5448,21 +6774,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.FundingCreated_new(encodeArray(temporary_channel_id_arg), encodeArray(funding_txid_arg), funding_output_index_arg, encodeArray(signature_arg)); return nativeResponseValue; } - // void FundingSigned_free(struct LDKFundingSigned this_ptr); - export function FundingSigned_free(this_ptr: number): void { + // struct LDKFundingCreated FundingCreated_clone(const struct LDKFundingCreated *NONNULL_PTR orig); + export function FundingCreated_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.FundingSigned_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.FundingCreated_clone(orig); + return nativeResponseValue; } - // struct LDKFundingSigned FundingSigned_clone(const struct LDKFundingSigned *NONNULL_PTR orig); - export function FundingSigned_clone(orig: number): number { + // void FundingSigned_free(struct LDKFundingSigned this_ptr); + export function FundingSigned_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.FundingSigned_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.FundingSigned_free(this_ptr); + // debug statements here } // const uint8_t (*FundingSigned_get_channel_id(const struct LDKFundingSigned *NONNULL_PTR this_ptr))[32]; export function FundingSigned_get_channel_id(this_ptr: number): Uint8Array { @@ -5504,21 +6830,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.FundingSigned_new(encodeArray(channel_id_arg), encodeArray(signature_arg)); return nativeResponseValue; } - // void FundingLocked_free(struct LDKFundingLocked this_ptr); - export function FundingLocked_free(this_ptr: number): void { + // struct LDKFundingSigned FundingSigned_clone(const struct LDKFundingSigned *NONNULL_PTR orig); + export function FundingSigned_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.FundingLocked_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.FundingSigned_clone(orig); + return nativeResponseValue; } - // struct LDKFundingLocked FundingLocked_clone(const struct LDKFundingLocked *NONNULL_PTR orig); - export function FundingLocked_clone(orig: number): number { + // void FundingLocked_free(struct LDKFundingLocked this_ptr); + export function FundingLocked_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.FundingLocked_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.FundingLocked_free(this_ptr); + // debug statements here } // const uint8_t (*FundingLocked_get_channel_id(const struct LDKFundingLocked *NONNULL_PTR this_ptr))[32]; export function FundingLocked_get_channel_id(this_ptr: number): Uint8Array { @@ -5560,21 +6886,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.FundingLocked_new(encodeArray(channel_id_arg), encodeArray(next_per_commitment_point_arg)); return nativeResponseValue; } - // void Shutdown_free(struct LDKShutdown this_ptr); - export function Shutdown_free(this_ptr: number): void { + // struct LDKFundingLocked FundingLocked_clone(const struct LDKFundingLocked *NONNULL_PTR orig); + export function FundingLocked_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.Shutdown_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.FundingLocked_clone(orig); + return nativeResponseValue; } - // struct LDKShutdown Shutdown_clone(const struct LDKShutdown *NONNULL_PTR orig); - export function Shutdown_clone(orig: number): number { + // void Shutdown_free(struct LDKShutdown this_ptr); + export function Shutdown_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.Shutdown_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.Shutdown_free(this_ptr); + // debug statements here } // const uint8_t (*Shutdown_get_channel_id(const struct LDKShutdown *NONNULL_PTR this_ptr))[32]; export function Shutdown_get_channel_id(this_ptr: number): Uint8Array { @@ -5616,21 +6942,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.Shutdown_new(encodeArray(channel_id_arg), encodeArray(scriptpubkey_arg)); return nativeResponseValue; } - // void ClosingSigned_free(struct LDKClosingSigned this_ptr); - export function ClosingSigned_free(this_ptr: number): void { + // struct LDKShutdown Shutdown_clone(const struct LDKShutdown *NONNULL_PTR orig); + export function Shutdown_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.ClosingSigned_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.Shutdown_clone(orig); + return nativeResponseValue; } - // struct LDKClosingSigned ClosingSigned_clone(const struct LDKClosingSigned *NONNULL_PTR orig); - export function ClosingSigned_clone(orig: number): number { + // void ClosingSigned_free(struct LDKClosingSigned this_ptr); + export function ClosingSigned_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.ClosingSigned_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.ClosingSigned_free(this_ptr); + // debug statements here } // const uint8_t (*ClosingSigned_get_channel_id(const struct LDKClosingSigned *NONNULL_PTR this_ptr))[32]; export function ClosingSigned_get_channel_id(this_ptr: number): Uint8Array { @@ -5688,21 +7014,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ClosingSigned_new(encodeArray(channel_id_arg), fee_satoshis_arg, encodeArray(signature_arg)); return nativeResponseValue; } - // void UpdateAddHTLC_free(struct LDKUpdateAddHTLC this_ptr); - export function UpdateAddHTLC_free(this_ptr: number): void { + // struct LDKClosingSigned ClosingSigned_clone(const struct LDKClosingSigned *NONNULL_PTR orig); + export function ClosingSigned_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.UpdateAddHTLC_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.ClosingSigned_clone(orig); + return nativeResponseValue; } - // struct LDKUpdateAddHTLC UpdateAddHTLC_clone(const struct LDKUpdateAddHTLC *NONNULL_PTR orig); - export function UpdateAddHTLC_clone(orig: number): number { + // void UpdateAddHTLC_free(struct LDKUpdateAddHTLC this_ptr); + export function UpdateAddHTLC_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.UpdateAddHTLC_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.UpdateAddHTLC_free(this_ptr); + // debug statements here } // const uint8_t (*UpdateAddHTLC_get_channel_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32]; export function UpdateAddHTLC_get_channel_id(this_ptr: number): Uint8Array { @@ -5784,21 +7110,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.UpdateAddHTLC_set_cltv_expiry(this_ptr, val); // debug statements here } - // void UpdateFulfillHTLC_free(struct LDKUpdateFulfillHTLC this_ptr); - export function UpdateFulfillHTLC_free(this_ptr: number): void { + // struct LDKUpdateAddHTLC UpdateAddHTLC_clone(const struct LDKUpdateAddHTLC *NONNULL_PTR orig); + export function UpdateAddHTLC_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.UpdateFulfillHTLC_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.UpdateAddHTLC_clone(orig); + return nativeResponseValue; } - // struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_clone(const struct LDKUpdateFulfillHTLC *NONNULL_PTR orig); - export function UpdateFulfillHTLC_clone(orig: number): number { + // void UpdateFulfillHTLC_free(struct LDKUpdateFulfillHTLC this_ptr); + export function UpdateFulfillHTLC_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.UpdateFulfillHTLC_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.UpdateFulfillHTLC_free(this_ptr); + // debug statements here } // const uint8_t (*UpdateFulfillHTLC_get_channel_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32]; export function UpdateFulfillHTLC_get_channel_id(this_ptr: number): Uint8Array { @@ -5856,21 +7182,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.UpdateFulfillHTLC_new(encodeArray(channel_id_arg), htlc_id_arg, encodeArray(payment_preimage_arg)); return nativeResponseValue; } - // void UpdateFailHTLC_free(struct LDKUpdateFailHTLC this_ptr); - export function UpdateFailHTLC_free(this_ptr: number): void { + // struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_clone(const struct LDKUpdateFulfillHTLC *NONNULL_PTR orig); + export function UpdateFulfillHTLC_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.UpdateFailHTLC_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.UpdateFulfillHTLC_clone(orig); + return nativeResponseValue; } - // struct LDKUpdateFailHTLC UpdateFailHTLC_clone(const struct LDKUpdateFailHTLC *NONNULL_PTR orig); - export function UpdateFailHTLC_clone(orig: number): number { + // void UpdateFailHTLC_free(struct LDKUpdateFailHTLC this_ptr); + export function UpdateFailHTLC_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.UpdateFailHTLC_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.UpdateFailHTLC_free(this_ptr); + // debug statements here } // const uint8_t (*UpdateFailHTLC_get_channel_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr))[32]; export function UpdateFailHTLC_get_channel_id(this_ptr: number): Uint8Array { @@ -5904,21 +7230,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.UpdateFailHTLC_set_htlc_id(this_ptr, val); // debug statements here } - // void UpdateFailMalformedHTLC_free(struct LDKUpdateFailMalformedHTLC this_ptr); - export function UpdateFailMalformedHTLC_free(this_ptr: number): void { + // struct LDKUpdateFailHTLC UpdateFailHTLC_clone(const struct LDKUpdateFailHTLC *NONNULL_PTR orig); + export function UpdateFailHTLC_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.UpdateFailMalformedHTLC_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.UpdateFailHTLC_clone(orig); + return nativeResponseValue; } - // struct LDKUpdateFailMalformedHTLC UpdateFailMalformedHTLC_clone(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR orig); - export function UpdateFailMalformedHTLC_clone(orig: number): number { + // void UpdateFailMalformedHTLC_free(struct LDKUpdateFailMalformedHTLC this_ptr); + export function UpdateFailMalformedHTLC_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.UpdateFailMalformedHTLC_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.UpdateFailMalformedHTLC_free(this_ptr); + // debug statements here } // const uint8_t (*UpdateFailMalformedHTLC_get_channel_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr))[32]; export function UpdateFailMalformedHTLC_get_channel_id(this_ptr: number): Uint8Array { @@ -5968,21 +7294,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.UpdateFailMalformedHTLC_set_failure_code(this_ptr, val); // debug statements here } - // void CommitmentSigned_free(struct LDKCommitmentSigned this_ptr); - export function CommitmentSigned_free(this_ptr: number): void { + // struct LDKUpdateFailMalformedHTLC UpdateFailMalformedHTLC_clone(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR orig); + export function UpdateFailMalformedHTLC_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CommitmentSigned_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.UpdateFailMalformedHTLC_clone(orig); + return nativeResponseValue; } - // struct LDKCommitmentSigned CommitmentSigned_clone(const struct LDKCommitmentSigned *NONNULL_PTR orig); - export function CommitmentSigned_clone(orig: number): number { + // void CommitmentSigned_free(struct LDKCommitmentSigned this_ptr); + export function CommitmentSigned_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CommitmentSigned_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.CommitmentSigned_free(this_ptr); + // debug statements here } // const uint8_t (*CommitmentSigned_get_channel_id(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr))[32]; export function CommitmentSigned_get_channel_id(this_ptr: number): Uint8Array { @@ -6032,21 +7358,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.CommitmentSigned_new(encodeArray(channel_id_arg), encodeArray(signature_arg), htlc_signatures_arg); return nativeResponseValue; } - // void RevokeAndACK_free(struct LDKRevokeAndACK this_ptr); - export function RevokeAndACK_free(this_ptr: number): void { + // struct LDKCommitmentSigned CommitmentSigned_clone(const struct LDKCommitmentSigned *NONNULL_PTR orig); + export function CommitmentSigned_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.RevokeAndACK_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.CommitmentSigned_clone(orig); + return nativeResponseValue; } - // struct LDKRevokeAndACK RevokeAndACK_clone(const struct LDKRevokeAndACK *NONNULL_PTR orig); - export function RevokeAndACK_clone(orig: number): number { + // void RevokeAndACK_free(struct LDKRevokeAndACK this_ptr); + export function RevokeAndACK_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.RevokeAndACK_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.RevokeAndACK_free(this_ptr); + // debug statements here } // const uint8_t (*RevokeAndACK_get_channel_id(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32]; export function RevokeAndACK_get_channel_id(this_ptr: number): Uint8Array { @@ -6104,21 +7430,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.RevokeAndACK_new(encodeArray(channel_id_arg), encodeArray(per_commitment_secret_arg), encodeArray(next_per_commitment_point_arg)); return nativeResponseValue; } - // void UpdateFee_free(struct LDKUpdateFee this_ptr); - export function UpdateFee_free(this_ptr: number): void { + // struct LDKRevokeAndACK RevokeAndACK_clone(const struct LDKRevokeAndACK *NONNULL_PTR orig); + export function RevokeAndACK_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.UpdateFee_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.RevokeAndACK_clone(orig); + return nativeResponseValue; } - // struct LDKUpdateFee UpdateFee_clone(const struct LDKUpdateFee *NONNULL_PTR orig); - export function UpdateFee_clone(orig: number): number { + // void UpdateFee_free(struct LDKUpdateFee this_ptr); + export function UpdateFee_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.UpdateFee_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.UpdateFee_free(this_ptr); + // debug statements here } // const uint8_t (*UpdateFee_get_channel_id(const struct LDKUpdateFee *NONNULL_PTR this_ptr))[32]; export function UpdateFee_get_channel_id(this_ptr: number): Uint8Array { @@ -6160,21 +7486,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.UpdateFee_new(encodeArray(channel_id_arg), feerate_per_kw_arg); return nativeResponseValue; } - // void DataLossProtect_free(struct LDKDataLossProtect this_ptr); - export function DataLossProtect_free(this_ptr: number): void { + // struct LDKUpdateFee UpdateFee_clone(const struct LDKUpdateFee *NONNULL_PTR orig); + export function UpdateFee_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.DataLossProtect_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.UpdateFee_clone(orig); + return nativeResponseValue; } - // struct LDKDataLossProtect DataLossProtect_clone(const struct LDKDataLossProtect *NONNULL_PTR orig); - export function DataLossProtect_clone(orig: number): number { + // void DataLossProtect_free(struct LDKDataLossProtect this_ptr); + export function DataLossProtect_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.DataLossProtect_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.DataLossProtect_free(this_ptr); + // debug statements here } // const uint8_t (*DataLossProtect_get_your_last_per_commitment_secret(const struct LDKDataLossProtect *NONNULL_PTR this_ptr))[32]; export function DataLossProtect_get_your_last_per_commitment_secret(this_ptr: number): Uint8Array { @@ -6216,21 +7542,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.DataLossProtect_new(encodeArray(your_last_per_commitment_secret_arg), encodeArray(my_current_per_commitment_point_arg)); return nativeResponseValue; } - // void ChannelReestablish_free(struct LDKChannelReestablish this_ptr); - export function ChannelReestablish_free(this_ptr: number): void { + // struct LDKDataLossProtect DataLossProtect_clone(const struct LDKDataLossProtect *NONNULL_PTR orig); + export function DataLossProtect_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.ChannelReestablish_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.DataLossProtect_clone(orig); + return nativeResponseValue; } - // struct LDKChannelReestablish ChannelReestablish_clone(const struct LDKChannelReestablish *NONNULL_PTR orig); - export function ChannelReestablish_clone(orig: number): number { + // void ChannelReestablish_free(struct LDKChannelReestablish this_ptr); + export function ChannelReestablish_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.ChannelReestablish_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.ChannelReestablish_free(this_ptr); + // debug statements here } // const uint8_t (*ChannelReestablish_get_channel_id(const struct LDKChannelReestablish *NONNULL_PTR this_ptr))[32]; export function ChannelReestablish_get_channel_id(this_ptr: number): Uint8Array { @@ -6280,21 +7606,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelReestablish_set_next_remote_commitment_number(this_ptr, val); // debug statements here } - // void AnnouncementSignatures_free(struct LDKAnnouncementSignatures this_ptr); - export function AnnouncementSignatures_free(this_ptr: number): void { + // struct LDKChannelReestablish ChannelReestablish_clone(const struct LDKChannelReestablish *NONNULL_PTR orig); + export function ChannelReestablish_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.AnnouncementSignatures_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.ChannelReestablish_clone(orig); + return nativeResponseValue; } - // struct LDKAnnouncementSignatures AnnouncementSignatures_clone(const struct LDKAnnouncementSignatures *NONNULL_PTR orig); - export function AnnouncementSignatures_clone(orig: number): number { + // void AnnouncementSignatures_free(struct LDKAnnouncementSignatures this_ptr); + export function AnnouncementSignatures_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.AnnouncementSignatures_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.AnnouncementSignatures_free(this_ptr); + // debug statements here } // const uint8_t (*AnnouncementSignatures_get_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr))[32]; export function AnnouncementSignatures_get_channel_id(this_ptr: number): Uint8Array { @@ -6368,6 +7694,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.AnnouncementSignatures_new(encodeArray(channel_id_arg), short_channel_id_arg, encodeArray(node_signature_arg), encodeArray(bitcoin_signature_arg)); return nativeResponseValue; } + // struct LDKAnnouncementSignatures AnnouncementSignatures_clone(const struct LDKAnnouncementSignatures *NONNULL_PTR orig); + export function AnnouncementSignatures_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.AnnouncementSignatures_clone(orig); + return nativeResponseValue; + } // void NetAddress_free(struct LDKNetAddress this_ptr); export function NetAddress_free(this_ptr: number): void { if(!isWasmInitialized) { @@ -6408,14 +7742,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.UnsignedNodeAnnouncement_free(this_ptr); // debug statements here } - // struct LDKUnsignedNodeAnnouncement UnsignedNodeAnnouncement_clone(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR orig); - export function UnsignedNodeAnnouncement_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.UnsignedNodeAnnouncement_clone(orig); - return nativeResponseValue; - } // struct LDKNodeFeatures UnsignedNodeAnnouncement_get_features(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr); export function UnsignedNodeAnnouncement_get_features(this_ptr: number): number { if(!isWasmInitialized) { @@ -6504,6 +7830,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.UnsignedNodeAnnouncement_set_addresses(this_ptr, val); // debug statements here } + // struct LDKUnsignedNodeAnnouncement UnsignedNodeAnnouncement_clone(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR orig); + export function UnsignedNodeAnnouncement_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.UnsignedNodeAnnouncement_clone(orig); + return nativeResponseValue; + } // void NodeAnnouncement_free(struct LDKNodeAnnouncement this_ptr); export function NodeAnnouncement_free(this_ptr: number): void { if(!isWasmInitialized) { @@ -6512,14 +7846,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.NodeAnnouncement_free(this_ptr); // debug statements here } - // struct LDKNodeAnnouncement NodeAnnouncement_clone(const struct LDKNodeAnnouncement *NONNULL_PTR orig); - export function NodeAnnouncement_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.NodeAnnouncement_clone(orig); - return nativeResponseValue; - } // struct LDKSignature NodeAnnouncement_get_signature(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr); export function NodeAnnouncement_get_signature(this_ptr: number): Uint8Array { if(!isWasmInitialized) { @@ -6560,21 +7886,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.NodeAnnouncement_new(encodeArray(signature_arg), contents_arg); return nativeResponseValue; } - // void UnsignedChannelAnnouncement_free(struct LDKUnsignedChannelAnnouncement this_ptr); - export function UnsignedChannelAnnouncement_free(this_ptr: number): void { + // struct LDKNodeAnnouncement NodeAnnouncement_clone(const struct LDKNodeAnnouncement *NONNULL_PTR orig); + export function NodeAnnouncement_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.UnsignedChannelAnnouncement_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.NodeAnnouncement_clone(orig); + return nativeResponseValue; } - // struct LDKUnsignedChannelAnnouncement UnsignedChannelAnnouncement_clone(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR orig); - export function UnsignedChannelAnnouncement_clone(orig: number): number { + // void UnsignedChannelAnnouncement_free(struct LDKUnsignedChannelAnnouncement this_ptr); + export function UnsignedChannelAnnouncement_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.UnsignedChannelAnnouncement_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.UnsignedChannelAnnouncement_free(this_ptr); + // debug statements here } // struct LDKChannelFeatures UnsignedChannelAnnouncement_get_features(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr); export function UnsignedChannelAnnouncement_get_features(this_ptr: number): number { @@ -6688,21 +8014,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.UnsignedChannelAnnouncement_set_bitcoin_key_2(this_ptr, encodeArray(val)); // debug statements here } - // void ChannelAnnouncement_free(struct LDKChannelAnnouncement this_ptr); - export function ChannelAnnouncement_free(this_ptr: number): void { + // struct LDKUnsignedChannelAnnouncement UnsignedChannelAnnouncement_clone(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR orig); + export function UnsignedChannelAnnouncement_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.ChannelAnnouncement_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.UnsignedChannelAnnouncement_clone(orig); + return nativeResponseValue; } - // struct LDKChannelAnnouncement ChannelAnnouncement_clone(const struct LDKChannelAnnouncement *NONNULL_PTR orig); - export function ChannelAnnouncement_clone(orig: number): number { + // void ChannelAnnouncement_free(struct LDKChannelAnnouncement this_ptr); + export function ChannelAnnouncement_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.ChannelAnnouncement_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.ChannelAnnouncement_free(this_ptr); + // debug statements here } // struct LDKSignature ChannelAnnouncement_get_node_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr); export function ChannelAnnouncement_get_node_signature_1(this_ptr: number): Uint8Array { @@ -6792,21 +8118,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelAnnouncement_new(encodeArray(node_signature_1_arg), encodeArray(node_signature_2_arg), encodeArray(bitcoin_signature_1_arg), encodeArray(bitcoin_signature_2_arg), contents_arg); return nativeResponseValue; } - // void UnsignedChannelUpdate_free(struct LDKUnsignedChannelUpdate this_ptr); - export function UnsignedChannelUpdate_free(this_ptr: number): void { + // struct LDKChannelAnnouncement ChannelAnnouncement_clone(const struct LDKChannelAnnouncement *NONNULL_PTR orig); + export function ChannelAnnouncement_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.UnsignedChannelUpdate_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.ChannelAnnouncement_clone(orig); + return nativeResponseValue; } - // struct LDKUnsignedChannelUpdate UnsignedChannelUpdate_clone(const struct LDKUnsignedChannelUpdate *NONNULL_PTR orig); - export function UnsignedChannelUpdate_clone(orig: number): number { + // void UnsignedChannelUpdate_free(struct LDKUnsignedChannelUpdate this_ptr); + export function UnsignedChannelUpdate_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.UnsignedChannelUpdate_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.UnsignedChannelUpdate_free(this_ptr); + // debug statements here } // const uint8_t (*UnsignedChannelUpdate_get_chain_hash(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr))[32]; export function UnsignedChannelUpdate_get_chain_hash(this_ptr: number): Uint8Array { @@ -6936,21 +8262,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.UnsignedChannelUpdate_set_fee_proportional_millionths(this_ptr, val); // debug statements here } - // void ChannelUpdate_free(struct LDKChannelUpdate this_ptr); - export function ChannelUpdate_free(this_ptr: number): void { + // struct LDKUnsignedChannelUpdate UnsignedChannelUpdate_clone(const struct LDKUnsignedChannelUpdate *NONNULL_PTR orig); + export function UnsignedChannelUpdate_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.ChannelUpdate_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.UnsignedChannelUpdate_clone(orig); + return nativeResponseValue; } - // struct LDKChannelUpdate ChannelUpdate_clone(const struct LDKChannelUpdate *NONNULL_PTR orig); - export function ChannelUpdate_clone(orig: number): number { + // void ChannelUpdate_free(struct LDKChannelUpdate this_ptr); + export function ChannelUpdate_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.ChannelUpdate_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.ChannelUpdate_free(this_ptr); + // debug statements here } // struct LDKSignature ChannelUpdate_get_signature(const struct LDKChannelUpdate *NONNULL_PTR this_ptr); export function ChannelUpdate_get_signature(this_ptr: number): Uint8Array { @@ -6992,21 +8318,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelUpdate_new(encodeArray(signature_arg), contents_arg); return nativeResponseValue; } - // void QueryChannelRange_free(struct LDKQueryChannelRange this_ptr); - export function QueryChannelRange_free(this_ptr: number): void { + // struct LDKChannelUpdate ChannelUpdate_clone(const struct LDKChannelUpdate *NONNULL_PTR orig); + export function ChannelUpdate_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.QueryChannelRange_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.ChannelUpdate_clone(orig); + return nativeResponseValue; } - // struct LDKQueryChannelRange QueryChannelRange_clone(const struct LDKQueryChannelRange *NONNULL_PTR orig); - export function QueryChannelRange_clone(orig: number): number { + // void QueryChannelRange_free(struct LDKQueryChannelRange this_ptr); + export function QueryChannelRange_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.QueryChannelRange_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.QueryChannelRange_free(this_ptr); + // debug statements here } // const uint8_t (*QueryChannelRange_get_chain_hash(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr))[32]; export function QueryChannelRange_get_chain_hash(this_ptr: number): Uint8Array { @@ -7064,21 +8390,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.QueryChannelRange_new(encodeArray(chain_hash_arg), first_blocknum_arg, number_of_blocks_arg); return nativeResponseValue; } - // void ReplyChannelRange_free(struct LDKReplyChannelRange this_ptr); - export function ReplyChannelRange_free(this_ptr: number): void { + // struct LDKQueryChannelRange QueryChannelRange_clone(const struct LDKQueryChannelRange *NONNULL_PTR orig); + export function QueryChannelRange_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.ReplyChannelRange_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.QueryChannelRange_clone(orig); + return nativeResponseValue; } - // struct LDKReplyChannelRange ReplyChannelRange_clone(const struct LDKReplyChannelRange *NONNULL_PTR orig); - export function ReplyChannelRange_clone(orig: number): number { + // void ReplyChannelRange_free(struct LDKReplyChannelRange this_ptr); + export function ReplyChannelRange_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.ReplyChannelRange_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.ReplyChannelRange_free(this_ptr); + // debug statements here } // const uint8_t (*ReplyChannelRange_get_chain_hash(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr))[32]; export function ReplyChannelRange_get_chain_hash(this_ptr: number): Uint8Array { @@ -7128,20 +8454,20 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ReplyChannelRange_set_number_of_blocks(this_ptr, val); // debug statements here } - // bool ReplyChannelRange_get_full_information(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr); - export function ReplyChannelRange_get_full_information(this_ptr: number): boolean { + // bool ReplyChannelRange_get_sync_complete(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr); + export function ReplyChannelRange_get_sync_complete(this_ptr: number): boolean { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.ReplyChannelRange_get_full_information(this_ptr); + const nativeResponseValue = wasm.ReplyChannelRange_get_sync_complete(this_ptr); return nativeResponseValue; } - // void ReplyChannelRange_set_full_information(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, bool val); - export function ReplyChannelRange_set_full_information(this_ptr: number, val: boolean): void { + // void ReplyChannelRange_set_sync_complete(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, bool val); + export function ReplyChannelRange_set_sync_complete(this_ptr: number, val: boolean): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.ReplyChannelRange_set_full_information(this_ptr, val); + const nativeResponseValue = wasm.ReplyChannelRange_set_sync_complete(this_ptr, val); // debug statements here } // void ReplyChannelRange_set_short_channel_ids(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val); @@ -7152,29 +8478,29 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ReplyChannelRange_set_short_channel_ids(this_ptr, val); // debug statements here } - // MUST_USE_RES struct LDKReplyChannelRange ReplyChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg, bool full_information_arg, struct LDKCVec_u64Z short_channel_ids_arg); - export function ReplyChannelRange_new(chain_hash_arg: Uint8Array, first_blocknum_arg: number, number_of_blocks_arg: number, full_information_arg: boolean, short_channel_ids_arg: number[]): number { + // MUST_USE_RES struct LDKReplyChannelRange ReplyChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg, bool sync_complete_arg, struct LDKCVec_u64Z short_channel_ids_arg); + export function ReplyChannelRange_new(chain_hash_arg: Uint8Array, first_blocknum_arg: number, number_of_blocks_arg: number, sync_complete_arg: boolean, short_channel_ids_arg: number[]): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.ReplyChannelRange_new(encodeArray(chain_hash_arg), first_blocknum_arg, number_of_blocks_arg, full_information_arg, short_channel_ids_arg); + const nativeResponseValue = wasm.ReplyChannelRange_new(encodeArray(chain_hash_arg), first_blocknum_arg, number_of_blocks_arg, sync_complete_arg, short_channel_ids_arg); return nativeResponseValue; } - // void QueryShortChannelIds_free(struct LDKQueryShortChannelIds this_ptr); - export function QueryShortChannelIds_free(this_ptr: number): void { + // struct LDKReplyChannelRange ReplyChannelRange_clone(const struct LDKReplyChannelRange *NONNULL_PTR orig); + export function ReplyChannelRange_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.QueryShortChannelIds_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.ReplyChannelRange_clone(orig); + return nativeResponseValue; } - // struct LDKQueryShortChannelIds QueryShortChannelIds_clone(const struct LDKQueryShortChannelIds *NONNULL_PTR orig); - export function QueryShortChannelIds_clone(orig: number): number { + // void QueryShortChannelIds_free(struct LDKQueryShortChannelIds this_ptr); + export function QueryShortChannelIds_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.QueryShortChannelIds_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.QueryShortChannelIds_free(this_ptr); + // debug statements here } // const uint8_t (*QueryShortChannelIds_get_chain_hash(const struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr))[32]; export function QueryShortChannelIds_get_chain_hash(this_ptr: number): Uint8Array { @@ -7208,21 +8534,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.QueryShortChannelIds_new(encodeArray(chain_hash_arg), short_channel_ids_arg); return nativeResponseValue; } - // void ReplyShortChannelIdsEnd_free(struct LDKReplyShortChannelIdsEnd this_ptr); - export function ReplyShortChannelIdsEnd_free(this_ptr: number): void { + // struct LDKQueryShortChannelIds QueryShortChannelIds_clone(const struct LDKQueryShortChannelIds *NONNULL_PTR orig); + export function QueryShortChannelIds_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.ReplyShortChannelIdsEnd_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.QueryShortChannelIds_clone(orig); + return nativeResponseValue; } - // struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_clone(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR orig); - export function ReplyShortChannelIdsEnd_clone(orig: number): number { + // void ReplyShortChannelIdsEnd_free(struct LDKReplyShortChannelIdsEnd this_ptr); + export function ReplyShortChannelIdsEnd_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.ReplyShortChannelIdsEnd_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.ReplyShortChannelIdsEnd_free(this_ptr); + // debug statements here } // const uint8_t (*ReplyShortChannelIdsEnd_get_chain_hash(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr))[32]; export function ReplyShortChannelIdsEnd_get_chain_hash(this_ptr: number): Uint8Array { @@ -7264,21 +8590,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ReplyShortChannelIdsEnd_new(encodeArray(chain_hash_arg), full_information_arg); return nativeResponseValue; } - // void GossipTimestampFilter_free(struct LDKGossipTimestampFilter this_ptr); - export function GossipTimestampFilter_free(this_ptr: number): void { + // struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_clone(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR orig); + export function ReplyShortChannelIdsEnd_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.GossipTimestampFilter_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.ReplyShortChannelIdsEnd_clone(orig); + return nativeResponseValue; } - // struct LDKGossipTimestampFilter GossipTimestampFilter_clone(const struct LDKGossipTimestampFilter *NONNULL_PTR orig); - export function GossipTimestampFilter_clone(orig: number): number { + // void GossipTimestampFilter_free(struct LDKGossipTimestampFilter this_ptr); + export function GossipTimestampFilter_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.GossipTimestampFilter_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.GossipTimestampFilter_free(this_ptr); + // debug statements here } // const uint8_t (*GossipTimestampFilter_get_chain_hash(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr))[32]; export function GossipTimestampFilter_get_chain_hash(this_ptr: number): Uint8Array { @@ -7336,6 +8662,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.GossipTimestampFilter_new(encodeArray(chain_hash_arg), first_timestamp_arg, timestamp_range_arg); return nativeResponseValue; } + // struct LDKGossipTimestampFilter GossipTimestampFilter_clone(const struct LDKGossipTimestampFilter *NONNULL_PTR orig); + export function GossipTimestampFilter_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.GossipTimestampFilter_clone(orig); + return nativeResponseValue; + } // void ErrorAction_free(struct LDKErrorAction this_ptr); export function ErrorAction_free(this_ptr: number): void { if(!isWasmInitialized) { @@ -7360,14 +8694,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.LightningError_free(this_ptr); // debug statements here } - // struct LDKLightningError LightningError_clone(const struct LDKLightningError *NONNULL_PTR orig); - export function LightningError_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.LightningError_clone(orig); - return nativeResponseValue; - } // struct LDKStr LightningError_get_err(const struct LDKLightningError *NONNULL_PTR this_ptr); export function LightningError_get_err(this_ptr: number): String { if(!isWasmInitialized) { @@ -7408,21 +8734,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.LightningError_new(encodeArray(err_arg), action_arg); return nativeResponseValue; } - // void CommitmentUpdate_free(struct LDKCommitmentUpdate this_ptr); - export function CommitmentUpdate_free(this_ptr: number): void { + // struct LDKLightningError LightningError_clone(const struct LDKLightningError *NONNULL_PTR orig); + export function LightningError_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CommitmentUpdate_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.LightningError_clone(orig); + return nativeResponseValue; } - // struct LDKCommitmentUpdate CommitmentUpdate_clone(const struct LDKCommitmentUpdate *NONNULL_PTR orig); - export function CommitmentUpdate_clone(orig: number): number { + // void CommitmentUpdate_free(struct LDKCommitmentUpdate this_ptr); + export function CommitmentUpdate_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CommitmentUpdate_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.CommitmentUpdate_free(this_ptr); + // debug statements here } // void CommitmentUpdate_set_update_add_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateAddHTLCZ val); export function CommitmentUpdate_set_update_add_htlcs(this_ptr: number, val: number[]): void { @@ -7496,6 +8822,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.CommitmentUpdate_new(update_add_htlcs_arg, update_fulfill_htlcs_arg, update_fail_htlcs_arg, update_fail_malformed_htlcs_arg, update_fee_arg, commitment_signed_arg); return nativeResponseValue; } + // struct LDKCommitmentUpdate CommitmentUpdate_clone(const struct LDKCommitmentUpdate *NONNULL_PTR orig); + export function CommitmentUpdate_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CommitmentUpdate_clone(orig); + return nativeResponseValue; + } // void HTLCFailChannelUpdate_free(struct LDKHTLCFailChannelUpdate this_ptr); export function HTLCFailChannelUpdate_free(this_ptr: number): void { if(!isWasmInitialized) { @@ -7536,7 +8870,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.AcceptChannel_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKAcceptChannel AcceptChannel_read(struct LDKu8slice ser); + // struct LDKCResult_AcceptChannelDecodeErrorZ AcceptChannel_read(struct LDKu8slice ser); export function AcceptChannel_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -7552,7 +8886,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.AnnouncementSignatures_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKAnnouncementSignatures AnnouncementSignatures_read(struct LDKu8slice ser); + // struct LDKCResult_AnnouncementSignaturesDecodeErrorZ AnnouncementSignatures_read(struct LDKu8slice ser); export function AnnouncementSignatures_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -7584,7 +8918,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ClosingSigned_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKClosingSigned ClosingSigned_read(struct LDKu8slice ser); + // struct LDKCResult_ClosingSignedDecodeErrorZ ClosingSigned_read(struct LDKu8slice ser); export function ClosingSigned_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -7600,7 +8934,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.CommitmentSigned_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKCommitmentSigned CommitmentSigned_read(struct LDKu8slice ser); + // struct LDKCResult_CommitmentSignedDecodeErrorZ CommitmentSigned_read(struct LDKu8slice ser); export function CommitmentSigned_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -7616,7 +8950,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.FundingCreated_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKFundingCreated FundingCreated_read(struct LDKu8slice ser); + // struct LDKCResult_FundingCreatedDecodeErrorZ FundingCreated_read(struct LDKu8slice ser); export function FundingCreated_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -7632,7 +8966,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.FundingSigned_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKFundingSigned FundingSigned_read(struct LDKu8slice ser); + // struct LDKCResult_FundingSignedDecodeErrorZ FundingSigned_read(struct LDKu8slice ser); export function FundingSigned_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -7648,7 +8982,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.FundingLocked_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKFundingLocked FundingLocked_read(struct LDKu8slice ser); + // struct LDKCResult_FundingLockedDecodeErrorZ FundingLocked_read(struct LDKu8slice ser); export function FundingLocked_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -7680,7 +9014,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.OpenChannel_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKOpenChannel OpenChannel_read(struct LDKu8slice ser); + // struct LDKCResult_OpenChannelDecodeErrorZ OpenChannel_read(struct LDKu8slice ser); export function OpenChannel_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -7696,7 +9030,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.RevokeAndACK_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKRevokeAndACK RevokeAndACK_read(struct LDKu8slice ser); + // struct LDKCResult_RevokeAndACKDecodeErrorZ RevokeAndACK_read(struct LDKu8slice ser); export function RevokeAndACK_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -7712,7 +9046,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.Shutdown_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKShutdown Shutdown_read(struct LDKu8slice ser); + // struct LDKCResult_ShutdownDecodeErrorZ Shutdown_read(struct LDKu8slice ser); export function Shutdown_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -7728,7 +9062,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.UpdateFailHTLC_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKUpdateFailHTLC UpdateFailHTLC_read(struct LDKu8slice ser); + // struct LDKCResult_UpdateFailHTLCDecodeErrorZ UpdateFailHTLC_read(struct LDKu8slice ser); export function UpdateFailHTLC_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -7744,7 +9078,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.UpdateFailMalformedHTLC_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKUpdateFailMalformedHTLC UpdateFailMalformedHTLC_read(struct LDKu8slice ser); + // struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ UpdateFailMalformedHTLC_read(struct LDKu8slice ser); export function UpdateFailMalformedHTLC_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -7760,7 +9094,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.UpdateFee_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKUpdateFee UpdateFee_read(struct LDKu8slice ser); + // struct LDKCResult_UpdateFeeDecodeErrorZ UpdateFee_read(struct LDKu8slice ser); export function UpdateFee_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -7776,7 +9110,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.UpdateFulfillHTLC_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_read(struct LDKu8slice ser); + // struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ UpdateFulfillHTLC_read(struct LDKu8slice ser); export function UpdateFulfillHTLC_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -7792,7 +9126,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.UpdateAddHTLC_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKUpdateAddHTLC UpdateAddHTLC_read(struct LDKu8slice ser); + // struct LDKCResult_UpdateAddHTLCDecodeErrorZ UpdateAddHTLC_read(struct LDKu8slice ser); export function UpdateAddHTLC_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -7856,7 +9190,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelAnnouncement_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKChannelAnnouncement ChannelAnnouncement_read(struct LDKu8slice ser); + // struct LDKCResult_ChannelAnnouncementDecodeErrorZ ChannelAnnouncement_read(struct LDKu8slice ser); export function ChannelAnnouncement_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -7888,7 +9222,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelUpdate_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKChannelUpdate ChannelUpdate_read(struct LDKu8slice ser); + // struct LDKCResult_ChannelUpdateDecodeErrorZ ChannelUpdate_read(struct LDKu8slice ser); export function ChannelUpdate_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -7936,7 +9270,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.NodeAnnouncement_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKNodeAnnouncement NodeAnnouncement_read(struct LDKu8slice ser); + // struct LDKCResult_NodeAnnouncementDecodeErrorZ NodeAnnouncement_read(struct LDKu8slice ser); export function NodeAnnouncement_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -8096,14 +9430,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.PeerHandleError_free(this_ptr); // debug statements here } - // struct LDKPeerHandleError PeerHandleError_clone(const struct LDKPeerHandleError *NONNULL_PTR orig); - export function PeerHandleError_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.PeerHandleError_clone(orig); - return nativeResponseValue; - } // bool PeerHandleError_get_no_connection_possible(const struct LDKPeerHandleError *NONNULL_PTR this_ptr); export function PeerHandleError_get_no_connection_possible(this_ptr: number): boolean { if(!isWasmInitialized) { @@ -8128,6 +9454,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.PeerHandleError_new(no_connection_possible_arg); return nativeResponseValue; } + // struct LDKPeerHandleError PeerHandleError_clone(const struct LDKPeerHandleError *NONNULL_PTR orig); + export function PeerHandleError_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.PeerHandleError_clone(orig); + return nativeResponseValue; + } // void PeerManager_free(struct LDKPeerManager this_ptr); export function PeerManager_free(this_ptr: number): void { if(!isWasmInitialized) { @@ -8224,7 +9558,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.build_commitment_secret(encodeArray(commitment_seed), idx); return decodeArray(nativeResponseValue); } - // struct LDKCResult_SecretKeySecpErrorZ derive_private_key(struct LDKPublicKey per_commitment_point, const uint8_t (*base_secret)[32]); + // struct LDKCResult_SecretKeyErrorZ derive_private_key(struct LDKPublicKey per_commitment_point, const uint8_t (*base_secret)[32]); export function derive_private_key(per_commitment_point: Uint8Array, base_secret: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -8232,7 +9566,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.derive_private_key(encodeArray(per_commitment_point), encodeArray(base_secret)); return nativeResponseValue; } - // struct LDKCResult_PublicKeySecpErrorZ derive_public_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey base_point); + // struct LDKCResult_PublicKeyErrorZ derive_public_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey base_point); export function derive_public_key(per_commitment_point: Uint8Array, base_point: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -8240,7 +9574,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.derive_public_key(encodeArray(per_commitment_point), encodeArray(base_point)); return nativeResponseValue; } - // struct LDKCResult_SecretKeySecpErrorZ derive_private_revocation_key(const uint8_t (*per_commitment_secret)[32], const uint8_t (*countersignatory_revocation_base_secret)[32]); + // struct LDKCResult_SecretKeyErrorZ derive_private_revocation_key(const uint8_t (*per_commitment_secret)[32], const uint8_t (*countersignatory_revocation_base_secret)[32]); export function derive_private_revocation_key(per_commitment_secret: Uint8Array, countersignatory_revocation_base_secret: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -8248,7 +9582,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.derive_private_revocation_key(encodeArray(per_commitment_secret), encodeArray(countersignatory_revocation_base_secret)); return nativeResponseValue; } - // struct LDKCResult_PublicKeySecpErrorZ derive_public_revocation_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey countersignatory_revocation_base_point); + // struct LDKCResult_PublicKeyErrorZ derive_public_revocation_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey countersignatory_revocation_base_point); export function derive_public_revocation_key(per_commitment_point: Uint8Array, countersignatory_revocation_base_point: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -8264,14 +9598,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.TxCreationKeys_free(this_ptr); // debug statements here } - // struct LDKTxCreationKeys TxCreationKeys_clone(const struct LDKTxCreationKeys *NONNULL_PTR orig); - export function TxCreationKeys_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.TxCreationKeys_clone(orig); - return nativeResponseValue; - } // struct LDKPublicKey TxCreationKeys_get_per_commitment_point(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr); export function TxCreationKeys_get_per_commitment_point(this_ptr: number): Uint8Array { if(!isWasmInitialized) { @@ -8360,6 +9686,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.TxCreationKeys_new(encodeArray(per_commitment_point_arg), encodeArray(revocation_key_arg), encodeArray(broadcaster_htlc_key_arg), encodeArray(countersignatory_htlc_key_arg), encodeArray(broadcaster_delayed_payment_key_arg)); return nativeResponseValue; } + // struct LDKTxCreationKeys TxCreationKeys_clone(const struct LDKTxCreationKeys *NONNULL_PTR orig); + export function TxCreationKeys_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.TxCreationKeys_clone(orig); + return nativeResponseValue; + } // struct LDKCVec_u8Z TxCreationKeys_write(const struct LDKTxCreationKeys *NONNULL_PTR obj); export function TxCreationKeys_write(obj: number): Uint8Array { if(!isWasmInitialized) { @@ -8368,7 +9702,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.TxCreationKeys_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKTxCreationKeys TxCreationKeys_read(struct LDKu8slice ser); + // struct LDKCResult_TxCreationKeysDecodeErrorZ TxCreationKeys_read(struct LDKu8slice ser); export function TxCreationKeys_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -8384,14 +9718,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelPublicKeys_free(this_ptr); // debug statements here } - // struct LDKChannelPublicKeys ChannelPublicKeys_clone(const struct LDKChannelPublicKeys *NONNULL_PTR orig); - export function ChannelPublicKeys_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.ChannelPublicKeys_clone(orig); - return nativeResponseValue; - } // struct LDKPublicKey ChannelPublicKeys_get_funding_pubkey(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr); export function ChannelPublicKeys_get_funding_pubkey(this_ptr: number): Uint8Array { if(!isWasmInitialized) { @@ -8480,6 +9806,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelPublicKeys_new(encodeArray(funding_pubkey_arg), encodeArray(revocation_basepoint_arg), encodeArray(payment_point_arg), encodeArray(delayed_payment_basepoint_arg), encodeArray(htlc_basepoint_arg)); return nativeResponseValue; } + // struct LDKChannelPublicKeys ChannelPublicKeys_clone(const struct LDKChannelPublicKeys *NONNULL_PTR orig); + export function ChannelPublicKeys_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.ChannelPublicKeys_clone(orig); + return nativeResponseValue; + } // struct LDKCVec_u8Z ChannelPublicKeys_write(const struct LDKChannelPublicKeys *NONNULL_PTR obj); export function ChannelPublicKeys_write(obj: number): Uint8Array { if(!isWasmInitialized) { @@ -8488,7 +9822,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelPublicKeys_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKChannelPublicKeys ChannelPublicKeys_read(struct LDKu8slice ser); + // struct LDKCResult_ChannelPublicKeysDecodeErrorZ ChannelPublicKeys_read(struct LDKu8slice ser); export function ChannelPublicKeys_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -8496,7 +9830,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelPublicKeys_read(encodeArray(ser)); return nativeResponseValue; } - // MUST_USE_RES struct LDKCResult_TxCreationKeysSecpErrorZ TxCreationKeys_derive_new(struct LDKPublicKey per_commitment_point, struct LDKPublicKey broadcaster_delayed_payment_base, struct LDKPublicKey broadcaster_htlc_base, struct LDKPublicKey countersignatory_revocation_base, struct LDKPublicKey countersignatory_htlc_base); + // MUST_USE_RES struct LDKCResult_TxCreationKeysErrorZ TxCreationKeys_derive_new(struct LDKPublicKey per_commitment_point, struct LDKPublicKey broadcaster_delayed_payment_base, struct LDKPublicKey broadcaster_htlc_base, struct LDKPublicKey countersignatory_revocation_base, struct LDKPublicKey countersignatory_htlc_base); export function TxCreationKeys_derive_new(per_commitment_point: Uint8Array, broadcaster_delayed_payment_base: Uint8Array, broadcaster_htlc_base: Uint8Array, countersignatory_revocation_base: Uint8Array, countersignatory_htlc_base: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -8504,7 +9838,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.TxCreationKeys_derive_new(encodeArray(per_commitment_point), encodeArray(broadcaster_delayed_payment_base), encodeArray(broadcaster_htlc_base), encodeArray(countersignatory_revocation_base), encodeArray(countersignatory_htlc_base)); return nativeResponseValue; } - // MUST_USE_RES struct LDKCResult_TxCreationKeysSecpErrorZ TxCreationKeys_from_channel_static_keys(struct LDKPublicKey per_commitment_point, const struct LDKChannelPublicKeys *NONNULL_PTR broadcaster_keys, const struct LDKChannelPublicKeys *NONNULL_PTR countersignatory_keys); + // MUST_USE_RES struct LDKCResult_TxCreationKeysErrorZ TxCreationKeys_from_channel_static_keys(struct LDKPublicKey per_commitment_point, const struct LDKChannelPublicKeys *NONNULL_PTR broadcaster_keys, const struct LDKChannelPublicKeys *NONNULL_PTR countersignatory_keys); export function TxCreationKeys_from_channel_static_keys(per_commitment_point: Uint8Array, broadcaster_keys: number, countersignatory_keys: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -8528,14 +9862,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.HTLCOutputInCommitment_free(this_ptr); // debug statements here } - // struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_clone(const struct LDKHTLCOutputInCommitment *NONNULL_PTR orig); - export function HTLCOutputInCommitment_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.HTLCOutputInCommitment_clone(orig); - return nativeResponseValue; - } // bool HTLCOutputInCommitment_get_offered(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr); export function HTLCOutputInCommitment_get_offered(this_ptr: number): boolean { if(!isWasmInitialized) { @@ -8597,8 +9923,16 @@ public static native long new_empty_slice_vec(); if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.HTLCOutputInCommitment_set_payment_hash(this_ptr, encodeArray(val)); - // debug statements here + const nativeResponseValue = wasm.HTLCOutputInCommitment_set_payment_hash(this_ptr, encodeArray(val)); + // debug statements here + } + // struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_clone(const struct LDKHTLCOutputInCommitment *NONNULL_PTR orig); + export function HTLCOutputInCommitment_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.HTLCOutputInCommitment_clone(orig); + return nativeResponseValue; } // struct LDKCVec_u8Z HTLCOutputInCommitment_write(const struct LDKHTLCOutputInCommitment *NONNULL_PTR obj); export function HTLCOutputInCommitment_write(obj: number): Uint8Array { @@ -8608,7 +9942,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.HTLCOutputInCommitment_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_read(struct LDKu8slice ser); + // struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ HTLCOutputInCommitment_read(struct LDKu8slice ser); export function HTLCOutputInCommitment_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -8648,14 +9982,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelTransactionParameters_free(this_ptr); // debug statements here } - // struct LDKChannelTransactionParameters ChannelTransactionParameters_clone(const struct LDKChannelTransactionParameters *NONNULL_PTR orig); - export function ChannelTransactionParameters_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.ChannelTransactionParameters_clone(orig); - return nativeResponseValue; - } // struct LDKChannelPublicKeys ChannelTransactionParameters_get_holder_pubkeys(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr); export function ChannelTransactionParameters_get_holder_pubkeys(this_ptr: number): number { if(!isWasmInitialized) { @@ -8744,21 +10070,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelTransactionParameters_new(holder_pubkeys_arg, holder_selected_contest_delay_arg, is_outbound_from_holder_arg, counterparty_parameters_arg, funding_outpoint_arg); return nativeResponseValue; } - // void CounterpartyChannelTransactionParameters_free(struct LDKCounterpartyChannelTransactionParameters this_ptr); - export function CounterpartyChannelTransactionParameters_free(this_ptr: number): void { + // struct LDKChannelTransactionParameters ChannelTransactionParameters_clone(const struct LDKChannelTransactionParameters *NONNULL_PTR orig); + export function ChannelTransactionParameters_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CounterpartyChannelTransactionParameters_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.ChannelTransactionParameters_clone(orig); + return nativeResponseValue; } - // struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_clone(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR orig); - export function CounterpartyChannelTransactionParameters_clone(orig: number): number { + // void CounterpartyChannelTransactionParameters_free(struct LDKCounterpartyChannelTransactionParameters this_ptr); + export function CounterpartyChannelTransactionParameters_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.CounterpartyChannelTransactionParameters_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.CounterpartyChannelTransactionParameters_free(this_ptr); + // debug statements here } // struct LDKChannelPublicKeys CounterpartyChannelTransactionParameters_get_pubkeys(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr); export function CounterpartyChannelTransactionParameters_get_pubkeys(this_ptr: number): number { @@ -8800,6 +10126,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.CounterpartyChannelTransactionParameters_new(pubkeys_arg, selected_contest_delay_arg); return nativeResponseValue; } + // struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_clone(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR orig); + export function CounterpartyChannelTransactionParameters_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.CounterpartyChannelTransactionParameters_clone(orig); + return nativeResponseValue; + } // MUST_USE_RES bool ChannelTransactionParameters_is_populated(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg); export function ChannelTransactionParameters_is_populated(this_arg: number): boolean { if(!isWasmInitialized) { @@ -8832,7 +10166,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.CounterpartyChannelTransactionParameters_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_read(struct LDKu8slice ser); + // struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CounterpartyChannelTransactionParameters_read(struct LDKu8slice ser); export function CounterpartyChannelTransactionParameters_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -8848,7 +10182,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelTransactionParameters_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKChannelTransactionParameters ChannelTransactionParameters_read(struct LDKu8slice ser); + // struct LDKCResult_ChannelTransactionParametersDecodeErrorZ ChannelTransactionParameters_read(struct LDKu8slice ser); export function ChannelTransactionParameters_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -8912,14 +10246,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.HolderCommitmentTransaction_free(this_ptr); // debug statements here } - // struct LDKHolderCommitmentTransaction HolderCommitmentTransaction_clone(const struct LDKHolderCommitmentTransaction *NONNULL_PTR orig); - export function HolderCommitmentTransaction_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.HolderCommitmentTransaction_clone(orig); - return nativeResponseValue; - } // struct LDKSignature HolderCommitmentTransaction_get_counterparty_sig(const struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr); export function HolderCommitmentTransaction_get_counterparty_sig(this_ptr: number): Uint8Array { if(!isWasmInitialized) { @@ -8944,6 +10270,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.HolderCommitmentTransaction_set_counterparty_htlc_sigs(this_ptr, val); // debug statements here } + // struct LDKHolderCommitmentTransaction HolderCommitmentTransaction_clone(const struct LDKHolderCommitmentTransaction *NONNULL_PTR orig); + export function HolderCommitmentTransaction_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.HolderCommitmentTransaction_clone(orig); + return nativeResponseValue; + } // struct LDKCVec_u8Z HolderCommitmentTransaction_write(const struct LDKHolderCommitmentTransaction *NONNULL_PTR obj); export function HolderCommitmentTransaction_write(obj: number): Uint8Array { if(!isWasmInitialized) { @@ -8952,7 +10286,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.HolderCommitmentTransaction_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKHolderCommitmentTransaction HolderCommitmentTransaction_read(struct LDKu8slice ser); + // struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ HolderCommitmentTransaction_read(struct LDKu8slice ser); export function HolderCommitmentTransaction_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -8976,14 +10310,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.BuiltCommitmentTransaction_free(this_ptr); // debug statements here } - // struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_clone(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR orig); - export function BuiltCommitmentTransaction_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.BuiltCommitmentTransaction_clone(orig); - return nativeResponseValue; - } // struct LDKTransaction BuiltCommitmentTransaction_get_transaction(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr); export function BuiltCommitmentTransaction_get_transaction(this_ptr: number): Uint8Array { if(!isWasmInitialized) { @@ -9024,6 +10350,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.BuiltCommitmentTransaction_new(encodeArray(transaction_arg), encodeArray(txid_arg)); return nativeResponseValue; } + // struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_clone(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR orig); + export function BuiltCommitmentTransaction_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.BuiltCommitmentTransaction_clone(orig); + return nativeResponseValue; + } // struct LDKCVec_u8Z BuiltCommitmentTransaction_write(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR obj); export function BuiltCommitmentTransaction_write(obj: number): Uint8Array { if(!isWasmInitialized) { @@ -9032,7 +10366,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.BuiltCommitmentTransaction_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_read(struct LDKu8slice ser); + // struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ BuiltCommitmentTransaction_read(struct LDKu8slice ser); export function BuiltCommitmentTransaction_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -9080,7 +10414,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.CommitmentTransaction_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKCommitmentTransaction CommitmentTransaction_read(struct LDKu8slice ser); + // struct LDKCResult_CommitmentTransactionDecodeErrorZ CommitmentTransaction_read(struct LDKu8slice ser); export function CommitmentTransaction_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -9184,6 +10518,30 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.get_commitment_transaction_number_obscure_factor(encodeArray(broadcaster_payment_basepoint), encodeArray(countersignatory_payment_basepoint), outbound_from_broadcaster); return nativeResponseValue; } + // struct LDKInitFeatures InitFeatures_clone(const struct LDKInitFeatures *NONNULL_PTR orig); + export function InitFeatures_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.InitFeatures_clone(orig); + return nativeResponseValue; + } + // struct LDKNodeFeatures NodeFeatures_clone(const struct LDKNodeFeatures *NONNULL_PTR orig); + export function NodeFeatures_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.NodeFeatures_clone(orig); + return nativeResponseValue; + } + // struct LDKChannelFeatures ChannelFeatures_clone(const struct LDKChannelFeatures *NONNULL_PTR orig); + export function ChannelFeatures_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.ChannelFeatures_clone(orig); + return nativeResponseValue; + } // void InitFeatures_free(struct LDKInitFeatures this_ptr); export function InitFeatures_free(this_ptr: number): void { if(!isWasmInitialized) { @@ -9208,22 +10566,110 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelFeatures_free(this_ptr); // debug statements here } - // void RouteHop_free(struct LDKRouteHop this_ptr); - export function RouteHop_free(this_ptr: number): void { + // MUST_USE_RES struct LDKInitFeatures InitFeatures_empty(void); + export function InitFeatures_empty(): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.RouteHop_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.InitFeatures_empty(); + return nativeResponseValue; } - // struct LDKRouteHop RouteHop_clone(const struct LDKRouteHop *NONNULL_PTR orig); - export function RouteHop_clone(orig: number): number { + // MUST_USE_RES struct LDKInitFeatures InitFeatures_known(void); + export function InitFeatures_known(): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.RouteHop_clone(orig); + const nativeResponseValue = wasm.InitFeatures_known(); + return nativeResponseValue; + } + // MUST_USE_RES struct LDKNodeFeatures NodeFeatures_empty(void); + export function NodeFeatures_empty(): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.NodeFeatures_empty(); + return nativeResponseValue; + } + // MUST_USE_RES struct LDKNodeFeatures NodeFeatures_known(void); + export function NodeFeatures_known(): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.NodeFeatures_known(); + return nativeResponseValue; + } + // MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_empty(void); + export function ChannelFeatures_empty(): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.ChannelFeatures_empty(); + return nativeResponseValue; + } + // MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_known(void); + export function ChannelFeatures_known(): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.ChannelFeatures_known(); + return nativeResponseValue; + } + // struct LDKCVec_u8Z InitFeatures_write(const struct LDKInitFeatures *NONNULL_PTR obj); + export function InitFeatures_write(obj: number): Uint8Array { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.InitFeatures_write(obj); + return decodeArray(nativeResponseValue); + } + // struct LDKCVec_u8Z NodeFeatures_write(const struct LDKNodeFeatures *NONNULL_PTR obj); + export function NodeFeatures_write(obj: number): Uint8Array { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.NodeFeatures_write(obj); + return decodeArray(nativeResponseValue); + } + // struct LDKCVec_u8Z ChannelFeatures_write(const struct LDKChannelFeatures *NONNULL_PTR obj); + export function ChannelFeatures_write(obj: number): Uint8Array { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.ChannelFeatures_write(obj); + return decodeArray(nativeResponseValue); + } + // struct LDKCResult_InitFeaturesDecodeErrorZ InitFeatures_read(struct LDKu8slice ser); + export function InitFeatures_read(ser: Uint8Array): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.InitFeatures_read(encodeArray(ser)); + return nativeResponseValue; + } + // struct LDKCResult_NodeFeaturesDecodeErrorZ NodeFeatures_read(struct LDKu8slice ser); + export function NodeFeatures_read(ser: Uint8Array): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.NodeFeatures_read(encodeArray(ser)); + return nativeResponseValue; + } + // struct LDKCResult_ChannelFeaturesDecodeErrorZ ChannelFeatures_read(struct LDKu8slice ser); + export function ChannelFeatures_read(ser: Uint8Array): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.ChannelFeatures_read(encodeArray(ser)); return nativeResponseValue; } + // void RouteHop_free(struct LDKRouteHop this_ptr); + export function RouteHop_free(this_ptr: number): void { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.RouteHop_free(this_ptr); + // debug statements here + } // struct LDKPublicKey RouteHop_get_pubkey(const struct LDKRouteHop *NONNULL_PTR this_ptr); export function RouteHop_get_pubkey(this_ptr: number): Uint8Array { if(!isWasmInitialized) { @@ -9328,21 +10774,21 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.RouteHop_new(encodeArray(pubkey_arg), node_features_arg, short_channel_id_arg, channel_features_arg, fee_msat_arg, cltv_expiry_delta_arg); return nativeResponseValue; } - // void Route_free(struct LDKRoute this_ptr); - export function Route_free(this_ptr: number): void { + // struct LDKRouteHop RouteHop_clone(const struct LDKRouteHop *NONNULL_PTR orig); + export function RouteHop_clone(orig: number): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.Route_free(this_ptr); - // debug statements here + const nativeResponseValue = wasm.RouteHop_clone(orig); + return nativeResponseValue; } - // struct LDKRoute Route_clone(const struct LDKRoute *NONNULL_PTR orig); - export function Route_clone(orig: number): number { + // void Route_free(struct LDKRoute this_ptr); + export function Route_free(this_ptr: number): void { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); } - const nativeResponseValue = wasm.Route_clone(orig); - return nativeResponseValue; + const nativeResponseValue = wasm.Route_free(this_ptr); + // debug statements here } // void Route_set_paths(struct LDKRoute *NONNULL_PTR this_ptr, struct LDKCVec_CVec_RouteHopZZ val); export function Route_set_paths(this_ptr: number, val: number[][]): void { @@ -9360,6 +10806,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.Route_new(paths_arg); return nativeResponseValue; } + // struct LDKRoute Route_clone(const struct LDKRoute *NONNULL_PTR orig); + export function Route_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.Route_clone(orig); + return nativeResponseValue; + } // struct LDKCVec_u8Z Route_write(const struct LDKRoute *NONNULL_PTR obj); export function Route_write(obj: number): Uint8Array { if(!isWasmInitialized) { @@ -9384,14 +10838,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.RouteHint_free(this_ptr); // debug statements here } - // struct LDKRouteHint RouteHint_clone(const struct LDKRouteHint *NONNULL_PTR orig); - export function RouteHint_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.RouteHint_clone(orig); - return nativeResponseValue; - } // struct LDKPublicKey RouteHint_get_src_node_id(const struct LDKRouteHint *NONNULL_PTR this_ptr); export function RouteHint_get_src_node_id(this_ptr: number): Uint8Array { if(!isWasmInitialized) { @@ -9480,6 +10926,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.RouteHint_new(encodeArray(src_node_id_arg), short_channel_id_arg, fees_arg, cltv_expiry_delta_arg, htlc_minimum_msat_arg); return nativeResponseValue; } + // struct LDKRouteHint RouteHint_clone(const struct LDKRouteHint *NONNULL_PTR orig); + export function RouteHint_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.RouteHint_clone(orig); + return nativeResponseValue; + } // struct LDKCResult_RouteLightningErrorZ get_route(struct LDKPublicKey our_node_id, const struct LDKNetworkGraph *NONNULL_PTR network, struct LDKPublicKey target, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKCVec_RouteHintZ last_hops, uint64_t final_value_msat, uint32_t final_cltv, struct LDKLogger logger); export function get_route(our_node_id: Uint8Array, network: number, target: Uint8Array, first_hops: number[], last_hops: number[], final_value_msat: number, final_cltv: number, logger: number): number { if(!isWasmInitialized) { @@ -9568,14 +11022,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.DirectionalChannelInfo_free(this_ptr); // debug statements here } - // struct LDKDirectionalChannelInfo DirectionalChannelInfo_clone(const struct LDKDirectionalChannelInfo *NONNULL_PTR orig); - export function DirectionalChannelInfo_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.DirectionalChannelInfo_clone(orig); - return nativeResponseValue; - } // uint32_t DirectionalChannelInfo_get_last_update(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr); export function DirectionalChannelInfo_get_last_update(this_ptr: number): number { if(!isWasmInitialized) { @@ -9672,6 +11118,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.DirectionalChannelInfo_set_last_update_message(this_ptr, val); // debug statements here } + // struct LDKDirectionalChannelInfo DirectionalChannelInfo_clone(const struct LDKDirectionalChannelInfo *NONNULL_PTR orig); + export function DirectionalChannelInfo_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.DirectionalChannelInfo_clone(orig); + return nativeResponseValue; + } // struct LDKCVec_u8Z DirectionalChannelInfo_write(const struct LDKDirectionalChannelInfo *NONNULL_PTR obj); export function DirectionalChannelInfo_write(obj: number): Uint8Array { if(!isWasmInitialized) { @@ -9680,7 +11134,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.DirectionalChannelInfo_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKDirectionalChannelInfo DirectionalChannelInfo_read(struct LDKu8slice ser); + // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ DirectionalChannelInfo_read(struct LDKu8slice ser); export function DirectionalChannelInfo_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -9800,7 +11254,7 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.ChannelInfo_write(obj); return decodeArray(nativeResponseValue); } - // struct LDKChannelInfo ChannelInfo_read(struct LDKu8slice ser); + // struct LDKCResult_ChannelInfoDecodeErrorZ ChannelInfo_read(struct LDKu8slice ser); export function ChannelInfo_read(ser: Uint8Array): number { if(!isWasmInitialized) { throw new Error("initializeWasm() must be awaited first!"); @@ -9816,14 +11270,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.RoutingFees_free(this_ptr); // debug statements here } - // struct LDKRoutingFees RoutingFees_clone(const struct LDKRoutingFees *NONNULL_PTR orig); - export function RoutingFees_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.RoutingFees_clone(orig); - return nativeResponseValue; - } // uint32_t RoutingFees_get_base_msat(const struct LDKRoutingFees *NONNULL_PTR this_ptr); export function RoutingFees_get_base_msat(this_ptr: number): number { if(!isWasmInitialized) { @@ -9864,6 +11310,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.RoutingFees_new(base_msat_arg, proportional_millionths_arg); return nativeResponseValue; } + // struct LDKRoutingFees RoutingFees_clone(const struct LDKRoutingFees *NONNULL_PTR orig); + export function RoutingFees_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.RoutingFees_clone(orig); + return nativeResponseValue; + } // struct LDKCResult_RoutingFeesDecodeErrorZ RoutingFees_read(struct LDKu8slice ser); export function RoutingFees_read(ser: Uint8Array): number { if(!isWasmInitialized) { @@ -9888,14 +11342,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.NodeAnnouncementInfo_free(this_ptr); // debug statements here } - // struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_clone(const struct LDKNodeAnnouncementInfo *NONNULL_PTR orig); - export function NodeAnnouncementInfo_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.NodeAnnouncementInfo_clone(orig); - return nativeResponseValue; - } // struct LDKNodeFeatures NodeAnnouncementInfo_get_features(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr); export function NodeAnnouncementInfo_get_features(this_ptr: number): number { if(!isWasmInitialized) { @@ -9992,6 +11438,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.NodeAnnouncementInfo_new(features_arg, last_update_arg, encodeArray(rgb_arg), encodeArray(alias_arg), addresses_arg, announcement_message_arg); return nativeResponseValue; } + // struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_clone(const struct LDKNodeAnnouncementInfo *NONNULL_PTR orig); + export function NodeAnnouncementInfo_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.NodeAnnouncementInfo_clone(orig); + return nativeResponseValue; + } // struct LDKCVec_u8Z NodeAnnouncementInfo_write(const struct LDKNodeAnnouncementInfo *NONNULL_PTR obj); export function NodeAnnouncementInfo_write(obj: number): Uint8Array { if(!isWasmInitialized) { @@ -10016,14 +11470,6 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.NodeInfo_free(this_ptr); // debug statements here } - // struct LDKNodeInfo NodeInfo_clone(const struct LDKNodeInfo *NONNULL_PTR orig); - export function NodeInfo_clone(orig: number): number { - if(!isWasmInitialized) { - throw new Error("initializeWasm() must be awaited first!"); - } - const nativeResponseValue = wasm.NodeInfo_clone(orig); - return nativeResponseValue; - } // void NodeInfo_set_channels(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val); export function NodeInfo_set_channels(this_ptr: number, val: number[]): void { if(!isWasmInitialized) { @@ -10072,6 +11518,14 @@ public static native long new_empty_slice_vec(); const nativeResponseValue = wasm.NodeInfo_new(channels_arg, lowest_inbound_channel_fees_arg, announcement_info_arg); return nativeResponseValue; } + // struct LDKNodeInfo NodeInfo_clone(const struct LDKNodeInfo *NONNULL_PTR orig); + export function NodeInfo_clone(orig: number): number { + if(!isWasmInitialized) { + throw new Error("initializeWasm() must be awaited first!"); + } + const nativeResponseValue = wasm.NodeInfo_clone(orig); + return nativeResponseValue; + } // struct LDKCVec_u8Z NodeInfo_write(const struct LDKNodeInfo *NONNULL_PTR obj); export function NodeInfo_write(obj: number): Uint8Array { if(!isWasmInitialized) { diff --git a/ts/structs/AcceptChannel.ts b/ts/structs/AcceptChannel.ts index e9719e48..ba21a7ca 100644 --- a/ts/structs/AcceptChannel.ts +++ b/ts/structs/AcceptChannel.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.AcceptChannel_free(this.ptr); } } - public AcceptChannel clone() { - number ret = bindings.AcceptChannel_clone(this.ptr); - const ret_hu_conv: AcceptChannel = new AcceptChannel(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_temporary_channel_id() { Uint8Array ret = bindings.AcceptChannel_get_temporary_channel_id(this.ptr); return ret; @@ -151,15 +144,21 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.AcceptChannel_set_first_per_commitment_point(this.ptr, val); } + public AcceptChannel clone() { + number ret = bindings.AcceptChannel_clone(this.ptr); + const ret_hu_conv: AcceptChannel = new AcceptChannel(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.AcceptChannel_write(this.ptr); return ret; } - public static AcceptChannel constructor_read(Uint8Array ser) { + public static Result_AcceptChannelDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.AcceptChannel_read(ser); - const ret_hu_conv: AcceptChannel = new AcceptChannel(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_AcceptChannelDecodeErrorZ ret_hu_conv = Result_AcceptChannelDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/AnnouncementSignatures.ts b/ts/structs/AnnouncementSignatures.ts index 85625d72..78905ec3 100644 --- a/ts/structs/AnnouncementSignatures.ts +++ b/ts/structs/AnnouncementSignatures.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.AnnouncementSignatures_free(this.ptr); } } - public AnnouncementSignatures clone() { - number ret = bindings.AnnouncementSignatures_clone(this.ptr); - const ret_hu_conv: AnnouncementSignatures = new AnnouncementSignatures(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_channel_id() { Uint8Array ret = bindings.AnnouncementSignatures_get_channel_id(this.ptr); return ret; @@ -68,15 +61,21 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public AnnouncementSignatures clone() { + number ret = bindings.AnnouncementSignatures_clone(this.ptr); + const ret_hu_conv: AnnouncementSignatures = new AnnouncementSignatures(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.AnnouncementSignatures_write(this.ptr); return ret; } - public static AnnouncementSignatures constructor_read(Uint8Array ser) { + public static Result_AnnouncementSignaturesDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.AnnouncementSignatures_read(ser); - const ret_hu_conv: AnnouncementSignatures = new AnnouncementSignatures(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_AnnouncementSignaturesDecodeErrorZ ret_hu_conv = Result_AnnouncementSignaturesDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/BuiltCommitmentTransaction.ts b/ts/structs/BuiltCommitmentTransaction.ts index 56f99778..7d2e387c 100644 --- a/ts/structs/BuiltCommitmentTransaction.ts +++ b/ts/structs/BuiltCommitmentTransaction.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.BuiltCommitmentTransaction_free(this.ptr); } } - public BuiltCommitmentTransaction clone() { - number ret = bindings.BuiltCommitmentTransaction_clone(this.ptr); - const ret_hu_conv: BuiltCommitmentTransaction = new BuiltCommitmentTransaction(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_transaction() { Uint8Array ret = bindings.BuiltCommitmentTransaction_get_transaction(this.ptr); return ret; @@ -50,15 +43,21 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public BuiltCommitmentTransaction clone() { + number ret = bindings.BuiltCommitmentTransaction_clone(this.ptr); + const ret_hu_conv: BuiltCommitmentTransaction = new BuiltCommitmentTransaction(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.BuiltCommitmentTransaction_write(this.ptr); return ret; } - public static BuiltCommitmentTransaction constructor_read(Uint8Array ser) { + public static Result_BuiltCommitmentTransactionDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.BuiltCommitmentTransaction_read(ser); - const ret_hu_conv: BuiltCommitmentTransaction = new BuiltCommitmentTransaction(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_BuiltCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_BuiltCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/ChainMonitor.ts b/ts/structs/ChainMonitor.ts index a8312b90..24938804 100644 --- a/ts/structs/ChainMonitor.ts +++ b/ts/structs/ChainMonitor.ts @@ -19,7 +19,7 @@ import * as bindings from '../bindings' // TODO: figure out location } } public void block_connected(Uint8Array header, TwoTuple[] txdata, number height) { - bindings.ChainMonitor_block_connected(this.ptr, header, (number[])Arrays.stream(txdata).map(arr_conv_30 -> bindings.C2Tuple_usizeTransactionZ_new(arr_conv_30.a, arr_conv_30.b)).toArray(), height); + bindings.ChainMonitor_block_connected(this.ptr, header, Arrays.stream(txdata).map(arr_conv_30 -> bindings.C2Tuple_usizeTransactionZ_new(arr_conv_30.a, arr_conv_30.b)).toArray(number[]::new), height); /* TODO 2 TwoTuple */; } diff --git a/ts/structs/ChannelAnnouncement.ts b/ts/structs/ChannelAnnouncement.ts index 0ab592e2..5111590e 100644 --- a/ts/structs/ChannelAnnouncement.ts +++ b/ts/structs/ChannelAnnouncement.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ChannelAnnouncement_free(this.ptr); } } - public ChannelAnnouncement clone() { - number ret = bindings.ChannelAnnouncement_clone(this.ptr); - const ret_hu_conv: ChannelAnnouncement = new ChannelAnnouncement(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_node_signature_1() { Uint8Array ret = bindings.ChannelAnnouncement_get_node_signature_1(this.ptr); return ret; @@ -81,15 +74,21 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public ChannelAnnouncement clone() { + number ret = bindings.ChannelAnnouncement_clone(this.ptr); + const ret_hu_conv: ChannelAnnouncement = new ChannelAnnouncement(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.ChannelAnnouncement_write(this.ptr); return ret; } - public static ChannelAnnouncement constructor_read(Uint8Array ser) { + public static Result_ChannelAnnouncementDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.ChannelAnnouncement_read(ser); - const ret_hu_conv: ChannelAnnouncement = new ChannelAnnouncement(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_ChannelAnnouncementDecodeErrorZ ret_hu_conv = Result_ChannelAnnouncementDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/ChannelConfig.ts b/ts/structs/ChannelConfig.ts index 85d0fa73..9bdf48c6 100644 --- a/ts/structs/ChannelConfig.ts +++ b/ts/structs/ChannelConfig.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ChannelConfig_free(this.ptr); } } - public ChannelConfig clone() { - number ret = bindings.ChannelConfig_clone(this.ptr); - const ret_hu_conv: ChannelConfig = new ChannelConfig(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public number get_fee_proportional_millionths() { number ret = bindings.ChannelConfig_get_fee_proportional_millionths(this.ptr); return ret; @@ -59,6 +52,13 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public ChannelConfig clone() { + number ret = bindings.ChannelConfig_clone(this.ptr); + const ret_hu_conv: ChannelConfig = new ChannelConfig(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static ChannelConfig constructor_default() { number ret = bindings.ChannelConfig_default(); const ret_hu_conv: ChannelConfig = new ChannelConfig(null, ret); @@ -71,10 +71,9 @@ import * as bindings from '../bindings' // TODO: figure out location return ret; } - public static ChannelConfig constructor_read(Uint8Array ser) { + public static Result_ChannelConfigDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.ChannelConfig_read(ser); - const ret_hu_conv: ChannelConfig = new ChannelConfig(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_ChannelConfigDecodeErrorZ ret_hu_conv = Result_ChannelConfigDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/ChannelDetails.ts b/ts/structs/ChannelDetails.ts index 5e8c88a2..b7ef907c 100644 --- a/ts/structs/ChannelDetails.ts +++ b/ts/structs/ChannelDetails.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ChannelDetails_free(this.ptr); } } - public ChannelDetails clone() { - number ret = bindings.ChannelDetails_clone(this.ptr); - const ret_hu_conv: ChannelDetails = new ChannelDetails(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_channel_id() { Uint8Array ret = bindings.ChannelDetails_get_channel_id(this.ptr); return ret; @@ -53,14 +46,6 @@ import * as bindings from '../bindings' // TODO: figure out location public void set_counterparty_features(InitFeatures val) { bindings.ChannelDetails_set_counterparty_features(this.ptr, val == null ? 0 : val.ptr & ~1); this.ptrs_to.add(val); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, val is reset to null and is now a dummy object. - val.ptr = 0; } public number get_channel_value_satoshis() { @@ -108,4 +93,11 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ChannelDetails_set_is_live(this.ptr, val); } + public ChannelDetails clone() { + number ret = bindings.ChannelDetails_clone(this.ptr); + const ret_hu_conv: ChannelDetails = new ChannelDetails(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + } diff --git a/ts/structs/ChannelFeatures.ts b/ts/structs/ChannelFeatures.ts index c0be3bba..1b6dd141 100644 --- a/ts/structs/ChannelFeatures.ts +++ b/ts/structs/ChannelFeatures.ts @@ -18,4 +18,36 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ChannelFeatures_free(this.ptr); } } + public ChannelFeatures clone() { + number ret = bindings.ChannelFeatures_clone(this.ptr); + const ret_hu_conv: ChannelFeatures = new ChannelFeatures(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + + public static ChannelFeatures constructor_empty() { + number ret = bindings.ChannelFeatures_empty(); + const ret_hu_conv: ChannelFeatures = new ChannelFeatures(null, ret); + ret_hu_conv.ptrs_to.add(ret_hu_conv); + return ret_hu_conv; + } + + public static ChannelFeatures constructor_known() { + number ret = bindings.ChannelFeatures_known(); + const ret_hu_conv: ChannelFeatures = new ChannelFeatures(null, ret); + ret_hu_conv.ptrs_to.add(ret_hu_conv); + return ret_hu_conv; + } + + public Uint8Array write() { + Uint8Array ret = bindings.ChannelFeatures_write(this.ptr); + return ret; + } + + public static Result_ChannelFeaturesDecodeErrorZ constructor_read(Uint8Array ser) { + number ret = bindings.ChannelFeatures_read(ser); + Result_ChannelFeaturesDecodeErrorZ ret_hu_conv = Result_ChannelFeaturesDecodeErrorZ.constr_from_ptr(ret); + return ret_hu_conv; + } + } diff --git a/ts/structs/ChannelHandshakeConfig.ts b/ts/structs/ChannelHandshakeConfig.ts index e199a1e3..1db4cd89 100644 --- a/ts/structs/ChannelHandshakeConfig.ts +++ b/ts/structs/ChannelHandshakeConfig.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ChannelHandshakeConfig_free(this.ptr); } } - public ChannelHandshakeConfig clone() { - number ret = bindings.ChannelHandshakeConfig_clone(this.ptr); - const ret_hu_conv: ChannelHandshakeConfig = new ChannelHandshakeConfig(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public number get_minimum_depth() { number ret = bindings.ChannelHandshakeConfig_get_minimum_depth(this.ptr); return ret; @@ -59,6 +52,13 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public ChannelHandshakeConfig clone() { + number ret = bindings.ChannelHandshakeConfig_clone(this.ptr); + const ret_hu_conv: ChannelHandshakeConfig = new ChannelHandshakeConfig(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static ChannelHandshakeConfig constructor_default() { number ret = bindings.ChannelHandshakeConfig_default(); const ret_hu_conv: ChannelHandshakeConfig = new ChannelHandshakeConfig(null, ret); diff --git a/ts/structs/ChannelHandshakeLimits.ts b/ts/structs/ChannelHandshakeLimits.ts index f0c549ba..3dfab391 100644 --- a/ts/structs/ChannelHandshakeLimits.ts +++ b/ts/structs/ChannelHandshakeLimits.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ChannelHandshakeLimits_free(this.ptr); } } - public ChannelHandshakeLimits clone() { - number ret = bindings.ChannelHandshakeLimits_clone(this.ptr); - const ret_hu_conv: ChannelHandshakeLimits = new ChannelHandshakeLimits(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public number get_min_funding_satoshis() { number ret = bindings.ChannelHandshakeLimits_get_min_funding_satoshis(this.ptr); return ret; @@ -122,6 +115,13 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public ChannelHandshakeLimits clone() { + number ret = bindings.ChannelHandshakeLimits_clone(this.ptr); + const ret_hu_conv: ChannelHandshakeLimits = new ChannelHandshakeLimits(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static ChannelHandshakeLimits constructor_default() { number ret = bindings.ChannelHandshakeLimits_default(); const ret_hu_conv: ChannelHandshakeLimits = new ChannelHandshakeLimits(null, ret); diff --git a/ts/structs/ChannelInfo.ts b/ts/structs/ChannelInfo.ts index b99fd456..6ea880e4 100644 --- a/ts/structs/ChannelInfo.ts +++ b/ts/structs/ChannelInfo.ts @@ -28,14 +28,6 @@ import * as bindings from '../bindings' // TODO: figure out location public void set_features(ChannelFeatures val) { bindings.ChannelInfo_set_features(this.ptr, val == null ? 0 : val.ptr & ~1); this.ptrs_to.add(val); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, val is reset to null and is now a dummy object. - val.ptr = 0; } public Uint8Array get_node_one() { @@ -97,10 +89,9 @@ import * as bindings from '../bindings' // TODO: figure out location return ret; } - public static ChannelInfo constructor_read(Uint8Array ser) { + public static Result_ChannelInfoDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.ChannelInfo_read(ser); - const ret_hu_conv: ChannelInfo = new ChannelInfo(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_ChannelInfoDecodeErrorZ ret_hu_conv = Result_ChannelInfoDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/ChannelManager.ts b/ts/structs/ChannelManager.ts index 27570f00..3d50c586 100644 --- a/ts/structs/ChannelManager.ts +++ b/ts/structs/ChannelManager.ts @@ -91,7 +91,7 @@ import * as bindings from '../bindings' // TODO: figure out location } public void broadcast_node_announcement(Uint8Array rgb, Uint8Array alias, NetAddress[] addresses) { - bindings.ChannelManager_broadcast_node_announcement(this.ptr, rgb, alias, (number[])Arrays.stream(addresses).map(arr_conv_12 -> arr_conv_12.ptr).toArray()); + bindings.ChannelManager_broadcast_node_announcement(this.ptr, rgb, alias, Arrays.stream(addresses).map(arr_conv_12 -> arr_conv_12.ptr).toArray(number[]::new)); /* TODO 2 NetAddress */; } @@ -138,7 +138,7 @@ import * as bindings from '../bindings' // TODO: figure out location } public void block_connected(Uint8Array header, TwoTuple[] txdata, number height) { - bindings.ChannelManager_block_connected(this.ptr, header, (number[])Arrays.stream(txdata).map(arr_conv_30 -> bindings.C2Tuple_usizeTransactionZ_new(arr_conv_30.a, arr_conv_30.b)).toArray(), height); + bindings.ChannelManager_block_connected(this.ptr, header, Arrays.stream(txdata).map(arr_conv_30 -> bindings.C2Tuple_usizeTransactionZ_new(arr_conv_30.a, arr_conv_30.b)).toArray(number[]::new), height); /* TODO 2 TwoTuple */; } diff --git a/ts/structs/ChannelManagerReadArgs.ts b/ts/structs/ChannelManagerReadArgs.ts index ff9865e9..7db1a875 100644 --- a/ts/structs/ChannelManagerReadArgs.ts +++ b/ts/structs/ChannelManagerReadArgs.ts @@ -91,7 +91,7 @@ import * as bindings from '../bindings' // TODO: figure out location } public static ChannelManagerReadArgs constructor_new(KeysInterface keys_manager, FeeEstimator fee_estimator, Watch chain_monitor, BroadcasterInterface tx_broadcaster, Logger logger, UserConfig default_config, ChannelMonitor[] channel_monitors) { - number ret = bindings.ChannelManagerReadArgs_new(keys_manager == null ? 0 : keys_manager.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, chain_monitor == null ? 0 : chain_monitor.ptr, tx_broadcaster == null ? 0 : tx_broadcaster.ptr, logger == null ? 0 : logger.ptr, default_config == null ? 0 : default_config.ptr & ~1, (number[])Arrays.stream(channel_monitors).map(arr_conv_16 -> arr_conv_16 == null ? 0 : arr_conv_16.ptr & ~1).toArray()); + number ret = bindings.ChannelManagerReadArgs_new(keys_manager == null ? 0 : keys_manager.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, chain_monitor == null ? 0 : chain_monitor.ptr, tx_broadcaster == null ? 0 : tx_broadcaster.ptr, logger == null ? 0 : logger.ptr, default_config == null ? 0 : default_config.ptr & ~1, Arrays.stream(channel_monitors).map(arr_conv_16 -> arr_conv_16 == null ? 0 : arr_conv_16.ptr & ~1).toArray(number[]::new)); const ret_hu_conv: ChannelManagerReadArgs = new ChannelManagerReadArgs(null, ret); ret_hu_conv.ptrs_to.add(ret_hu_conv); ret_hu_conv.ptrs_to.add(keys_manager); diff --git a/ts/structs/ChannelMessageHandler.ts b/ts/structs/ChannelMessageHandler.ts index aff48916..7b1654f5 100644 --- a/ts/structs/ChannelMessageHandler.ts +++ b/ts/structs/ChannelMessageHandler.ts @@ -166,28 +166,12 @@ import * as bindings from '../bindings' // TODO: figure out location public void handle_open_channel(Uint8Array their_node_id, InitFeatures their_features, OpenChannel msg) { bindings.ChannelMessageHandler_handle_open_channel(this.ptr, their_node_id, their_features == null ? 0 : their_features.ptr & ~1, msg == null ? 0 : msg.ptr & ~1); this.ptrs_to.add(their_features); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, their_features is reset to null and is now a dummy object. - their_features.ptr = 0; this.ptrs_to.add(msg); } public void handle_accept_channel(Uint8Array their_node_id, InitFeatures their_features, AcceptChannel msg) { bindings.ChannelMessageHandler_handle_accept_channel(this.ptr, their_node_id, their_features == null ? 0 : their_features.ptr & ~1, msg == null ? 0 : msg.ptr & ~1); this.ptrs_to.add(their_features); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, their_features is reset to null and is now a dummy object. - their_features.ptr = 0; this.ptrs_to.add(msg); } diff --git a/ts/structs/ChannelMonitor.ts b/ts/structs/ChannelMonitor.ts index ff746a20..0d9ad396 100644 --- a/ts/structs/ChannelMonitor.ts +++ b/ts/structs/ChannelMonitor.ts @@ -89,7 +89,7 @@ import * as bindings from '../bindings' // TODO: figure out location } public TwoTuple[]>[] block_connected(Uint8Array header, TwoTuple[] txdata, number height, BroadcasterInterface broadcaster, FeeEstimator fee_estimator, Logger logger) { - number[] ret = bindings.ChannelMonitor_block_connected(this.ptr, header, (number[])Arrays.stream(txdata).map(arr_conv_30 -> bindings.C2Tuple_usizeTransactionZ_new(arr_conv_30.a, arr_conv_30.b)).toArray(), height, broadcaster == null ? 0 : broadcaster.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, logger == null ? 0 : logger.ptr); + number[] ret = bindings.ChannelMonitor_block_connected(this.ptr, header, Arrays.stream(txdata).map(arr_conv_30 -> bindings.C2Tuple_usizeTransactionZ_new(arr_conv_30.a, arr_conv_30.b)).toArray(number[]::new), height, broadcaster == null ? 0 : broadcaster.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, logger == null ? 0 : logger.ptr); TwoTuple[]>[] arr_conv_49_arr = new TwoTuple[ret.length]; for (int x = 0; x < ret.length; x++) { number arr_conv_49 = ret[x]; diff --git a/ts/structs/ChannelMonitorUpdate.ts b/ts/structs/ChannelMonitorUpdate.ts index 3217804e..80e11cd1 100644 --- a/ts/structs/ChannelMonitorUpdate.ts +++ b/ts/structs/ChannelMonitorUpdate.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ChannelMonitorUpdate_free(this.ptr); } } - public ChannelMonitorUpdate clone() { - number ret = bindings.ChannelMonitorUpdate_clone(this.ptr); - const ret_hu_conv: ChannelMonitorUpdate = new ChannelMonitorUpdate(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public number get_update_id() { number ret = bindings.ChannelMonitorUpdate_get_update_id(this.ptr); return ret; @@ -34,6 +27,13 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ChannelMonitorUpdate_set_update_id(this.ptr, val); } + public ChannelMonitorUpdate clone() { + number ret = bindings.ChannelMonitorUpdate_clone(this.ptr); + const ret_hu_conv: ChannelMonitorUpdate = new ChannelMonitorUpdate(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.ChannelMonitorUpdate_write(this.ptr); return ret; diff --git a/ts/structs/ChannelPublicKeys.ts b/ts/structs/ChannelPublicKeys.ts index 572c44ca..758d809b 100644 --- a/ts/structs/ChannelPublicKeys.ts +++ b/ts/structs/ChannelPublicKeys.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ChannelPublicKeys_free(this.ptr); } } - public ChannelPublicKeys clone() { - number ret = bindings.ChannelPublicKeys_clone(this.ptr); - const ret_hu_conv: ChannelPublicKeys = new ChannelPublicKeys(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_funding_pubkey() { Uint8Array ret = bindings.ChannelPublicKeys_get_funding_pubkey(this.ptr); return ret; @@ -77,15 +70,21 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public ChannelPublicKeys clone() { + number ret = bindings.ChannelPublicKeys_clone(this.ptr); + const ret_hu_conv: ChannelPublicKeys = new ChannelPublicKeys(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.ChannelPublicKeys_write(this.ptr); return ret; } - public static ChannelPublicKeys constructor_read(Uint8Array ser) { + public static Result_ChannelPublicKeysDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.ChannelPublicKeys_read(ser); - const ret_hu_conv: ChannelPublicKeys = new ChannelPublicKeys(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_ChannelPublicKeysDecodeErrorZ ret_hu_conv = Result_ChannelPublicKeysDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/ChannelReestablish.ts b/ts/structs/ChannelReestablish.ts index 9dfd0976..0be4b49d 100644 --- a/ts/structs/ChannelReestablish.ts +++ b/ts/structs/ChannelReestablish.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ChannelReestablish_free(this.ptr); } } - public ChannelReestablish clone() { - number ret = bindings.ChannelReestablish_clone(this.ptr); - const ret_hu_conv: ChannelReestablish = new ChannelReestablish(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_channel_id() { Uint8Array ret = bindings.ChannelReestablish_get_channel_id(this.ptr); return ret; @@ -52,6 +45,13 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ChannelReestablish_set_next_remote_commitment_number(this.ptr, val); } + public ChannelReestablish clone() { + number ret = bindings.ChannelReestablish_clone(this.ptr); + const ret_hu_conv: ChannelReestablish = new ChannelReestablish(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.ChannelReestablish_write(this.ptr); return ret; diff --git a/ts/structs/ChannelTransactionParameters.ts b/ts/structs/ChannelTransactionParameters.ts index 3a9d9016..1877ccee 100644 --- a/ts/structs/ChannelTransactionParameters.ts +++ b/ts/structs/ChannelTransactionParameters.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ChannelTransactionParameters_free(this.ptr); } } - public ChannelTransactionParameters clone() { - number ret = bindings.ChannelTransactionParameters_clone(this.ptr); - const ret_hu_conv: ChannelTransactionParameters = new ChannelTransactionParameters(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public ChannelPublicKeys get_holder_pubkeys() { number ret = bindings.ChannelTransactionParameters_get_holder_pubkeys(this.ptr); const ret_hu_conv: ChannelPublicKeys = new ChannelPublicKeys(null, ret); @@ -89,6 +82,13 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public ChannelTransactionParameters clone() { + number ret = bindings.ChannelTransactionParameters_clone(this.ptr); + const ret_hu_conv: ChannelTransactionParameters = new ChannelTransactionParameters(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public boolean is_populated() { boolean ret = bindings.ChannelTransactionParameters_is_populated(this.ptr); return ret; @@ -113,10 +113,9 @@ import * as bindings from '../bindings' // TODO: figure out location return ret; } - public static ChannelTransactionParameters constructor_read(Uint8Array ser) { + public static Result_ChannelTransactionParametersDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.ChannelTransactionParameters_read(ser); - const ret_hu_conv: ChannelTransactionParameters = new ChannelTransactionParameters(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_ChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_ChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/ChannelUpdate.ts b/ts/structs/ChannelUpdate.ts index 524e9a54..61c2af4e 100644 --- a/ts/structs/ChannelUpdate.ts +++ b/ts/structs/ChannelUpdate.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ChannelUpdate_free(this.ptr); } } - public ChannelUpdate clone() { - number ret = bindings.ChannelUpdate_clone(this.ptr); - const ret_hu_conv: ChannelUpdate = new ChannelUpdate(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_signature() { Uint8Array ret = bindings.ChannelUpdate_get_signature(this.ptr); return ret; @@ -54,15 +47,21 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public ChannelUpdate clone() { + number ret = bindings.ChannelUpdate_clone(this.ptr); + const ret_hu_conv: ChannelUpdate = new ChannelUpdate(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.ChannelUpdate_write(this.ptr); return ret; } - public static ChannelUpdate constructor_read(Uint8Array ser) { + public static Result_ChannelUpdateDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.ChannelUpdate_read(ser); - const ret_hu_conv: ChannelUpdate = new ChannelUpdate(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_ChannelUpdateDecodeErrorZ ret_hu_conv = Result_ChannelUpdateDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/ClosingSigned.ts b/ts/structs/ClosingSigned.ts index cd6eb15b..5056beda 100644 --- a/ts/structs/ClosingSigned.ts +++ b/ts/structs/ClosingSigned.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ClosingSigned_free(this.ptr); } } - public ClosingSigned clone() { - number ret = bindings.ClosingSigned_clone(this.ptr); - const ret_hu_conv: ClosingSigned = new ClosingSigned(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_channel_id() { Uint8Array ret = bindings.ClosingSigned_get_channel_id(this.ptr); return ret; @@ -59,15 +52,21 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public ClosingSigned clone() { + number ret = bindings.ClosingSigned_clone(this.ptr); + const ret_hu_conv: ClosingSigned = new ClosingSigned(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.ClosingSigned_write(this.ptr); return ret; } - public static ClosingSigned constructor_read(Uint8Array ser) { + public static Result_ClosingSignedDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.ClosingSigned_read(ser); - const ret_hu_conv: ClosingSigned = new ClosingSigned(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_ClosingSignedDecodeErrorZ ret_hu_conv = Result_ClosingSignedDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/CommitmentSigned.ts b/ts/structs/CommitmentSigned.ts index 58089b3b..0c99e819 100644 --- a/ts/structs/CommitmentSigned.ts +++ b/ts/structs/CommitmentSigned.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.CommitmentSigned_free(this.ptr); } } - public CommitmentSigned clone() { - number ret = bindings.CommitmentSigned_clone(this.ptr); - const ret_hu_conv: CommitmentSigned = new CommitmentSigned(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_channel_id() { Uint8Array ret = bindings.CommitmentSigned_get_channel_id(this.ptr); return ret; @@ -54,15 +47,21 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public CommitmentSigned clone() { + number ret = bindings.CommitmentSigned_clone(this.ptr); + const ret_hu_conv: CommitmentSigned = new CommitmentSigned(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.CommitmentSigned_write(this.ptr); return ret; } - public static CommitmentSigned constructor_read(Uint8Array ser) { + public static Result_CommitmentSignedDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.CommitmentSigned_read(ser); - const ret_hu_conv: CommitmentSigned = new CommitmentSigned(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_CommitmentSignedDecodeErrorZ ret_hu_conv = Result_CommitmentSignedDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/CommitmentTransaction.ts b/ts/structs/CommitmentTransaction.ts index 4d13ed9a..97c85a9f 100644 --- a/ts/structs/CommitmentTransaction.ts +++ b/ts/structs/CommitmentTransaction.ts @@ -30,10 +30,9 @@ import * as bindings from '../bindings' // TODO: figure out location return ret; } - public static CommitmentTransaction constructor_read(Uint8Array ser) { + public static Result_CommitmentTransactionDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.CommitmentTransaction_read(ser); - const ret_hu_conv: CommitmentTransaction = new CommitmentTransaction(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_CommitmentTransactionDecodeErrorZ ret_hu_conv = Result_CommitmentTransactionDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/CommitmentUpdate.ts b/ts/structs/CommitmentUpdate.ts index 3564c699..685dee86 100644 --- a/ts/structs/CommitmentUpdate.ts +++ b/ts/structs/CommitmentUpdate.ts @@ -18,30 +18,23 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.CommitmentUpdate_free(this.ptr); } } - public CommitmentUpdate clone() { - number ret = bindings.CommitmentUpdate_clone(this.ptr); - const ret_hu_conv: CommitmentUpdate = new CommitmentUpdate(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public void set_update_add_htlcs(UpdateAddHTLC[] val) { - bindings.CommitmentUpdate_set_update_add_htlcs(this.ptr, (number[])Arrays.stream(val).map(arr_conv_15 -> arr_conv_15 == null ? 0 : arr_conv_15.ptr & ~1).toArray()); + bindings.CommitmentUpdate_set_update_add_htlcs(this.ptr, Arrays.stream(val).map(arr_conv_15 -> arr_conv_15 == null ? 0 : arr_conv_15.ptr & ~1).toArray(number[]::new)); /* TODO 2 UpdateAddHTLC */; } public void set_update_fulfill_htlcs(UpdateFulfillHTLC[] val) { - bindings.CommitmentUpdate_set_update_fulfill_htlcs(this.ptr, (number[])Arrays.stream(val).map(arr_conv_19 -> arr_conv_19 == null ? 0 : arr_conv_19.ptr & ~1).toArray()); + bindings.CommitmentUpdate_set_update_fulfill_htlcs(this.ptr, Arrays.stream(val).map(arr_conv_19 -> arr_conv_19 == null ? 0 : arr_conv_19.ptr & ~1).toArray(number[]::new)); /* TODO 2 UpdateFulfillHTLC */; } public void set_update_fail_htlcs(UpdateFailHTLC[] val) { - bindings.CommitmentUpdate_set_update_fail_htlcs(this.ptr, (number[])Arrays.stream(val).map(arr_conv_16 -> arr_conv_16 == null ? 0 : arr_conv_16.ptr & ~1).toArray()); + bindings.CommitmentUpdate_set_update_fail_htlcs(this.ptr, Arrays.stream(val).map(arr_conv_16 -> arr_conv_16 == null ? 0 : arr_conv_16.ptr & ~1).toArray(number[]::new)); /* TODO 2 UpdateFailHTLC */; } public void set_update_fail_malformed_htlcs(UpdateFailMalformedHTLC[] val) { - bindings.CommitmentUpdate_set_update_fail_malformed_htlcs(this.ptr, (number[])Arrays.stream(val).map(arr_conv_25 -> arr_conv_25 == null ? 0 : arr_conv_25.ptr & ~1).toArray()); + bindings.CommitmentUpdate_set_update_fail_malformed_htlcs(this.ptr, Arrays.stream(val).map(arr_conv_25 -> arr_conv_25 == null ? 0 : arr_conv_25.ptr & ~1).toArray(number[]::new)); /* TODO 2 UpdateFailMalformedHTLC */; } @@ -70,7 +63,7 @@ import * as bindings from '../bindings' // TODO: figure out location } public static CommitmentUpdate constructor_new(UpdateAddHTLC[] update_add_htlcs_arg, UpdateFulfillHTLC[] update_fulfill_htlcs_arg, UpdateFailHTLC[] update_fail_htlcs_arg, UpdateFailMalformedHTLC[] update_fail_malformed_htlcs_arg, UpdateFee update_fee_arg, CommitmentSigned commitment_signed_arg) { - number ret = bindings.CommitmentUpdate_new((number[])Arrays.stream(update_add_htlcs_arg).map(arr_conv_15 -> arr_conv_15 == null ? 0 : arr_conv_15.ptr & ~1).toArray(), (number[])Arrays.stream(update_fulfill_htlcs_arg).map(arr_conv_19 -> arr_conv_19 == null ? 0 : arr_conv_19.ptr & ~1).toArray(), (number[])Arrays.stream(update_fail_htlcs_arg).map(arr_conv_16 -> arr_conv_16 == null ? 0 : arr_conv_16.ptr & ~1).toArray(), (number[])Arrays.stream(update_fail_malformed_htlcs_arg).map(arr_conv_25 -> arr_conv_25 == null ? 0 : arr_conv_25.ptr & ~1).toArray(), update_fee_arg == null ? 0 : update_fee_arg.ptr & ~1, commitment_signed_arg == null ? 0 : commitment_signed_arg.ptr & ~1); + number ret = bindings.CommitmentUpdate_new(Arrays.stream(update_add_htlcs_arg).map(arr_conv_15 -> arr_conv_15 == null ? 0 : arr_conv_15.ptr & ~1).toArray(number[]::new), Arrays.stream(update_fulfill_htlcs_arg).map(arr_conv_19 -> arr_conv_19 == null ? 0 : arr_conv_19.ptr & ~1).toArray(number[]::new), Arrays.stream(update_fail_htlcs_arg).map(arr_conv_16 -> arr_conv_16 == null ? 0 : arr_conv_16.ptr & ~1).toArray(number[]::new), Arrays.stream(update_fail_malformed_htlcs_arg).map(arr_conv_25 -> arr_conv_25 == null ? 0 : arr_conv_25.ptr & ~1).toArray(number[]::new), update_fee_arg == null ? 0 : update_fee_arg.ptr & ~1, commitment_signed_arg == null ? 0 : commitment_signed_arg.ptr & ~1); const ret_hu_conv: CommitmentUpdate = new CommitmentUpdate(null, ret); ret_hu_conv.ptrs_to.add(ret_hu_conv); /* TODO 2 UpdateAddHTLC */; @@ -82,4 +75,11 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public CommitmentUpdate clone() { + number ret = bindings.CommitmentUpdate_clone(this.ptr); + const ret_hu_conv: CommitmentUpdate = new CommitmentUpdate(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + } diff --git a/ts/structs/CounterpartyChannelTransactionParameters.ts b/ts/structs/CounterpartyChannelTransactionParameters.ts index de6a67b8..c30efd96 100644 --- a/ts/structs/CounterpartyChannelTransactionParameters.ts +++ b/ts/structs/CounterpartyChannelTransactionParameters.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.CounterpartyChannelTransactionParameters_free(this.ptr); } } - public CounterpartyChannelTransactionParameters clone() { - number ret = bindings.CounterpartyChannelTransactionParameters_clone(this.ptr); - const ret_hu_conv: CounterpartyChannelTransactionParameters = new CounterpartyChannelTransactionParameters(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public ChannelPublicKeys get_pubkeys() { number ret = bindings.CounterpartyChannelTransactionParameters_get_pubkeys(this.ptr); const ret_hu_conv: ChannelPublicKeys = new ChannelPublicKeys(null, ret); @@ -54,15 +47,21 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public CounterpartyChannelTransactionParameters clone() { + number ret = bindings.CounterpartyChannelTransactionParameters_clone(this.ptr); + const ret_hu_conv: CounterpartyChannelTransactionParameters = new CounterpartyChannelTransactionParameters(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.CounterpartyChannelTransactionParameters_write(this.ptr); return ret; } - public static CounterpartyChannelTransactionParameters constructor_read(Uint8Array ser) { + public static Result_CounterpartyChannelTransactionParametersDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.CounterpartyChannelTransactionParameters_read(ser); - const ret_hu_conv: CounterpartyChannelTransactionParameters = new CounterpartyChannelTransactionParameters(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_CounterpartyChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_CounterpartyChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/DataLossProtect.ts b/ts/structs/DataLossProtect.ts index a08c831a..4f9bd46a 100644 --- a/ts/structs/DataLossProtect.ts +++ b/ts/structs/DataLossProtect.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.DataLossProtect_free(this.ptr); } } - public DataLossProtect clone() { - number ret = bindings.DataLossProtect_clone(this.ptr); - const ret_hu_conv: DataLossProtect = new DataLossProtect(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_your_last_per_commitment_secret() { Uint8Array ret = bindings.DataLossProtect_get_your_last_per_commitment_secret(this.ptr); return ret; @@ -50,4 +43,11 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public DataLossProtect clone() { + number ret = bindings.DataLossProtect_clone(this.ptr); + const ret_hu_conv: DataLossProtect = new DataLossProtect(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + } diff --git a/ts/structs/DirectionalChannelInfo.ts b/ts/structs/DirectionalChannelInfo.ts index 5866e913..903e56ec 100644 --- a/ts/structs/DirectionalChannelInfo.ts +++ b/ts/structs/DirectionalChannelInfo.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.DirectionalChannelInfo_free(this.ptr); } } - public DirectionalChannelInfo clone() { - number ret = bindings.DirectionalChannelInfo_clone(this.ptr); - const ret_hu_conv: DirectionalChannelInfo = new DirectionalChannelInfo(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public number get_last_update() { number ret = bindings.DirectionalChannelInfo_get_last_update(this.ptr); return ret; @@ -85,15 +78,21 @@ import * as bindings from '../bindings' // TODO: figure out location this.ptrs_to.add(val); } + public DirectionalChannelInfo clone() { + number ret = bindings.DirectionalChannelInfo_clone(this.ptr); + const ret_hu_conv: DirectionalChannelInfo = new DirectionalChannelInfo(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.DirectionalChannelInfo_write(this.ptr); return ret; } - public static DirectionalChannelInfo constructor_read(Uint8Array ser) { + public static Result_DirectionalChannelInfoDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.DirectionalChannelInfo_read(ser); - const ret_hu_conv: DirectionalChannelInfo = new DirectionalChannelInfo(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_DirectionalChannelInfoDecodeErrorZ ret_hu_conv = Result_DirectionalChannelInfoDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/ErrorMessage.ts b/ts/structs/ErrorMessage.ts index 4ad554f5..b3b05b1c 100644 --- a/ts/structs/ErrorMessage.ts +++ b/ts/structs/ErrorMessage.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ErrorMessage_free(this.ptr); } } - public ErrorMessage clone() { - number ret = bindings.ErrorMessage_clone(this.ptr); - const ret_hu_conv: ErrorMessage = new ErrorMessage(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_channel_id() { Uint8Array ret = bindings.ErrorMessage_get_channel_id(this.ptr); return ret; @@ -50,6 +43,13 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public ErrorMessage clone() { + number ret = bindings.ErrorMessage_clone(this.ptr); + const ret_hu_conv: ErrorMessage = new ErrorMessage(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.ErrorMessage_write(this.ptr); return ret; diff --git a/ts/structs/EventsProvider.ts b/ts/structs/EventsProvider.ts index 111c2a5b..d33cf1ed 100644 --- a/ts/structs/EventsProvider.ts +++ b/ts/structs/EventsProvider.ts @@ -34,7 +34,7 @@ import * as bindings from '../bindings' // TODO: figure out location // todo: in-line interface filling get_and_clear_pending_events (): number[] { Event[] ret = arg.get_and_clear_pending_events(); - result: number[] = (number[])Arrays.stream(ret).map(arr_conv_7 -> arr_conv_7.ptr).toArray(); + result: number[] = Arrays.stream(ret).map(arr_conv_7 -> arr_conv_7.ptr).toArray(number[]::new); /* TODO 2 Event */; return result; }, diff --git a/ts/structs/FundingCreated.ts b/ts/structs/FundingCreated.ts index 118811fd..a04f0781 100644 --- a/ts/structs/FundingCreated.ts +++ b/ts/structs/FundingCreated.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.FundingCreated_free(this.ptr); } } - public FundingCreated clone() { - number ret = bindings.FundingCreated_clone(this.ptr); - const ret_hu_conv: FundingCreated = new FundingCreated(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_temporary_channel_id() { Uint8Array ret = bindings.FundingCreated_get_temporary_channel_id(this.ptr); return ret; @@ -68,15 +61,21 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public FundingCreated clone() { + number ret = bindings.FundingCreated_clone(this.ptr); + const ret_hu_conv: FundingCreated = new FundingCreated(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.FundingCreated_write(this.ptr); return ret; } - public static FundingCreated constructor_read(Uint8Array ser) { + public static Result_FundingCreatedDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.FundingCreated_read(ser); - const ret_hu_conv: FundingCreated = new FundingCreated(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_FundingCreatedDecodeErrorZ ret_hu_conv = Result_FundingCreatedDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/FundingLocked.ts b/ts/structs/FundingLocked.ts index b298b222..e03acf3e 100644 --- a/ts/structs/FundingLocked.ts +++ b/ts/structs/FundingLocked.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.FundingLocked_free(this.ptr); } } - public FundingLocked clone() { - number ret = bindings.FundingLocked_clone(this.ptr); - const ret_hu_conv: FundingLocked = new FundingLocked(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_channel_id() { Uint8Array ret = bindings.FundingLocked_get_channel_id(this.ptr); return ret; @@ -50,15 +43,21 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public FundingLocked clone() { + number ret = bindings.FundingLocked_clone(this.ptr); + const ret_hu_conv: FundingLocked = new FundingLocked(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.FundingLocked_write(this.ptr); return ret; } - public static FundingLocked constructor_read(Uint8Array ser) { + public static Result_FundingLockedDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.FundingLocked_read(ser); - const ret_hu_conv: FundingLocked = new FundingLocked(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_FundingLockedDecodeErrorZ ret_hu_conv = Result_FundingLockedDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/FundingSigned.ts b/ts/structs/FundingSigned.ts index 76fc8ad2..a0271f1a 100644 --- a/ts/structs/FundingSigned.ts +++ b/ts/structs/FundingSigned.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.FundingSigned_free(this.ptr); } } - public FundingSigned clone() { - number ret = bindings.FundingSigned_clone(this.ptr); - const ret_hu_conv: FundingSigned = new FundingSigned(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_channel_id() { Uint8Array ret = bindings.FundingSigned_get_channel_id(this.ptr); return ret; @@ -50,15 +43,21 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public FundingSigned clone() { + number ret = bindings.FundingSigned_clone(this.ptr); + const ret_hu_conv: FundingSigned = new FundingSigned(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.FundingSigned_write(this.ptr); return ret; } - public static FundingSigned constructor_read(Uint8Array ser) { + public static Result_FundingSignedDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.FundingSigned_read(ser); - const ret_hu_conv: FundingSigned = new FundingSigned(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_FundingSignedDecodeErrorZ ret_hu_conv = Result_FundingSignedDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/GossipTimestampFilter.ts b/ts/structs/GossipTimestampFilter.ts index 8b2e3320..a6557572 100644 --- a/ts/structs/GossipTimestampFilter.ts +++ b/ts/structs/GossipTimestampFilter.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.GossipTimestampFilter_free(this.ptr); } } - public GossipTimestampFilter clone() { - number ret = bindings.GossipTimestampFilter_clone(this.ptr); - const ret_hu_conv: GossipTimestampFilter = new GossipTimestampFilter(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_chain_hash() { Uint8Array ret = bindings.GossipTimestampFilter_get_chain_hash(this.ptr); return ret; @@ -59,6 +52,13 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public GossipTimestampFilter clone() { + number ret = bindings.GossipTimestampFilter_clone(this.ptr); + const ret_hu_conv: GossipTimestampFilter = new GossipTimestampFilter(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static Result_GossipTimestampFilterDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.GossipTimestampFilter_read(ser); Result_GossipTimestampFilterDecodeErrorZ ret_hu_conv = Result_GossipTimestampFilterDecodeErrorZ.constr_from_ptr(ret); diff --git a/ts/structs/HTLCOutputInCommitment.ts b/ts/structs/HTLCOutputInCommitment.ts index 545685e5..42c2eccf 100644 --- a/ts/structs/HTLCOutputInCommitment.ts +++ b/ts/structs/HTLCOutputInCommitment.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.HTLCOutputInCommitment_free(this.ptr); } } - public HTLCOutputInCommitment clone() { - number ret = bindings.HTLCOutputInCommitment_clone(this.ptr); - const ret_hu_conv: HTLCOutputInCommitment = new HTLCOutputInCommitment(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public boolean get_offered() { boolean ret = bindings.HTLCOutputInCommitment_get_offered(this.ptr); return ret; @@ -61,15 +54,21 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.HTLCOutputInCommitment_set_payment_hash(this.ptr, val); } + public HTLCOutputInCommitment clone() { + number ret = bindings.HTLCOutputInCommitment_clone(this.ptr); + const ret_hu_conv: HTLCOutputInCommitment = new HTLCOutputInCommitment(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.HTLCOutputInCommitment_write(this.ptr); return ret; } - public static HTLCOutputInCommitment constructor_read(Uint8Array ser) { + public static Result_HTLCOutputInCommitmentDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.HTLCOutputInCommitment_read(ser); - const ret_hu_conv: HTLCOutputInCommitment = new HTLCOutputInCommitment(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_HTLCOutputInCommitmentDecodeErrorZ ret_hu_conv = Result_HTLCOutputInCommitmentDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/HTLCUpdate.ts b/ts/structs/HTLCUpdate.ts index 075dc2db..3eaef553 100644 --- a/ts/structs/HTLCUpdate.ts +++ b/ts/structs/HTLCUpdate.ts @@ -30,10 +30,9 @@ import * as bindings from '../bindings' // TODO: figure out location return ret; } - public static HTLCUpdate constructor_read(Uint8Array ser) { + public static Result_HTLCUpdateDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.HTLCUpdate_read(ser); - const ret_hu_conv: HTLCUpdate = new HTLCUpdate(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_HTLCUpdateDecodeErrorZ ret_hu_conv = Result_HTLCUpdateDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/HolderCommitmentTransaction.ts b/ts/structs/HolderCommitmentTransaction.ts index 4014c3a2..15ce4e00 100644 --- a/ts/structs/HolderCommitmentTransaction.ts +++ b/ts/structs/HolderCommitmentTransaction.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.HolderCommitmentTransaction_free(this.ptr); } } - public HolderCommitmentTransaction clone() { - number ret = bindings.HolderCommitmentTransaction_clone(this.ptr); - const ret_hu_conv: HolderCommitmentTransaction = new HolderCommitmentTransaction(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_counterparty_sig() { Uint8Array ret = bindings.HolderCommitmentTransaction_get_counterparty_sig(this.ptr); return ret; @@ -38,15 +31,21 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.HolderCommitmentTransaction_set_counterparty_htlc_sigs(this.ptr, val); } + public HolderCommitmentTransaction clone() { + number ret = bindings.HolderCommitmentTransaction_clone(this.ptr); + const ret_hu_conv: HolderCommitmentTransaction = new HolderCommitmentTransaction(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.HolderCommitmentTransaction_write(this.ptr); return ret; } - public static HolderCommitmentTransaction constructor_read(Uint8Array ser) { + public static Result_HolderCommitmentTransactionDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.HolderCommitmentTransaction_read(ser); - const ret_hu_conv: HolderCommitmentTransaction = new HolderCommitmentTransaction(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_HolderCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_HolderCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/InMemoryChannelKeys.ts b/ts/structs/InMemoryChannelKeys.ts index 11321cb6..4fc7fcdc 100644 --- a/ts/structs/InMemoryChannelKeys.ts +++ b/ts/structs/InMemoryChannelKeys.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.InMemoryChannelKeys_free(this.ptr); } } - public InMemoryChannelKeys clone() { - number ret = bindings.InMemoryChannelKeys_clone(this.ptr); - const ret_hu_conv: InMemoryChannelKeys = new InMemoryChannelKeys(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_funding_key() { Uint8Array ret = bindings.InMemoryChannelKeys_get_funding_key(this.ptr); return ret; @@ -79,6 +72,13 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.InMemoryChannelKeys_set_commitment_seed(this.ptr, val); } + public InMemoryChannelKeys clone() { + number ret = bindings.InMemoryChannelKeys_clone(this.ptr); + const ret_hu_conv: InMemoryChannelKeys = new InMemoryChannelKeys(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static InMemoryChannelKeys constructor_new(Uint8Array funding_key, Uint8Array revocation_base_key, Uint8Array payment_key, Uint8Array delayed_payment_base_key, Uint8Array htlc_base_key, Uint8Array commitment_seed, number channel_value_satoshis, TwoTuple key_derivation_params) { number ret = bindings.InMemoryChannelKeys_new(funding_key, revocation_base_key, payment_key, delayed_payment_base_key, htlc_base_key, commitment_seed, channel_value_satoshis, bindings.C2Tuple_u64u64Z_new(key_derivation_params.a, key_derivation_params.b)); const ret_hu_conv: InMemoryChannelKeys = new InMemoryChannelKeys(null, ret); diff --git a/ts/structs/InitFeatures.ts b/ts/structs/InitFeatures.ts index e38641d2..a1dee177 100644 --- a/ts/structs/InitFeatures.ts +++ b/ts/structs/InitFeatures.ts @@ -18,4 +18,36 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.InitFeatures_free(this.ptr); } } + public InitFeatures clone() { + number ret = bindings.InitFeatures_clone(this.ptr); + const ret_hu_conv: InitFeatures = new InitFeatures(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + + public static InitFeatures constructor_empty() { + number ret = bindings.InitFeatures_empty(); + const ret_hu_conv: InitFeatures = new InitFeatures(null, ret); + ret_hu_conv.ptrs_to.add(ret_hu_conv); + return ret_hu_conv; + } + + public static InitFeatures constructor_known() { + number ret = bindings.InitFeatures_known(); + const ret_hu_conv: InitFeatures = new InitFeatures(null, ret); + ret_hu_conv.ptrs_to.add(ret_hu_conv); + return ret_hu_conv; + } + + public Uint8Array write() { + Uint8Array ret = bindings.InitFeatures_write(this.ptr); + return ret; + } + + public static Result_InitFeaturesDecodeErrorZ constructor_read(Uint8Array ser) { + number ret = bindings.InitFeatures_read(ser); + Result_InitFeaturesDecodeErrorZ ret_hu_conv = Result_InitFeaturesDecodeErrorZ.constr_from_ptr(ret); + return ret_hu_conv; + } + } diff --git a/ts/structs/KeysInterface.ts b/ts/structs/KeysInterface.ts index c51f0b8b..e9a689be 100644 --- a/ts/structs/KeysInterface.ts +++ b/ts/structs/KeysInterface.ts @@ -60,7 +60,7 @@ import * as bindings from '../bindings' // TODO: figure out location }, read_chan_signer (reader: Uint8Array): number { - Result_ChanKeySignerDecodeErrorZ ret = arg.read_chan_signer(reader); + Result_ChannelKeysDecodeErrorZ ret = arg.read_chan_signer(reader); result: number = ret != null ? ret.ptr : 0; return result; }, @@ -77,7 +77,7 @@ import * as bindings from '../bindings' // TODO: figure out location get_shutdown_pubkey(): Uint8Array; get_channel_keys(inbound: boolean, channel_value_satoshis: number): ChannelKeys; get_secure_random_bytes(): Uint8Array; - read_chan_signer(reader: Uint8Array): Result_ChanKeySignerDecodeErrorZ; + read_chan_signer(reader: Uint8Array): Result_ChannelKeysDecodeErrorZ; } @@ -111,9 +111,9 @@ import * as bindings from '../bindings' // TODO: figure out location return ret; } - public Result_ChanKeySignerDecodeErrorZ read_chan_signer(Uint8Array reader) { + public Result_ChannelKeysDecodeErrorZ read_chan_signer(Uint8Array reader) { number ret = bindings.KeysInterface_read_chan_signer(this.ptr, reader); - Result_ChanKeySignerDecodeErrorZ ret_hu_conv = Result_ChanKeySignerDecodeErrorZ.constr_from_ptr(ret); + Result_ChannelKeysDecodeErrorZ ret_hu_conv = Result_ChannelKeysDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/LightningError.ts b/ts/structs/LightningError.ts index 74b3a586..8e38be1a 100644 --- a/ts/structs/LightningError.ts +++ b/ts/structs/LightningError.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.LightningError_free(this.ptr); } } - public LightningError clone() { - number ret = bindings.LightningError_clone(this.ptr); - const ret_hu_conv: LightningError = new LightningError(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public String get_err() { String ret = bindings.LightningError_get_err(this.ptr); return ret; @@ -52,4 +45,11 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public LightningError clone() { + number ret = bindings.LightningError_clone(this.ptr); + const ret_hu_conv: LightningError = new LightningError(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + } diff --git a/ts/structs/MessageSendEventsProvider.ts b/ts/structs/MessageSendEventsProvider.ts index 3c05318c..fdd165b8 100644 --- a/ts/structs/MessageSendEventsProvider.ts +++ b/ts/structs/MessageSendEventsProvider.ts @@ -34,7 +34,7 @@ import * as bindings from '../bindings' // TODO: figure out location // todo: in-line interface filling get_and_clear_pending_msg_events (): number[] { MessageSendEvent[] ret = arg.get_and_clear_pending_msg_events(); - result: number[] = (number[])Arrays.stream(ret).map(arr_conv_18 -> arr_conv_18.ptr).toArray(); + result: number[] = Arrays.stream(ret).map(arr_conv_18 -> arr_conv_18.ptr).toArray(number[]::new); /* TODO 2 MessageSendEvent */; return result; }, diff --git a/ts/structs/NodeAnnouncement.ts b/ts/structs/NodeAnnouncement.ts index 38520e1a..bf2a6612 100644 --- a/ts/structs/NodeAnnouncement.ts +++ b/ts/structs/NodeAnnouncement.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.NodeAnnouncement_free(this.ptr); } } - public NodeAnnouncement clone() { - number ret = bindings.NodeAnnouncement_clone(this.ptr); - const ret_hu_conv: NodeAnnouncement = new NodeAnnouncement(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_signature() { Uint8Array ret = bindings.NodeAnnouncement_get_signature(this.ptr); return ret; @@ -54,15 +47,21 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public NodeAnnouncement clone() { + number ret = bindings.NodeAnnouncement_clone(this.ptr); + const ret_hu_conv: NodeAnnouncement = new NodeAnnouncement(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.NodeAnnouncement_write(this.ptr); return ret; } - public static NodeAnnouncement constructor_read(Uint8Array ser) { + public static Result_NodeAnnouncementDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.NodeAnnouncement_read(ser); - const ret_hu_conv: NodeAnnouncement = new NodeAnnouncement(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_NodeAnnouncementDecodeErrorZ ret_hu_conv = Result_NodeAnnouncementDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/NodeAnnouncementInfo.ts b/ts/structs/NodeAnnouncementInfo.ts index 2fa86c39..161b93b3 100644 --- a/ts/structs/NodeAnnouncementInfo.ts +++ b/ts/structs/NodeAnnouncementInfo.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.NodeAnnouncementInfo_free(this.ptr); } } - public NodeAnnouncementInfo clone() { - number ret = bindings.NodeAnnouncementInfo_clone(this.ptr); - const ret_hu_conv: NodeAnnouncementInfo = new NodeAnnouncementInfo(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public NodeFeatures get_features() { number ret = bindings.NodeAnnouncementInfo_get_features(this.ptr); const ret_hu_conv: NodeFeatures = new NodeFeatures(null, ret); @@ -35,14 +28,6 @@ import * as bindings from '../bindings' // TODO: figure out location public void set_features(NodeFeatures val) { bindings.NodeAnnouncementInfo_set_features(this.ptr, val == null ? 0 : val.ptr & ~1); this.ptrs_to.add(val); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, val is reset to null and is now a dummy object. - val.ptr = 0; } public number get_last_update() { @@ -73,7 +58,7 @@ import * as bindings from '../bindings' // TODO: figure out location } public void set_addresses(NetAddress[] val) { - bindings.NodeAnnouncementInfo_set_addresses(this.ptr, (number[])Arrays.stream(val).map(arr_conv_12 -> arr_conv_12.ptr).toArray()); + bindings.NodeAnnouncementInfo_set_addresses(this.ptr, Arrays.stream(val).map(arr_conv_12 -> arr_conv_12.ptr).toArray(number[]::new)); /* TODO 2 NetAddress */; } @@ -90,23 +75,22 @@ import * as bindings from '../bindings' // TODO: figure out location } public static NodeAnnouncementInfo constructor_new(NodeFeatures features_arg, number last_update_arg, Uint8Array rgb_arg, Uint8Array alias_arg, NetAddress[] addresses_arg, NodeAnnouncement announcement_message_arg) { - number ret = bindings.NodeAnnouncementInfo_new(features_arg == null ? 0 : features_arg.ptr & ~1, last_update_arg, rgb_arg, alias_arg, (number[])Arrays.stream(addresses_arg).map(arr_conv_12 -> arr_conv_12.ptr).toArray(), announcement_message_arg == null ? 0 : announcement_message_arg.ptr & ~1); + number ret = bindings.NodeAnnouncementInfo_new(features_arg == null ? 0 : features_arg.ptr & ~1, last_update_arg, rgb_arg, alias_arg, Arrays.stream(addresses_arg).map(arr_conv_12 -> arr_conv_12.ptr).toArray(number[]::new), announcement_message_arg == null ? 0 : announcement_message_arg.ptr & ~1); const ret_hu_conv: NodeAnnouncementInfo = new NodeAnnouncementInfo(null, ret); ret_hu_conv.ptrs_to.add(ret_hu_conv); ret_hu_conv.ptrs_to.add(features_arg); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid ret_hu_conv being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after ret_hu_conv call, features_arg is reset to null and is now a dummy object. - features_arg.ptr = 0; /* TODO 2 NetAddress */; ret_hu_conv.ptrs_to.add(announcement_message_arg); return ret_hu_conv; } + public NodeAnnouncementInfo clone() { + number ret = bindings.NodeAnnouncementInfo_clone(this.ptr); + const ret_hu_conv: NodeAnnouncementInfo = new NodeAnnouncementInfo(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.NodeAnnouncementInfo_write(this.ptr); return ret; diff --git a/ts/structs/NodeFeatures.ts b/ts/structs/NodeFeatures.ts index d091079f..13652f14 100644 --- a/ts/structs/NodeFeatures.ts +++ b/ts/structs/NodeFeatures.ts @@ -18,4 +18,36 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.NodeFeatures_free(this.ptr); } } + public NodeFeatures clone() { + number ret = bindings.NodeFeatures_clone(this.ptr); + const ret_hu_conv: NodeFeatures = new NodeFeatures(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + + public static NodeFeatures constructor_empty() { + number ret = bindings.NodeFeatures_empty(); + const ret_hu_conv: NodeFeatures = new NodeFeatures(null, ret); + ret_hu_conv.ptrs_to.add(ret_hu_conv); + return ret_hu_conv; + } + + public static NodeFeatures constructor_known() { + number ret = bindings.NodeFeatures_known(); + const ret_hu_conv: NodeFeatures = new NodeFeatures(null, ret); + ret_hu_conv.ptrs_to.add(ret_hu_conv); + return ret_hu_conv; + } + + public Uint8Array write() { + Uint8Array ret = bindings.NodeFeatures_write(this.ptr); + return ret; + } + + public static Result_NodeFeaturesDecodeErrorZ constructor_read(Uint8Array ser) { + number ret = bindings.NodeFeatures_read(ser); + Result_NodeFeaturesDecodeErrorZ ret_hu_conv = Result_NodeFeaturesDecodeErrorZ.constr_from_ptr(ret); + return ret_hu_conv; + } + } diff --git a/ts/structs/NodeInfo.ts b/ts/structs/NodeInfo.ts index 0fd77a14..f848b086 100644 --- a/ts/structs/NodeInfo.ts +++ b/ts/structs/NodeInfo.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.NodeInfo_free(this.ptr); } } - public NodeInfo clone() { - number ret = bindings.NodeInfo_clone(this.ptr); - const ret_hu_conv: NodeInfo = new NodeInfo(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public void set_channels(number[] val) { bindings.NodeInfo_set_channels(this.ptr, val); } @@ -62,6 +55,13 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public NodeInfo clone() { + number ret = bindings.NodeInfo_clone(this.ptr); + const ret_hu_conv: NodeInfo = new NodeInfo(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.NodeInfo_write(this.ptr); return ret; diff --git a/ts/structs/OpenChannel.ts b/ts/structs/OpenChannel.ts index 62485309..cbdaf307 100644 --- a/ts/structs/OpenChannel.ts +++ b/ts/structs/OpenChannel.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.OpenChannel_free(this.ptr); } } - public OpenChannel clone() { - number ret = bindings.OpenChannel_clone(this.ptr); - const ret_hu_conv: OpenChannel = new OpenChannel(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_chain_hash() { Uint8Array ret = bindings.OpenChannel_get_chain_hash(this.ptr); return ret; @@ -187,15 +180,21 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.OpenChannel_set_channel_flags(this.ptr, val); } + public OpenChannel clone() { + number ret = bindings.OpenChannel_clone(this.ptr); + const ret_hu_conv: OpenChannel = new OpenChannel(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.OpenChannel_write(this.ptr); return ret; } - public static OpenChannel constructor_read(Uint8Array ser) { + public static Result_OpenChannelDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.OpenChannel_read(ser); - const ret_hu_conv: OpenChannel = new OpenChannel(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_OpenChannelDecodeErrorZ ret_hu_conv = Result_OpenChannelDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/OutPoint.ts b/ts/structs/OutPoint.ts index decbf7b7..508f2e13 100644 --- a/ts/structs/OutPoint.ts +++ b/ts/structs/OutPoint.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.OutPoint_free(this.ptr); } } - public OutPoint clone() { - number ret = bindings.OutPoint_clone(this.ptr); - const ret_hu_conv: OutPoint = new OutPoint(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_txid() { Uint8Array ret = bindings.OutPoint_get_txid(this.ptr); return ret; @@ -50,6 +43,13 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public OutPoint clone() { + number ret = bindings.OutPoint_clone(this.ptr); + const ret_hu_conv: OutPoint = new OutPoint(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array to_channel_id() { Uint8Array ret = bindings.OutPoint_to_channel_id(this.ptr); return ret; @@ -60,10 +60,9 @@ import * as bindings from '../bindings' // TODO: figure out location return ret; } - public static OutPoint constructor_read(Uint8Array ser) { + public static Result_OutPointDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.OutPoint_read(ser); - const ret_hu_conv: OutPoint = new OutPoint(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_OutPointDecodeErrorZ ret_hu_conv = Result_OutPointDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/PeerHandleError.ts b/ts/structs/PeerHandleError.ts index 2bae7bb7..52504971 100644 --- a/ts/structs/PeerHandleError.ts +++ b/ts/structs/PeerHandleError.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.PeerHandleError_free(this.ptr); } } - public PeerHandleError clone() { - number ret = bindings.PeerHandleError_clone(this.ptr); - const ret_hu_conv: PeerHandleError = new PeerHandleError(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public boolean get_no_connection_possible() { boolean ret = bindings.PeerHandleError_get_no_connection_possible(this.ptr); return ret; @@ -41,4 +34,11 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public PeerHandleError clone() { + number ret = bindings.PeerHandleError_clone(this.ptr); + const ret_hu_conv: PeerHandleError = new PeerHandleError(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + } diff --git a/ts/structs/Ping.ts b/ts/structs/Ping.ts index 2cc1a913..f7054fe0 100644 --- a/ts/structs/Ping.ts +++ b/ts/structs/Ping.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.Ping_free(this.ptr); } } - public Ping clone() { - number ret = bindings.Ping_clone(this.ptr); - const ret_hu_conv: Ping = new Ping(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public number get_ponglen() { number ret = bindings.Ping_get_ponglen(this.ptr); return ret; @@ -50,6 +43,13 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public Ping clone() { + number ret = bindings.Ping_clone(this.ptr); + const ret_hu_conv: Ping = new Ping(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.Ping_write(this.ptr); return ret; diff --git a/ts/structs/Pong.ts b/ts/structs/Pong.ts index 63379926..58be169f 100644 --- a/ts/structs/Pong.ts +++ b/ts/structs/Pong.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.Pong_free(this.ptr); } } - public Pong clone() { - number ret = bindings.Pong_clone(this.ptr); - const ret_hu_conv: Pong = new Pong(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public number get_byteslen() { number ret = bindings.Pong_get_byteslen(this.ptr); return ret; @@ -41,6 +34,13 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public Pong clone() { + number ret = bindings.Pong_clone(this.ptr); + const ret_hu_conv: Pong = new Pong(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.Pong_write(this.ptr); return ret; diff --git a/ts/structs/QueryChannelRange.ts b/ts/structs/QueryChannelRange.ts index 8b26591c..4a4a6e22 100644 --- a/ts/structs/QueryChannelRange.ts +++ b/ts/structs/QueryChannelRange.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.QueryChannelRange_free(this.ptr); } } - public QueryChannelRange clone() { - number ret = bindings.QueryChannelRange_clone(this.ptr); - const ret_hu_conv: QueryChannelRange = new QueryChannelRange(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_chain_hash() { Uint8Array ret = bindings.QueryChannelRange_get_chain_hash(this.ptr); return ret; @@ -59,6 +52,13 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public QueryChannelRange clone() { + number ret = bindings.QueryChannelRange_clone(this.ptr); + const ret_hu_conv: QueryChannelRange = new QueryChannelRange(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static Result_QueryChannelRangeDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.QueryChannelRange_read(ser); Result_QueryChannelRangeDecodeErrorZ ret_hu_conv = Result_QueryChannelRangeDecodeErrorZ.constr_from_ptr(ret); diff --git a/ts/structs/QueryShortChannelIds.ts b/ts/structs/QueryShortChannelIds.ts index 58643a72..fe6f93f9 100644 --- a/ts/structs/QueryShortChannelIds.ts +++ b/ts/structs/QueryShortChannelIds.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.QueryShortChannelIds_free(this.ptr); } } - public QueryShortChannelIds clone() { - number ret = bindings.QueryShortChannelIds_clone(this.ptr); - const ret_hu_conv: QueryShortChannelIds = new QueryShortChannelIds(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_chain_hash() { Uint8Array ret = bindings.QueryShortChannelIds_get_chain_hash(this.ptr); return ret; @@ -45,6 +38,13 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public QueryShortChannelIds clone() { + number ret = bindings.QueryShortChannelIds_clone(this.ptr); + const ret_hu_conv: QueryShortChannelIds = new QueryShortChannelIds(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static Result_QueryShortChannelIdsDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.QueryShortChannelIds_read(ser); Result_QueryShortChannelIdsDecodeErrorZ ret_hu_conv = Result_QueryShortChannelIdsDecodeErrorZ.constr_from_ptr(ret); diff --git a/ts/structs/ReplyChannelRange.ts b/ts/structs/ReplyChannelRange.ts index 3d2ef178..bbf199e3 100644 --- a/ts/structs/ReplyChannelRange.ts +++ b/ts/structs/ReplyChannelRange.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ReplyChannelRange_free(this.ptr); } } - public ReplyChannelRange clone() { - number ret = bindings.ReplyChannelRange_clone(this.ptr); - const ret_hu_conv: ReplyChannelRange = new ReplyChannelRange(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_chain_hash() { Uint8Array ret = bindings.ReplyChannelRange_get_chain_hash(this.ptr); return ret; @@ -52,26 +45,33 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ReplyChannelRange_set_number_of_blocks(this.ptr, val); } - public boolean get_full_information() { - boolean ret = bindings.ReplyChannelRange_get_full_information(this.ptr); + public boolean get_sync_complete() { + boolean ret = bindings.ReplyChannelRange_get_sync_complete(this.ptr); return ret; } - public void set_full_information(boolean val) { - bindings.ReplyChannelRange_set_full_information(this.ptr, val); + public void set_sync_complete(boolean val) { + bindings.ReplyChannelRange_set_sync_complete(this.ptr, val); } public void set_short_channel_ids(number[] val) { bindings.ReplyChannelRange_set_short_channel_ids(this.ptr, val); } - public static ReplyChannelRange constructor_new(Uint8Array chain_hash_arg, number first_blocknum_arg, number number_of_blocks_arg, boolean full_information_arg, number[] short_channel_ids_arg) { - number ret = bindings.ReplyChannelRange_new(chain_hash_arg, first_blocknum_arg, number_of_blocks_arg, full_information_arg, short_channel_ids_arg); + public static ReplyChannelRange constructor_new(Uint8Array chain_hash_arg, number first_blocknum_arg, number number_of_blocks_arg, boolean sync_complete_arg, number[] short_channel_ids_arg) { + number ret = bindings.ReplyChannelRange_new(chain_hash_arg, first_blocknum_arg, number_of_blocks_arg, sync_complete_arg, short_channel_ids_arg); const ret_hu_conv: ReplyChannelRange = new ReplyChannelRange(null, ret); ret_hu_conv.ptrs_to.add(ret_hu_conv); return ret_hu_conv; } + public ReplyChannelRange clone() { + number ret = bindings.ReplyChannelRange_clone(this.ptr); + const ret_hu_conv: ReplyChannelRange = new ReplyChannelRange(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static Result_ReplyChannelRangeDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.ReplyChannelRange_read(ser); Result_ReplyChannelRangeDecodeErrorZ ret_hu_conv = Result_ReplyChannelRangeDecodeErrorZ.constr_from_ptr(ret); diff --git a/ts/structs/ReplyShortChannelIdsEnd.ts b/ts/structs/ReplyShortChannelIdsEnd.ts index 6b2a2101..ebcb2914 100644 --- a/ts/structs/ReplyShortChannelIdsEnd.ts +++ b/ts/structs/ReplyShortChannelIdsEnd.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ReplyShortChannelIdsEnd_free(this.ptr); } } - public ReplyShortChannelIdsEnd clone() { - number ret = bindings.ReplyShortChannelIdsEnd_clone(this.ptr); - const ret_hu_conv: ReplyShortChannelIdsEnd = new ReplyShortChannelIdsEnd(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_chain_hash() { Uint8Array ret = bindings.ReplyShortChannelIdsEnd_get_chain_hash(this.ptr); return ret; @@ -50,6 +43,13 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public ReplyShortChannelIdsEnd clone() { + number ret = bindings.ReplyShortChannelIdsEnd_clone(this.ptr); + const ret_hu_conv: ReplyShortChannelIdsEnd = new ReplyShortChannelIdsEnd(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static Result_ReplyShortChannelIdsEndDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.ReplyShortChannelIdsEnd_read(ser); Result_ReplyShortChannelIdsEndDecodeErrorZ ret_hu_conv = Result_ReplyShortChannelIdsEndDecodeErrorZ.constr_from_ptr(ret); diff --git a/ts/structs/Result_ChanKeySignerDecodeErrorZ.ts b/ts/structs/Result_ChanKeySignerDecodeErrorZ.ts deleted file mode 100644 index c8e60414..00000000 --- a/ts/structs/Result_ChanKeySignerDecodeErrorZ.ts +++ /dev/null @@ -1,47 +0,0 @@ - -import CommonBase from './CommonBase'; -import * as bindings from '../bindings' // TODO: figure out location - -public class Result_ChanKeySignerDecodeErrorZ extends CommonBase { - private Result_ChanKeySignerDecodeErrorZ(Object _dummy, long ptr) { super(ptr); } - protected void finalize() throws Throwable { - if (ptr != 0) { bindings.CResult_ChanKeySignerDecodeErrorZ_free(ptr); } super.finalize(); - } - - static Result_ChanKeySignerDecodeErrorZ constr_from_ptr(long ptr) { - if (bindings.LDKCResult_ChanKeySignerDecodeErrorZ_result_ok(ptr)) { - return new Result_ChanKeySignerDecodeErrorZ_OK(null, ptr); - } else { - return new Result_ChanKeySignerDecodeErrorZ_Err(null, ptr); - } - } - public static final class Result_ChanKeySignerDecodeErrorZ_OK extends Result_ChanKeySignerDecodeErrorZ { - public final ChannelKeys res; - private Result_ChanKeySignerDecodeErrorZ_OK(Object _dummy, long ptr) { - super(_dummy, ptr); - number res = bindings.LDKCResult_ChanKeySignerDecodeErrorZ_get_ok(ptr); - ChannelKeys ret_hu_conv = new ChannelKeys(null, res); - ret_hu_conv.ptrs_to.add(this); - this.res = ret_hu_conv; - } - public Result_ChanKeySignerDecodeErrorZ_OK(ChannelKeys res) { - this(null, bindings.CResult_ChanKeySignerDecodeErrorZ_ok(res == null ? 0 : res.ptr)); - this.ptrs_to.add(res); - } - } - - public static final class Result_ChanKeySignerDecodeErrorZ_Err extends Result_ChanKeySignerDecodeErrorZ { - public final DecodeError err; - private Result_ChanKeySignerDecodeErrorZ_Err(Object _dummy, long ptr) { - super(_dummy, ptr); - number err = bindings.LDKCResult_ChanKeySignerDecodeErrorZ_get_err(ptr); - const err_hu_conv: DecodeError = new DecodeError(null, err); - err_hu_conv.ptrs_to.add(this); - this.err = err_hu_conv; - } - public Result_ChanKeySignerDecodeErrorZ_Err(DecodeError err) { - this(null, bindings.CResult_ChanKeySignerDecodeErrorZ_err(err == null ? 0 : err.ptr & ~1)); - this.ptrs_to.add(err); - } - } -} diff --git a/ts/structs/Result_PublicKeySecpErrorZ.ts b/ts/structs/Result_PublicKeySecpErrorZ.ts deleted file mode 100644 index bf427c76..00000000 --- a/ts/structs/Result_PublicKeySecpErrorZ.ts +++ /dev/null @@ -1,39 +0,0 @@ - -import CommonBase from './CommonBase'; -import * as bindings from '../bindings' // TODO: figure out location - -public class Result_PublicKeySecpErrorZ extends CommonBase { - private Result_PublicKeySecpErrorZ(Object _dummy, long ptr) { super(ptr); } - protected void finalize() throws Throwable { - if (ptr != 0) { bindings.CResult_PublicKeySecpErrorZ_free(ptr); } super.finalize(); - } - - static Result_PublicKeySecpErrorZ constr_from_ptr(long ptr) { - if (bindings.LDKCResult_PublicKeySecpErrorZ_result_ok(ptr)) { - return new Result_PublicKeySecpErrorZ_OK(null, ptr); - } else { - return new Result_PublicKeySecpErrorZ_Err(null, ptr); - } - } - public static final class Result_PublicKeySecpErrorZ_OK extends Result_PublicKeySecpErrorZ { - public final Uint8Array res; - private Result_PublicKeySecpErrorZ_OK(Object _dummy, long ptr) { - super(_dummy, ptr); - this.res = bindings.LDKCResult_PublicKeySecpErrorZ_get_ok(ptr); - } - public Result_PublicKeySecpErrorZ_OK(Uint8Array res) { - this(null, bindings.CResult_PublicKeySecpErrorZ_ok(res)); - } - } - - public static final class Result_PublicKeySecpErrorZ_Err extends Result_PublicKeySecpErrorZ { - public final LDKSecp256k1Error err; - private Result_PublicKeySecpErrorZ_Err(Object _dummy, long ptr) { - super(_dummy, ptr); - this.err = bindings.LDKCResult_PublicKeySecpErrorZ_get_err(ptr); - } - public Result_PublicKeySecpErrorZ_Err(LDKSecp256k1Error err) { - this(null, bindings.CResult_PublicKeySecpErrorZ_err(err)); - } - } -} diff --git a/ts/structs/Result_SecretKeySecpErrorZ.ts b/ts/structs/Result_SecretKeySecpErrorZ.ts deleted file mode 100644 index 5ebf99c9..00000000 --- a/ts/structs/Result_SecretKeySecpErrorZ.ts +++ /dev/null @@ -1,39 +0,0 @@ - -import CommonBase from './CommonBase'; -import * as bindings from '../bindings' // TODO: figure out location - -public class Result_SecretKeySecpErrorZ extends CommonBase { - private Result_SecretKeySecpErrorZ(Object _dummy, long ptr) { super(ptr); } - protected void finalize() throws Throwable { - if (ptr != 0) { bindings.CResult_SecretKeySecpErrorZ_free(ptr); } super.finalize(); - } - - static Result_SecretKeySecpErrorZ constr_from_ptr(long ptr) { - if (bindings.LDKCResult_SecretKeySecpErrorZ_result_ok(ptr)) { - return new Result_SecretKeySecpErrorZ_OK(null, ptr); - } else { - return new Result_SecretKeySecpErrorZ_Err(null, ptr); - } - } - public static final class Result_SecretKeySecpErrorZ_OK extends Result_SecretKeySecpErrorZ { - public final Uint8Array res; - private Result_SecretKeySecpErrorZ_OK(Object _dummy, long ptr) { - super(_dummy, ptr); - this.res = bindings.LDKCResult_SecretKeySecpErrorZ_get_ok(ptr); - } - public Result_SecretKeySecpErrorZ_OK(Uint8Array res) { - this(null, bindings.CResult_SecretKeySecpErrorZ_ok(res)); - } - } - - public static final class Result_SecretKeySecpErrorZ_Err extends Result_SecretKeySecpErrorZ { - public final LDKSecp256k1Error err; - private Result_SecretKeySecpErrorZ_Err(Object _dummy, long ptr) { - super(_dummy, ptr); - this.err = bindings.LDKCResult_SecretKeySecpErrorZ_get_err(ptr); - } - public Result_SecretKeySecpErrorZ_Err(LDKSecp256k1Error err) { - this(null, bindings.CResult_SecretKeySecpErrorZ_err(err)); - } - } -} diff --git a/ts/structs/Result_TxCreationKeysSecpErrorZ.ts b/ts/structs/Result_TxCreationKeysSecpErrorZ.ts deleted file mode 100644 index fa385e17..00000000 --- a/ts/structs/Result_TxCreationKeysSecpErrorZ.ts +++ /dev/null @@ -1,43 +0,0 @@ - -import CommonBase from './CommonBase'; -import * as bindings from '../bindings' // TODO: figure out location - -public class Result_TxCreationKeysSecpErrorZ extends CommonBase { - private Result_TxCreationKeysSecpErrorZ(Object _dummy, long ptr) { super(ptr); } - protected void finalize() throws Throwable { - if (ptr != 0) { bindings.CResult_TxCreationKeysSecpErrorZ_free(ptr); } super.finalize(); - } - - static Result_TxCreationKeysSecpErrorZ constr_from_ptr(long ptr) { - if (bindings.LDKCResult_TxCreationKeysSecpErrorZ_result_ok(ptr)) { - return new Result_TxCreationKeysSecpErrorZ_OK(null, ptr); - } else { - return new Result_TxCreationKeysSecpErrorZ_Err(null, ptr); - } - } - public static final class Result_TxCreationKeysSecpErrorZ_OK extends Result_TxCreationKeysSecpErrorZ { - public final TxCreationKeys res; - private Result_TxCreationKeysSecpErrorZ_OK(Object _dummy, long ptr) { - super(_dummy, ptr); - number res = bindings.LDKCResult_TxCreationKeysSecpErrorZ_get_ok(ptr); - const res_hu_conv: TxCreationKeys = new TxCreationKeys(null, res); - res_hu_conv.ptrs_to.add(this); - this.res = res_hu_conv; - } - public Result_TxCreationKeysSecpErrorZ_OK(TxCreationKeys res) { - this(null, bindings.CResult_TxCreationKeysSecpErrorZ_ok(res == null ? 0 : res.ptr & ~1)); - this.ptrs_to.add(res); - } - } - - public static final class Result_TxCreationKeysSecpErrorZ_Err extends Result_TxCreationKeysSecpErrorZ { - public final LDKSecp256k1Error err; - private Result_TxCreationKeysSecpErrorZ_Err(Object _dummy, long ptr) { - super(_dummy, ptr); - this.err = bindings.LDKCResult_TxCreationKeysSecpErrorZ_get_err(ptr); - } - public Result_TxCreationKeysSecpErrorZ_Err(LDKSecp256k1Error err) { - this(null, bindings.CResult_TxCreationKeysSecpErrorZ_err(err)); - } - } -} diff --git a/ts/structs/RevokeAndACK.ts b/ts/structs/RevokeAndACK.ts index 15b9945b..d5212469 100644 --- a/ts/structs/RevokeAndACK.ts +++ b/ts/structs/RevokeAndACK.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.RevokeAndACK_free(this.ptr); } } - public RevokeAndACK clone() { - number ret = bindings.RevokeAndACK_clone(this.ptr); - const ret_hu_conv: RevokeAndACK = new RevokeAndACK(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_channel_id() { Uint8Array ret = bindings.RevokeAndACK_get_channel_id(this.ptr); return ret; @@ -59,15 +52,21 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public RevokeAndACK clone() { + number ret = bindings.RevokeAndACK_clone(this.ptr); + const ret_hu_conv: RevokeAndACK = new RevokeAndACK(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.RevokeAndACK_write(this.ptr); return ret; } - public static RevokeAndACK constructor_read(Uint8Array ser) { + public static Result_RevokeAndACKDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.RevokeAndACK_read(ser); - const ret_hu_conv: RevokeAndACK = new RevokeAndACK(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_RevokeAndACKDecodeErrorZ ret_hu_conv = Result_RevokeAndACKDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/Route.ts b/ts/structs/Route.ts index e8d32809..f6d7e14a 100644 --- a/ts/structs/Route.ts +++ b/ts/structs/Route.ts @@ -18,26 +18,26 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.Route_free(this.ptr); } } - public Route clone() { - number ret = bindings.Route_clone(this.ptr); - const ret_hu_conv: Route = new Route(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public void set_paths(RouteHop[][] val) { - bindings.Route_set_paths(this.ptr, (number[][])Arrays.stream(val).map(arr_conv_12 -> (number[])Arrays.stream(arr_conv_12).map(arr_conv_10 -> arr_conv_10 == null ? 0 : arr_conv_10.ptr & ~1).toArray()).toArray()); + bindings.Route_set_paths(this.ptr, Arrays.stream(val).map(arr_conv_12 -> Arrays.stream(arr_conv_12).map(arr_conv_10 -> arr_conv_10 == null ? 0 : arr_conv_10.ptr & ~1).toArray(number[]::new)).toArray(number[][]::new)); /* TODO 2 RouteHop[] */; } public static Route constructor_new(RouteHop[][] paths_arg) { - number ret = bindings.Route_new((number[][])Arrays.stream(paths_arg).map(arr_conv_12 -> (number[])Arrays.stream(arr_conv_12).map(arr_conv_10 -> arr_conv_10 == null ? 0 : arr_conv_10.ptr & ~1).toArray()).toArray()); + number ret = bindings.Route_new(Arrays.stream(paths_arg).map(arr_conv_12 -> Arrays.stream(arr_conv_12).map(arr_conv_10 -> arr_conv_10 == null ? 0 : arr_conv_10.ptr & ~1).toArray(number[]::new)).toArray(number[][]::new)); const ret_hu_conv: Route = new Route(null, ret); ret_hu_conv.ptrs_to.add(ret_hu_conv); /* TODO 2 RouteHop[] */; return ret_hu_conv; } + public Route clone() { + number ret = bindings.Route_clone(this.ptr); + const ret_hu_conv: Route = new Route(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.Route_write(this.ptr); return ret; diff --git a/ts/structs/RouteHint.ts b/ts/structs/RouteHint.ts index a5e312e9..4f338da8 100644 --- a/ts/structs/RouteHint.ts +++ b/ts/structs/RouteHint.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.RouteHint_free(this.ptr); } } - public RouteHint clone() { - number ret = bindings.RouteHint_clone(this.ptr); - const ret_hu_conv: RouteHint = new RouteHint(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_src_node_id() { Uint8Array ret = bindings.RouteHint_get_src_node_id(this.ptr); return ret; @@ -81,4 +74,11 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public RouteHint clone() { + number ret = bindings.RouteHint_clone(this.ptr); + const ret_hu_conv: RouteHint = new RouteHint(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + } diff --git a/ts/structs/RouteHop.ts b/ts/structs/RouteHop.ts index f03f6989..3d9e3386 100644 --- a/ts/structs/RouteHop.ts +++ b/ts/structs/RouteHop.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.RouteHop_free(this.ptr); } } - public RouteHop clone() { - number ret = bindings.RouteHop_clone(this.ptr); - const ret_hu_conv: RouteHop = new RouteHop(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_pubkey() { Uint8Array ret = bindings.RouteHop_get_pubkey(this.ptr); return ret; @@ -44,14 +37,6 @@ import * as bindings from '../bindings' // TODO: figure out location public void set_node_features(NodeFeatures val) { bindings.RouteHop_set_node_features(this.ptr, val == null ? 0 : val.ptr & ~1); this.ptrs_to.add(val); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, val is reset to null and is now a dummy object. - val.ptr = 0; } public number get_short_channel_id() { @@ -73,14 +58,6 @@ import * as bindings from '../bindings' // TODO: figure out location public void set_channel_features(ChannelFeatures val) { bindings.RouteHop_set_channel_features(this.ptr, val == null ? 0 : val.ptr & ~1); this.ptrs_to.add(val); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, val is reset to null and is now a dummy object. - val.ptr = 0; } public number get_fee_msat() { @@ -106,23 +83,14 @@ import * as bindings from '../bindings' // TODO: figure out location const ret_hu_conv: RouteHop = new RouteHop(null, ret); ret_hu_conv.ptrs_to.add(ret_hu_conv); ret_hu_conv.ptrs_to.add(node_features_arg); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid ret_hu_conv being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after ret_hu_conv call, node_features_arg is reset to null and is now a dummy object. - node_features_arg.ptr = 0; ret_hu_conv.ptrs_to.add(channel_features_arg); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid ret_hu_conv being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after ret_hu_conv call, channel_features_arg is reset to null and is now a dummy object. - channel_features_arg.ptr = 0; + return ret_hu_conv; + } + + public RouteHop clone() { + number ret = bindings.RouteHop_clone(this.ptr); + const ret_hu_conv: RouteHop = new RouteHop(null, ret); + ret_hu_conv.ptrs_to.add(this); return ret_hu_conv; } diff --git a/ts/structs/RoutingFees.ts b/ts/structs/RoutingFees.ts index f71fd081..e046cbe5 100644 --- a/ts/structs/RoutingFees.ts +++ b/ts/structs/RoutingFees.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.RoutingFees_free(this.ptr); } } - public RoutingFees clone() { - number ret = bindings.RoutingFees_clone(this.ptr); - const ret_hu_conv: RoutingFees = new RoutingFees(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public number get_base_msat() { number ret = bindings.RoutingFees_get_base_msat(this.ptr); return ret; @@ -50,6 +43,13 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public RoutingFees clone() { + number ret = bindings.RoutingFees_clone(this.ptr); + const ret_hu_conv: RoutingFees = new RoutingFees(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static Result_RoutingFeesDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.RoutingFees_read(ser); Result_RoutingFeesDecodeErrorZ ret_hu_conv = Result_RoutingFeesDecodeErrorZ.constr_from_ptr(ret); diff --git a/ts/structs/RoutingMessageHandler.ts b/ts/structs/RoutingMessageHandler.ts index 28552c66..7d352482 100644 --- a/ts/structs/RoutingMessageHandler.ts +++ b/ts/structs/RoutingMessageHandler.ts @@ -61,14 +61,14 @@ import * as bindings from '../bindings' // TODO: figure out location get_next_channel_announcements (starting_point: number, batch_amount: number): number[] { ThreeTuple[] ret = arg.get_next_channel_announcements(starting_point, batch_amount); - result: number[] = (number[])Arrays.stream(ret).map(arr_conv_63 -> bindings.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(arr_conv_63.a == null ? 0 : arr_conv_63.a.ptr & ~1, arr_conv_63.b == null ? 0 : arr_conv_63.b.ptr & ~1, arr_conv_63.c == null ? 0 : arr_conv_63.c.ptr & ~1)).toArray(); + result: number[] = Arrays.stream(ret).map(arr_conv_63 -> bindings.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(arr_conv_63.a == null ? 0 : arr_conv_63.a.ptr & ~1, arr_conv_63.b == null ? 0 : arr_conv_63.b.ptr & ~1, arr_conv_63.c == null ? 0 : arr_conv_63.c.ptr & ~1)).toArray(number[]::new); /* TODO 2 ThreeTuple */; return result; }, get_next_node_announcements (starting_point: Uint8Array, batch_amount: number): number[] { NodeAnnouncement[] ret = arg.get_next_node_announcements(starting_point, batch_amount); - result: number[] = (number[])Arrays.stream(ret).map(arr_conv_18 -> arr_conv_18 == null ? 0 : arr_conv_18.ptr & ~1).toArray(); + result: number[] = Arrays.stream(ret).map(arr_conv_18 -> arr_conv_18 == null ? 0 : arr_conv_18.ptr & ~1).toArray(number[]::new); /* TODO 2 NodeAnnouncement */; return result; }, diff --git a/ts/structs/Shutdown.ts b/ts/structs/Shutdown.ts index 0301af6b..3c50548b 100644 --- a/ts/structs/Shutdown.ts +++ b/ts/structs/Shutdown.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.Shutdown_free(this.ptr); } } - public Shutdown clone() { - number ret = bindings.Shutdown_clone(this.ptr); - const ret_hu_conv: Shutdown = new Shutdown(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_channel_id() { Uint8Array ret = bindings.Shutdown_get_channel_id(this.ptr); return ret; @@ -50,15 +43,21 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public Shutdown clone() { + number ret = bindings.Shutdown_clone(this.ptr); + const ret_hu_conv: Shutdown = new Shutdown(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.Shutdown_write(this.ptr); return ret; } - public static Shutdown constructor_read(Uint8Array ser) { + public static Result_ShutdownDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.Shutdown_read(ser); - const ret_hu_conv: Shutdown = new Shutdown(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_ShutdownDecodeErrorZ ret_hu_conv = Result_ShutdownDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/TxCreationKeys.ts b/ts/structs/TxCreationKeys.ts index 1b8b616b..e6af3f27 100644 --- a/ts/structs/TxCreationKeys.ts +++ b/ts/structs/TxCreationKeys.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.TxCreationKeys_free(this.ptr); } } - public TxCreationKeys clone() { - number ret = bindings.TxCreationKeys_clone(this.ptr); - const ret_hu_conv: TxCreationKeys = new TxCreationKeys(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_per_commitment_point() { Uint8Array ret = bindings.TxCreationKeys_get_per_commitment_point(this.ptr); return ret; @@ -77,27 +70,33 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public TxCreationKeys clone() { + number ret = bindings.TxCreationKeys_clone(this.ptr); + const ret_hu_conv: TxCreationKeys = new TxCreationKeys(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.TxCreationKeys_write(this.ptr); return ret; } - public static TxCreationKeys constructor_read(Uint8Array ser) { + public static Result_TxCreationKeysDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.TxCreationKeys_read(ser); - const ret_hu_conv: TxCreationKeys = new TxCreationKeys(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_TxCreationKeysDecodeErrorZ ret_hu_conv = Result_TxCreationKeysDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } - public static Result_TxCreationKeysSecpErrorZ constructor_derive_new(Uint8Array per_commitment_point, Uint8Array broadcaster_delayed_payment_base, Uint8Array broadcaster_htlc_base, Uint8Array countersignatory_revocation_base, Uint8Array countersignatory_htlc_base) { + public static Result_TxCreationKeysErrorZ constructor_derive_new(Uint8Array per_commitment_point, Uint8Array broadcaster_delayed_payment_base, Uint8Array broadcaster_htlc_base, Uint8Array countersignatory_revocation_base, Uint8Array countersignatory_htlc_base) { number ret = bindings.TxCreationKeys_derive_new(per_commitment_point, broadcaster_delayed_payment_base, broadcaster_htlc_base, countersignatory_revocation_base, countersignatory_htlc_base); - Result_TxCreationKeysSecpErrorZ ret_hu_conv = Result_TxCreationKeysSecpErrorZ.constr_from_ptr(ret); + Result_TxCreationKeysErrorZ ret_hu_conv = Result_TxCreationKeysErrorZ.constr_from_ptr(ret); return ret_hu_conv; } - public static Result_TxCreationKeysSecpErrorZ constructor_from_channel_static_keys(Uint8Array per_commitment_point, ChannelPublicKeys broadcaster_keys, ChannelPublicKeys countersignatory_keys) { + public static Result_TxCreationKeysErrorZ constructor_from_channel_static_keys(Uint8Array per_commitment_point, ChannelPublicKeys broadcaster_keys, ChannelPublicKeys countersignatory_keys) { number ret = bindings.TxCreationKeys_from_channel_static_keys(per_commitment_point, broadcaster_keys == null ? 0 : broadcaster_keys.ptr & ~1, countersignatory_keys == null ? 0 : countersignatory_keys.ptr & ~1); - Result_TxCreationKeysSecpErrorZ ret_hu_conv = Result_TxCreationKeysSecpErrorZ.constr_from_ptr(ret); + Result_TxCreationKeysErrorZ ret_hu_conv = Result_TxCreationKeysErrorZ.constr_from_ptr(ret); ret_hu_conv.ptrs_to.add(broadcaster_keys); ret_hu_conv.ptrs_to.add(countersignatory_keys); return ret_hu_conv; diff --git a/ts/structs/UnsignedChannelAnnouncement.ts b/ts/structs/UnsignedChannelAnnouncement.ts index 84b2ca7f..3966cb20 100644 --- a/ts/structs/UnsignedChannelAnnouncement.ts +++ b/ts/structs/UnsignedChannelAnnouncement.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.UnsignedChannelAnnouncement_free(this.ptr); } } - public UnsignedChannelAnnouncement clone() { - number ret = bindings.UnsignedChannelAnnouncement_clone(this.ptr); - const ret_hu_conv: UnsignedChannelAnnouncement = new UnsignedChannelAnnouncement(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public ChannelFeatures get_features() { number ret = bindings.UnsignedChannelAnnouncement_get_features(this.ptr); const ret_hu_conv: ChannelFeatures = new ChannelFeatures(null, ret); @@ -35,14 +28,6 @@ import * as bindings from '../bindings' // TODO: figure out location public void set_features(ChannelFeatures val) { bindings.UnsignedChannelAnnouncement_set_features(this.ptr, val == null ? 0 : val.ptr & ~1); this.ptrs_to.add(val); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, val is reset to null and is now a dummy object. - val.ptr = 0; } public Uint8Array get_chain_hash() { @@ -99,6 +84,13 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.UnsignedChannelAnnouncement_set_bitcoin_key_2(this.ptr, val); } + public UnsignedChannelAnnouncement clone() { + number ret = bindings.UnsignedChannelAnnouncement_clone(this.ptr); + const ret_hu_conv: UnsignedChannelAnnouncement = new UnsignedChannelAnnouncement(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.UnsignedChannelAnnouncement_write(this.ptr); return ret; diff --git a/ts/structs/UnsignedChannelUpdate.ts b/ts/structs/UnsignedChannelUpdate.ts index 133bc91f..4accac62 100644 --- a/ts/structs/UnsignedChannelUpdate.ts +++ b/ts/structs/UnsignedChannelUpdate.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.UnsignedChannelUpdate_free(this.ptr); } } - public UnsignedChannelUpdate clone() { - number ret = bindings.UnsignedChannelUpdate_clone(this.ptr); - const ret_hu_conv: UnsignedChannelUpdate = new UnsignedChannelUpdate(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_chain_hash() { Uint8Array ret = bindings.UnsignedChannelUpdate_get_chain_hash(this.ptr); return ret; @@ -97,6 +90,13 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.UnsignedChannelUpdate_set_fee_proportional_millionths(this.ptr, val); } + public UnsignedChannelUpdate clone() { + number ret = bindings.UnsignedChannelUpdate_clone(this.ptr); + const ret_hu_conv: UnsignedChannelUpdate = new UnsignedChannelUpdate(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.UnsignedChannelUpdate_write(this.ptr); return ret; diff --git a/ts/structs/UnsignedNodeAnnouncement.ts b/ts/structs/UnsignedNodeAnnouncement.ts index c874fc3b..bffe475a 100644 --- a/ts/structs/UnsignedNodeAnnouncement.ts +++ b/ts/structs/UnsignedNodeAnnouncement.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.UnsignedNodeAnnouncement_free(this.ptr); } } - public UnsignedNodeAnnouncement clone() { - number ret = bindings.UnsignedNodeAnnouncement_clone(this.ptr); - const ret_hu_conv: UnsignedNodeAnnouncement = new UnsignedNodeAnnouncement(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public NodeFeatures get_features() { number ret = bindings.UnsignedNodeAnnouncement_get_features(this.ptr); const ret_hu_conv: NodeFeatures = new NodeFeatures(null, ret); @@ -35,14 +28,6 @@ import * as bindings from '../bindings' // TODO: figure out location public void set_features(NodeFeatures val) { bindings.UnsignedNodeAnnouncement_set_features(this.ptr, val == null ? 0 : val.ptr & ~1); this.ptrs_to.add(val); - // Due to rust's strict-ownership memory model, in some cases we need to "move" - // an object to pass exclusive ownership to the function being called. - // In most cases, we avoid this being visible in GC'd languages by cloning the object - // at the FFI layer, creating a new object which Rust can claim ownership of - // However, in some cases (eg here), there is no way to clone an object, and thus - // we actually have to pass full ownership to Rust. - // Thus, after this call, val is reset to null and is now a dummy object. - val.ptr = 0; } public number get_timestamp() { @@ -82,10 +67,17 @@ import * as bindings from '../bindings' // TODO: figure out location } public void set_addresses(NetAddress[] val) { - bindings.UnsignedNodeAnnouncement_set_addresses(this.ptr, (number[])Arrays.stream(val).map(arr_conv_12 -> arr_conv_12.ptr).toArray()); + bindings.UnsignedNodeAnnouncement_set_addresses(this.ptr, Arrays.stream(val).map(arr_conv_12 -> arr_conv_12.ptr).toArray(number[]::new)); /* TODO 2 NetAddress */; } + public UnsignedNodeAnnouncement clone() { + number ret = bindings.UnsignedNodeAnnouncement_clone(this.ptr); + const ret_hu_conv: UnsignedNodeAnnouncement = new UnsignedNodeAnnouncement(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.UnsignedNodeAnnouncement_write(this.ptr); return ret; diff --git a/ts/structs/UpdateAddHTLC.ts b/ts/structs/UpdateAddHTLC.ts index 862a8763..e4506a6b 100644 --- a/ts/structs/UpdateAddHTLC.ts +++ b/ts/structs/UpdateAddHTLC.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.UpdateAddHTLC_free(this.ptr); } } - public UpdateAddHTLC clone() { - number ret = bindings.UpdateAddHTLC_clone(this.ptr); - const ret_hu_conv: UpdateAddHTLC = new UpdateAddHTLC(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_channel_id() { Uint8Array ret = bindings.UpdateAddHTLC_get_channel_id(this.ptr); return ret; @@ -70,15 +63,21 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.UpdateAddHTLC_set_cltv_expiry(this.ptr, val); } + public UpdateAddHTLC clone() { + number ret = bindings.UpdateAddHTLC_clone(this.ptr); + const ret_hu_conv: UpdateAddHTLC = new UpdateAddHTLC(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.UpdateAddHTLC_write(this.ptr); return ret; } - public static UpdateAddHTLC constructor_read(Uint8Array ser) { + public static Result_UpdateAddHTLCDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.UpdateAddHTLC_read(ser); - const ret_hu_conv: UpdateAddHTLC = new UpdateAddHTLC(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_UpdateAddHTLCDecodeErrorZ ret_hu_conv = Result_UpdateAddHTLCDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/UpdateFailHTLC.ts b/ts/structs/UpdateFailHTLC.ts index bf4a4763..fcca5e86 100644 --- a/ts/structs/UpdateFailHTLC.ts +++ b/ts/structs/UpdateFailHTLC.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.UpdateFailHTLC_free(this.ptr); } } - public UpdateFailHTLC clone() { - number ret = bindings.UpdateFailHTLC_clone(this.ptr); - const ret_hu_conv: UpdateFailHTLC = new UpdateFailHTLC(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_channel_id() { Uint8Array ret = bindings.UpdateFailHTLC_get_channel_id(this.ptr); return ret; @@ -43,15 +36,21 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.UpdateFailHTLC_set_htlc_id(this.ptr, val); } + public UpdateFailHTLC clone() { + number ret = bindings.UpdateFailHTLC_clone(this.ptr); + const ret_hu_conv: UpdateFailHTLC = new UpdateFailHTLC(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.UpdateFailHTLC_write(this.ptr); return ret; } - public static UpdateFailHTLC constructor_read(Uint8Array ser) { + public static Result_UpdateFailHTLCDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.UpdateFailHTLC_read(ser); - const ret_hu_conv: UpdateFailHTLC = new UpdateFailHTLC(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_UpdateFailHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailHTLCDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/UpdateFailMalformedHTLC.ts b/ts/structs/UpdateFailMalformedHTLC.ts index 52b6a71d..6068882e 100644 --- a/ts/structs/UpdateFailMalformedHTLC.ts +++ b/ts/structs/UpdateFailMalformedHTLC.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.UpdateFailMalformedHTLC_free(this.ptr); } } - public UpdateFailMalformedHTLC clone() { - number ret = bindings.UpdateFailMalformedHTLC_clone(this.ptr); - const ret_hu_conv: UpdateFailMalformedHTLC = new UpdateFailMalformedHTLC(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_channel_id() { Uint8Array ret = bindings.UpdateFailMalformedHTLC_get_channel_id(this.ptr); return ret; @@ -52,15 +45,21 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.UpdateFailMalformedHTLC_set_failure_code(this.ptr, val); } + public UpdateFailMalformedHTLC clone() { + number ret = bindings.UpdateFailMalformedHTLC_clone(this.ptr); + const ret_hu_conv: UpdateFailMalformedHTLC = new UpdateFailMalformedHTLC(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.UpdateFailMalformedHTLC_write(this.ptr); return ret; } - public static UpdateFailMalformedHTLC constructor_read(Uint8Array ser) { + public static Result_UpdateFailMalformedHTLCDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.UpdateFailMalformedHTLC_read(ser); - const ret_hu_conv: UpdateFailMalformedHTLC = new UpdateFailMalformedHTLC(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_UpdateFailMalformedHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailMalformedHTLCDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/UpdateFee.ts b/ts/structs/UpdateFee.ts index b6b189ba..6ffed425 100644 --- a/ts/structs/UpdateFee.ts +++ b/ts/structs/UpdateFee.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.UpdateFee_free(this.ptr); } } - public UpdateFee clone() { - number ret = bindings.UpdateFee_clone(this.ptr); - const ret_hu_conv: UpdateFee = new UpdateFee(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_channel_id() { Uint8Array ret = bindings.UpdateFee_get_channel_id(this.ptr); return ret; @@ -50,15 +43,21 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public UpdateFee clone() { + number ret = bindings.UpdateFee_clone(this.ptr); + const ret_hu_conv: UpdateFee = new UpdateFee(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.UpdateFee_write(this.ptr); return ret; } - public static UpdateFee constructor_read(Uint8Array ser) { + public static Result_UpdateFeeDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.UpdateFee_read(ser); - const ret_hu_conv: UpdateFee = new UpdateFee(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_UpdateFeeDecodeErrorZ ret_hu_conv = Result_UpdateFeeDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/UpdateFulfillHTLC.ts b/ts/structs/UpdateFulfillHTLC.ts index 9e030d62..02a0a7a5 100644 --- a/ts/structs/UpdateFulfillHTLC.ts +++ b/ts/structs/UpdateFulfillHTLC.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.UpdateFulfillHTLC_free(this.ptr); } } - public UpdateFulfillHTLC clone() { - number ret = bindings.UpdateFulfillHTLC_clone(this.ptr); - const ret_hu_conv: UpdateFulfillHTLC = new UpdateFulfillHTLC(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public Uint8Array get_channel_id() { Uint8Array ret = bindings.UpdateFulfillHTLC_get_channel_id(this.ptr); return ret; @@ -59,15 +52,21 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public UpdateFulfillHTLC clone() { + number ret = bindings.UpdateFulfillHTLC_clone(this.ptr); + const ret_hu_conv: UpdateFulfillHTLC = new UpdateFulfillHTLC(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.UpdateFulfillHTLC_write(this.ptr); return ret; } - public static UpdateFulfillHTLC constructor_read(Uint8Array ser) { + public static Result_UpdateFulfillHTLCDecodeErrorZ constructor_read(Uint8Array ser) { number ret = bindings.UpdateFulfillHTLC_read(ser); - const ret_hu_conv: UpdateFulfillHTLC = new UpdateFulfillHTLC(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + Result_UpdateFulfillHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFulfillHTLCDecodeErrorZ.constr_from_ptr(ret); return ret_hu_conv; } diff --git a/ts/structs/UserConfig.ts b/ts/structs/UserConfig.ts index a4cd7e8c..31f28d33 100644 --- a/ts/structs/UserConfig.ts +++ b/ts/structs/UserConfig.ts @@ -18,13 +18,6 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.UserConfig_free(this.ptr); } } - public UserConfig clone() { - number ret = bindings.UserConfig_clone(this.ptr); - const ret_hu_conv: UserConfig = new UserConfig(null, ret); - ret_hu_conv.ptrs_to.add(this); - return ret_hu_conv; - } - public ChannelHandshakeConfig get_own_channel_config() { number ret = bindings.UserConfig_get_own_channel_config(this.ptr); const ret_hu_conv: ChannelHandshakeConfig = new ChannelHandshakeConfig(null, ret); @@ -71,6 +64,13 @@ import * as bindings from '../bindings' // TODO: figure out location return ret_hu_conv; } + public UserConfig clone() { + number ret = bindings.UserConfig_clone(this.ptr); + const ret_hu_conv: UserConfig = new UserConfig(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public static UserConfig constructor_default() { number ret = bindings.UserConfig_default(); const ret_hu_conv: UserConfig = new UserConfig(null, ret); diff --git a/ts/structs/UtilMethods.ts b/ts/structs/UtilMethods.ts index aa560727..58c79b04 100644 --- a/ts/structs/UtilMethods.ts +++ b/ts/structs/UtilMethods.ts @@ -6,7 +6,7 @@ } public static Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ constructor_BlockHashChannelManagerZ_read(Uint8Array ser, KeysInterface arg_keys_manager, FeeEstimator arg_fee_estimator, Watch arg_chain_monitor, BroadcasterInterface arg_tx_broadcaster, Logger arg_logger, UserConfig arg_default_config, ChannelMonitor[] arg_channel_monitors) { - number ret = bindings.C2Tuple_BlockHashChannelManagerZ_read(ser, bindings.ChannelManagerReadArgs_new(arg_keys_manager == null ? 0 : arg_keys_manager.ptr, arg_fee_estimator == null ? 0 : arg_fee_estimator.ptr, arg_chain_monitor == null ? 0 : arg_chain_monitor.ptr, arg_tx_broadcaster == null ? 0 : arg_tx_broadcaster.ptr, arg_logger == null ? 0 : arg_logger.ptr, arg_default_config == null ? 0 : arg_default_config.ptr & ~1, (number[])Arrays.stream(arg_channel_monitors).map(arr_conv_16 -> arr_conv_16 == null ? 0 : arr_conv_16.ptr & ~1).toArray())); + number ret = bindings.C2Tuple_BlockHashChannelManagerZ_read(ser, bindings.ChannelManagerReadArgs_new(arg_keys_manager == null ? 0 : arg_keys_manager.ptr, arg_fee_estimator == null ? 0 : arg_fee_estimator.ptr, arg_chain_monitor == null ? 0 : arg_chain_monitor.ptr, arg_tx_broadcaster == null ? 0 : arg_tx_broadcaster.ptr, arg_logger == null ? 0 : arg_logger.ptr, arg_default_config == null ? 0 : arg_default_config.ptr & ~1, Arrays.stream(arg_channel_monitors).map(arr_conv_16 -> arr_conv_16 == null ? 0 : arr_conv_16.ptr & ~1).toArray(number[]::new))); Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ ret_hu_conv = Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.constr_from_ptr(ret); ret_hu_conv.ptrs_to.add(arg_keys_manager); ret_hu_conv.ptrs_to.add(arg_fee_estimator); diff --git a/ts/structs/Watch.ts b/ts/structs/Watch.ts index 269905b0..34555536 100644 --- a/ts/structs/Watch.ts +++ b/ts/structs/Watch.ts @@ -54,7 +54,7 @@ import * as bindings from '../bindings' // TODO: figure out location release_pending_monitor_events (): number[] { MonitorEvent[] ret = arg.release_pending_monitor_events(); - result: number[] = (number[])Arrays.stream(ret).map(arr_conv_14 -> arr_conv_14 == null ? 0 : arr_conv_14.ptr & ~1).toArray(); + result: number[] = Arrays.stream(ret).map(arr_conv_14 -> arr_conv_14 == null ? 0 : arr_conv_14.ptr & ~1).toArray(number[]::new); /* TODO 2 MonitorEvent */; return result; }, -- 2.39.5

    8AEm=X#HEmqxVe+69aEjzZ~)NDkpP;%(yR4%n)^=X zK(BIQLi|JUqU@chxVUH%JVH>wQgKlMQ-anxv7p{!os#p4r>Kx|sJF@~rA)Rma*_f3 z|9}@Da*`=7dRgbIk{VudTPfEH__N_-6`XKT#cMh#rz20%tBgYxmAZ;I;6<67e2R-! z!b3ngF`>Tq83+AwanUMfnp*S$J{iTYuEqzc$niWyYZ$dKO*1@H_7VJ|93|TUii$o) z0BRt|D=yjv4{IPdL=D^ET|EFgi#PlHnVYi~Ew3kybGG23$6MZcznBK(fbPBDoqtF? z+%5D@?{+9~s*yGHO76VG%!=I&t}1Q206Vs>(g(A>OSfT@(X$_WiSx$pBj_VY>sVy8 zfE0$)2@Ue;iIffAm!6@bO|Rm}sELB$DQ4L;TY&D#9Jy*9J`9)m&?=Xw0nU~7zw?QVotVILu+V*n3NUZnKganIS~KK-*hcpV=^j{n)d&sGU1UOOxBwb=9)nKU#ygJ zxt2$E0xf_yzqX6P!`d$dy3>^#T0L za}X;>FT4+aeh`lob1S8cIfA>9b~KtE?7(BWKo7pj{9<>Zuea64Q*ya$H!*9nEjqzH|Sjo1M{m+Tcdn>xyx8Rh(Oa^|T z1AVJ8wF1DEzT;?u?=}4MKPIoraOoN>=IE0sdkfo$gwyo5hQ^w7+8^-c>p=f_r0_q& zWN#qEw_6AMXe*3B42uk>9czmx*3hzKFkP#??jJ&;Li`u{*6Tzy1%LPXj{*Np{!5Ut z29f|^_h0EFlagu}!CBv%`v8nZ=pm&aJGw96?}isG0LNk`&8u6+^P5p_KPv>nlpEK^ z16j-+!lBW&!~TFjk$K;(g-Fo35p?NqZRN~?$7^qgwAfx=>2GfZyBNGK3BfiigenoQ zYGI8;(3*GgLBK~WarK_y=18f(g`Gj-vCa|!EJk{-1*7vLtrwzB5I1fn|=nU!In_h zmVWl9|7t5KB~@>KAdg5aV|zo;UX2*6g{1$eH}gK1ta%W1YTm3CwvZs+plT#$ z2EGYKhB7$)db=`S>IU6!B2R!dP!;j}%1I-ne(BU`dizY`zeOxxVQ#;KPth`YY^Fzg{+RWPAja)?p*B^2dX zl}zXcJ$PTl$6XlLt5G=OeW?Mpy?5J|>e=CrW)WMSqzZmjg8KQ9#vN78wT=$9zdjka zu=rYsGt`z-6sO+0&e1|$vmmLf?REHy79{Ob_byHv6f^eVE}UwFY6R47BsY8H;4Zap zang-3krECuQ^La=BYeo(qy#nS{iNhZmleQPsdT=Y@P5(*;j^9j&~1MDL5y7)OOjgO zxJQgJkS*=-s>_U`*?=E*%iblUssla+kCBA*>`p4j`5Jvx+7fgt3Iwn9LDUH`k}@z+ zgznEY_ZWq7vQZ${Sg0YZW0JbR2Rd|>_G{ppxMmKsc}}`KKcodO<}cX4>-Wn=%z zO1q7!RvVTi{l(VvnQAp?X;P{&b06D#vopa+PJCtGE_JdpshwK9G^w#|(ch}onx#n@ z5gq2_>*mESOB&Ydb64m#8uT1MT`WO7Zm&T0V%kpaQG-huto|>qG z%aU4z&Q}r3lb&exd1mO|ER>Uva?)7N9F~(avRcht4gl|Zx>~g<2Y?&=EO0mhjQ_&F zOU(`I-cF7F1OWcxQdjGz_$1XNKYJ z>T}X~@;KD@t`aq-BB^^cP>zn2#`z=5fOGY3MN+?Z8l|W}P|BtgrLPm>>fCD8Y(-LH zt2$YI5J@5SSly;BUy;<$eU>8b$OVYA2;v;VR1%R@G9n^#;)xRk7}MqT2sH|xgfF9b z6v#uAtC~D8&_N#g_zwcvo@st#6g~z)%vGX0$m1=jy6pW_#H!Zi-QvOqG*{WnlHx-@ zSDjZTwQjiRZd5#7Rjx})Y~zbUDkCYirks87>vB}{@^1F9_nOtsdug)d&4OWGh1YHr z*#P5e(C*2)(4AW3ZPGk~ri<)QugGrC-bHY7GjIbL8VPP~jR7n=YM|2RgKCR-wP{_b znk7gP1SF8QOdVX66c+=Oe8Zy9#KP`5>va3sktBC-fMTc6iNYV`r1$ z(&tro0-9+SFtr1+9xzB(7e%i&sS8Z!1eP#8OE)J1X?36Bw0a0gi@lY1Yu)Uo&VI@1 zgj@sE3wNN%e+(+Z9x5L406Oy?2-2$$HK?RzN!`O=%20LOQLVmNos z?_v^F+cinO&PM3Z++MBjUvpMMe`U?t$4VHAII$)vHD>>J^|-`=?}SU-*F4V|CBtrC zrnx_FgqpAhp<94Nq{$O$we|U%X&OL1KO&lR5Ui&Chq{{ad1tHU z)myD%s&X90a5>5z zj8ix$e#=9=*XQfHlkM1-YWk!Bi+@HB=Gxg655;pB5@?iK7dPqalj2+i8m0bvPZ!-x zp!EP>QZvAXf>~_dh&n~Op92r6N5_~EP{Z~yr`2E-yUSlMMR~|3(I*s4W2Y zjmM^XZ3lp!zL8st?vlNBJ+;=%0IL7TNgW$u>}*L3e6H^O80>%CO#pwoIx()@D3!`7 zf5Jp-()DetopkqZt2^n2A<5&PBz5i$?vZ9h4Y&&b2Hj+sF!!a&6=WAXAPe#&f8$(E zq7Yp2ZlW;=7^?^^*;IR3$VfnMYoR3&KNHu9oifS(i<9i9HvrNZnI!{4N>VR4MMRRi z)KfFMw~DA&$L(UEqy?k8br`==$7NCnPPlOxh18M3Y8n%9rl$1FMDjB<<>?2`+?3_l zSF6;@q*1oYC#uz3m5^}yZzZy|2$r^0M6hJrwTLx0Bwd(z5k&80ses7a;C0+=P#XWZ zD=x(Q?Dy4y_3PKG_tRVTvh5ocrw*pK`p9O7WBKK++MK`WdP?ufpY98|%vG75k25`A zxja9)JjY!n%TobwAU+36WmidfMM0dJ{;1h6tnDugKY!Gm7G`TRGER+p%zV=J*jhvV z^qBcllSek}hDlzzckn(#y)@o*+KwDG)Y|c;X?y;jIQ8Rr(_y;~j)VzjqV4H>;uiLv zU>c#eSN9ld;NxbpZQv0@jeXqg?s)c5R@wVM4m5`P!!oj07_^nae~bA;pVyEwqNiOh&7kr|uG0Ef@Jb#S%%@d-1>*88qFb)DNB zZ@U*(-CwxPrJ*qc*HCGLZ8fPl{Q2-WmHL9&L0z)gJkM5^y<3f0U?$jZ9kN^9{!g>5 zikfSNt1gqwX13uO$5h`*=7phc)tE`dT!ankwWbHc15mlUGN z8H21M@5_=RyV-6}JEpo7nKQy3s9yMSk=ZviZpqC+Mrn9gQVE{HEe${KgILw}uV#|% z?XG*&rGGVB+s?l^PTllZvy<(I_YGC_S95&ko*f1(mDcoRtBE}fn;siorOkd^B|S9A zbIkkP9wP*%qJ=%X61jS{>?+B_reSIP$4J&=owwur#=^{EGe5M=${SESbv@I2AT=<= zLV@!xpYBp0KWDbGf9={G@P1g(2(>PwW)!gA?2O8bbd~fC#1Fe6PKEx%?4n$g%}utp zPaa=*UWwU0G)5(0*;=z;4^KHBtI;jE**3t!%^MjOx;IZTV{9+=Iks@$6mw!|gT%N! z0aaCEo~NciWoCA~CD%d_=!Nye^d6><`CuPui^2fWJ>KyFe?TQZZYHS2r_FfV;w^@{ z@M*KR?Y3_XHTr2YAttY)9zl(**ropQwD}jun5$8=HH(9UWEQU_sOS4vFT9}4Tpwy% z{|0VMdd6I9tH{QZ_Zg7N?xnkw?-?_x!K%j^g{Y=~H)mh`^)g+_v%uiubRjg|N3PNf zKe`lHJpPwjELsRG9wG=#P=UXjp0L}h)#RyW-?+eFfK?hkI>%~wc<#bjwRtK=S#{DL zbz&+=WW?Y&l{C#f-{$zYp$1PgAG_H3xe;PqS8kYEc@iWLRNi?ZIvqqZ#aRugFpjg} z6dg+CRzn4*na;+(1wt3;bB%>vr<>n|*(MH*Q_Y_P3EuUeU8>7-W|A=}uTjYIWE23+ zR=i-wG+1OF3#c(;+Bwv*7tDujH(U{?9++WfG`aCD&6IksH`LM@ zW=GrRFAcSOhS~SL`vw4UMdcKb^8qkU)+g2@?vEB*#695xKz;9nwNTe3?&=Kb8@rnE zqS@0{8aS>tzG!x_?ccC#`b@K>ZLT*~P5hU6UW4#Y=I&N$Gflg#O|RXm$6KHdUyt3& zJ=5&ga(l;P0oX&kusLU!vVpueE{{{IW}>8Nm&Yxvo@pkB+U`w{Q;9E`=fzFPgl_x= zXE~tGKOTm}Z4fj3B{R#mJ}qwHD=(Q>h1p)b47~moGrq%<^Xm{Ch)zbkW~mqMACH#3 zIuf+mWw!ZhXg{@KHfkJwX`BkoHe1E4dPOs@Vo*IOE&SV9l|9$Y4C`w3z@{#zal%jR z$5h3uW^&A-m+R%dV29*&+4`JsWp1Q1ce9;HI;Niar@1ZW{+D!?5i;k8FWWAtbJ^bQ zY$0r-DF|z;*1Qf@@MybZDq#+g-o9^~8Z^heBlK}KZ;sii?X*kKu{a1chYKjJ0-ptE zAb!Fnaq7?Q{TL1_KCa(DSTgk zigV)!=b5oFuf1qBQN#Pg*8*<`)%R`i_WhkKpqF;63-r5fj;XI-H^+o+zeo*v!|dod zaxsVRC}^_*F=q)2Vvf8({N{@>?Y?1N8T&Mo;Y2%)d!4R8yc-b*-Y_o+jZhulG?Nme zhA+GUN}A<7vOC~$ z*-DxXe`L3M`z`ZQTeFvUsp_}P?3jN%tJ`kL1s{EBO;jQmR5>gJ{M&A!@5_0pW_J8B z<)4Q^v`N*Yl1OAm^DHW9hs@HlJxNx}o_!mczl}Sl=DrPHF|$XUs(c#*do&zL@0cx( zPag)D18gPXE5)IPeA_iqRla4$t4H54<6?HCpi$74k>D{w-!XHSn(>b5ia9c^UK5f( zmnJw=!n>Fz2B323!`ODZ3B7LvvGDxanBA)9d^6KF6f@cr^Uby~?N>Dx zfuL9qC|g4*ucO*HAL3#4V+YlV`DQ!Y&~9<6-FxQ1HqLHV!RO&t;F4xfjkXG&G+H_^ zNyWd^DLytt^e^xyn0}f*~_-I zl~wa=30BQp7nw2V&1?o_FGNw^4nt!prWFl76bP)oJR;OL01mG)G*(6Z$2=6X`3GIN zMVZ4st}Q%Di>*m0So(Hv3#$gT7!>whlVj>lh_&t+$#Fb_Bgb(D`~uC02bT232=rYH zUt0c7?2O;+bRmB1PM?zrO5<;z6l-$5sb!lp>bC*I*mv7E{lQDb_;M{(<}|D`R+MdFi?Xjy-}_0!D@~@@^eDR!7D&atI^8`%mMLFrQ0xpJKMKT{eH0^1g4jwavNO zP>q&g_0p$xoa(m3Oif>XlB`NgY2MJm^z`?S5HP;`1%+WZI>c)ZGc=&M56b)Xy$1u@ zvK5|B?>(sIEivP4QK-VT3{|WfW~h6Xp^6(@=_=fxqMVv4+7FT{&eK)wWEE{##lWHH z?9%>GQ>1DM7sk19Ch^w)Xvrzzi*M5Vjqq|#aIkQUox*dkwuF#LcKn=xR7N~rh(2r z^(NjfK;Ai7%D87O$`Fiocu~Ty(&5WlHo~!`*-S_D(h>XD1T*|JgBju^iTUgkLIaUW7 z0|p8y9bQlq?qN7~e)|LMz6`;=Y+h2z^!~C-ZwIXc?6<43<;NQTvkl0Y46URx`9jn5*q?lOU>_^wCmEYO}i#- z_|>k7dw7vT8qQPKSFVh7VA?1N|FE|;d#qJcSC|*Kdh0jqwqSLE3t)!&9u-Ao|Erq{$-Ib6%PvO_@A`R-L;RgB6tWEO z&pR}_Vje}oy8k5no%vARVc$AYx^xzkMt!T3dLOC5?7{~>fSSct>^`vYU#rdQLT$@7 z87g!wC6-$)B6q9QFQB*i_gb?>*vX@6d8OF~ z&tdJ)^6c}*RsN#5bt8JmFq42Th z>e6-Qowg?62(v$ixKR-wr}lkpwlQCcM-m+E>usI(O9{l6SwYz$d2?Ji?T0nO<4E4~ z6SJ)OW6N-U6%;+fTiG9Ly~gn)N9u3 zORQ!M3A37&7-}`^UzKRqVQE(TrsLQB66lA6!Vf_rQ!jpDnksRf*`)bR6Kh&GD<)2L z-(cQjYXQe|8_dPFk)K#~zP_O2tGrF(GM$z8e!8-9j54;@wQKErTG_~;ik z;|nvTML2Frwz_U$l!e1C5yauus_HYdsjb|IQ~N(dm9bC;NHd4yXcpP8)q6idgCf26 zj}umvBYu%8dp16JG>}=kJOpD=l~ldJ!TsShn zG$*y#(Ny;qj`_*iOnV^ylcsTM$CnWB-+-gRS8x==(djF*&=v}Zbn3VtmG=`rrK^c?`zr>dBjYuZR0rg_s!-NO}9p(0v7jSWSrWy z*(^;;N66wi7&N3P%6wGYx-by4O1fTzM1R`?t<=vEaq7J-<^{HuaO~LvwXlLCVXJ9x z;Jg}S*>5YB&37Z{j;&_5aDh!t+iIq?K5~^vekbl1-g5if!RcuEMAah)yl~!&_U?WA zzk9E+t;u7AZP}2DZ0i7k&}{2JLuB%D>r(EV7c3>MUMUyqQkv>g!jY66GZuYR_1$nB87Ueyt$H4%Lgf$-8(Gn~h8&4v%KfY0vN6EJ(voBPzh zKDf+>f|=FwL9ZcYpw?C^L9c~>3!yF4Ns4~`4gN?L&l1xw2DRFg`yFL z^RE(C$*^pM;SQI)3Cvs0kbRF}ioHKrAxm3--@brvI^uj!@!#|K$LJ2o!S40WW&8(> zT53fFWBz{MKDFc<)8W2sl%CU*y&dwjYlQdtV(rTIZV;En3+F$MV3;!XyCpWnKir?{ z&#p0h69nCbqQoAmMr;ruwmr$xK>dU$ij|;@qc^jISGwFmfEFPYUURI2?-ndBXjdmC zO=TJyT-8>9W_kCbm1N?{-gh6?r9W?#F0x8i9jua)R8~b*6rrMZ0R-_Fjbki z*gEe$sCHGEkK10~b5PyA!+fa4dod)l@E2n-va!qH`Q{$)L*;(8cZZqU?@`D#dShw8 zrPTr4*Om`(V8YtJ*G~{_OPgJJpHR8$bxq}rUB+dbcY0>E8u_g`z&3dCFY4`Y&1F3X zEw$J!qA4p2%K-Z=7k~Iu6*_vY_CEd3ST*ZA^P+^^usz~!OsOvHy16Ld0@lT_7~1!p zd7g>K&|M|Naqc&w<5L>Yg7SiNa3bA#6!X0eC!(vgY2yUvXz!7HP0TQD z-0p3C9nj(lcwg>~`rvPTU91|g3)o0UZKb=+i*0ir+NIX)GIuw)?6!je_4aOaWrK0I z!Zp;^wvGDx_h!27o5mq()A#0bTZcu4`iB?ua_$n1q7)Gh!|!=1Ry}cFd|S2CYbGYV z@6&k7A)ZE9czW8qOSSTu9mBRARcSu6ZS$m&HAuPZ=U8>0&n#>(x7+c6I`Bx_c-!n_ zP>S3Z9k1*^m`!4Dz+xHusxHsItdhGxdOIGjR+s)@ws-gIizPz@5d%Q*YEgff=K}Bj zhu$U(Y1+&n24f$the0P2x{40NH23FA4hFpO^p?i&`!H7DpmR4;3xcU~x_&&cOOsNL zE5Y{_2qCwKfKa~OJ8~$2``&x7r^fIN(25-X0Scw?CwDDO_hV7fXpakXQ0ZKC`yMlO z$X&RO*E8E9Hkhjug&;mI7PCtGpLo|mX%M#svldMvI!gTEm*SxSrcTh_+n$eA2lhbD zE8Mk9Mem1rIc(=H7236P+jh@mQNZ~x1Yarx25zR2?fcwi&MJLZmFctKnC!{buv<{oZk39aT5&H@mw}!0Hskyh%YFkPEkt zP4MkR#DKzeW3zl);NneOg&UX_28zk9f^ktHV{i7+pgtIofIXIZHU5%uFcAOnP;7|r z1%wUYUgY0vBU7VbCvT(ew>!Z%;gs-(M&ZcXpm7m__yU%54Z>0jaa~N7MBYp&#z)C* z3*(XIHl#s7O32vzeVyxM#~p3RlTZ^0%zeyqj2LXNmkVOQAi;E>uRL^H^Nd24;zKAO5~|pfBJTJj@pK5f_ zjJZfjpiY{qo76iHKarsYF<%kIGn%?<>e_G?toz+v-=Ag#M4xm2n17rTE zHjBbOzC;-(%?@E-W~j#_6LDTIFfiT**b35DR&-vBR zhMn!xe*uF0Kbhxud1)`&M&;+TbQHZQ_j($I*E$G3jNCDrv4ey--{mU(FtpsYXua<; zjn?e*JGWO+(WvZ~!)ANi17P&PXggb}@~euN&X21995LIT|GnR;=o>nq-ynwpLY{{J z$C@}y1MwAz^cAbnqvq{(TJ(DVIxX6K6fJu8mss7Rh0|(UlySlSL|AwgGzH8dK3vFP zQAX+L2)>uhrYx?6oB}%!k?cGF5F0Ytrn!h9ZcIO2P4drByk}rvUT}8jRH>nT=#uFX zoi7aEANb7oirVnAc}*Pv+x4vj;Edw{@M}yclKuEIwE%|pQUiW5yVt?t?ml&J=>G)- zS#Z=s-^+jVtNtgBef?3Nyy{_ea)U3AjSc3%M-m{aLb-aD$H zzZEG#`g;qm8v1(~p1SmRVrO0Y1JBU(cRP~>>F;ixhx9ibPTw^tDm-BJtJ9_nFRtIF zNL3NQN^S8^R>L+w#j$mNtG|3_wd?5%*;P3If*!&hwJ9n(BBs@}*E$ako8L{h^qGtG zNW10R(_7jJvqbGkYXzSkX$|43Y3cvR+?#+mS!{9RO_M^|nl7X*rGon=C^;{TQF_ z)lK+M8rCBvby8KZG$0f(mb6Iw53VMNg5*`^Y-UdWN^k2EMf?kQ`xa{QiZ0~+I(VXM zEstmdiSPX%$`Mc$$!yjj14@Aq%+R1Q25ge?`A<4nQ z&(iSuaNrI*?|a<+_)0Ca_@F9p?t`kMbgZtn#%%>v8_)GY)nPn1fYsED<@E!Y$^YpX z-aUZTiBG`_ll0b^RXu*L!m0{Rk_`q_V)5EBx0JT#&iT`-`kH@Qi9P27 z>if-nK>c@RfLd}xDPDDU8L07{XkSjSU*Dy^(g!H}=?XwiZYrxj76_o;yROvwRe>*1 z&1k9n2LU7O*Z*8Sopd$ZaYZZcD(!L#)o1V_FNKG5K}j;3Q1x9RC&Rvu3#;M@Qy`sZ zlXTuc4qAVQsw~3alE7p2tY+nCQx;s10{N?T7>pqI8&%cTgxiOp9xZILpZsk-i>O=W zq_Sd8F={-XjwTYC=tEKiA;j^cdX}pBfm^DvM%HZFX(qznmp(vX#p)uSA1e0BaqN?Z9lvLYnTz58)j#Bf%PUqj z@S&^VxAEHCVuhr>HeImVasKWd{9p)6@}b7r^~;y4#HT`H)`tD46m33D6rGYdme2xD zsA7`Iel|eh$yAa~#NKYf5e58d_;9E2(P7M&2NuP7r?0;D892TO1b+FYvYFFtC{|xvWyil0V~+Y#D#X39)kgIUg03@n<-LO8(r5 zvZ?&Ji!4L@xfMR$t!t*j406|vZ=BSz;V&&JsZ+i{av$lGz47taI;9VH4y|3rojd&{ zcfLNmj60JWeT3R{1{_O}E*B?cu*X=zw3GR#F-)(m{kbx4?)3`iK8^YE<=hun-uI~3 zDfHV_wR~m?OFw|mtHT;-ufeNEh}ur*y1t7Al+SzsJ}(Jy#O5gz8C2tD+i!=yRern5bxjXWCz9$tbllPKY-|wL=9rq z2BLS0dzVxvGIz@5EUBHXiUJr>Lyw^u65V(2{zcJ{osuME-1th?@h6h-y^_$2TGiWL zrJB%dv#5L%65TIT6t>DnhH;aTnY1SO=5;r+SnYUpNA#=XTG_9Nl_=#qF>T&Qzv@=! z+fc6Mb!_+1g1(`$wA4)+_d5p(@~y=2(Ryo?PbzdDCGP4B*f~OJu_c@UMT;}gkZ7^z z8l}b667D9vR2#MWx9qNd{j_q6+SYa^V+_ z&%AdWYhcwEd?FB87YfZZP#6Wx`mUvTcsjQ?oxr1MrK9aM({$S{$wo8)C7lGd2!N&h zZib&0d`@f^)`(d{7Q1<-Qe^r9+}zLI4GEj6i2FI(Qbiq9C;fxG!S}?m;E0!u)R9c; zNN!n2()f)y)?K6H$tE@>Vo9vGvp#vo@%<(iU!~1<44h`HDV3)+VFs;cdl(O`&zke$ zFNG_Hg5N{R);!EeU)E<43ELFEc(^zKJ`!z|HO^m_OJ7;zZwxJ4d(NSOAYxl(SXB$21E#&50Bm@%#9#Ax6AL1AzWn zL)Kb*9H5spWOX0^>LWR2Bx8vwE2#0T+UtHN%&y4=hCV6OjBD6ZkEWu@Bc#mr2Tg@G>Q6!MaW)VlrsFj z>N5W_o<(R&@Nqnz)vx+s)MXF6EYBlcsS)d^EuJ6Dhcsd{wC2HK{Bk4K(faU1>WAX5 zf=-iApqPvgd?1sS5dcUc1)?wh$LCu7tS97l<`PG~<=XqUHLDz4>$SLI3FVQy~>|OpnJa5F}+yr+3fzQN|i;w(*CI z)v0;=`U8)sSK=MHZSUi46IgtABP50_`yav=$749YNx_UZmwRSj)LtQ%K-gDe6wB~G?9KZ;u?cwD*Pn;+r<<^P3DzRqH#o_S z^MPdL%B@QL-eY*>b77MA7-r!^Y{O1R0ZlX5xtYRVD}E!Ct1HK`twQ1M8A+f}OWX?`w|HRiXPvC0iDZ?8~st@TR9 z!T1mrS6;7_e)fvDbQAxtza+2gaDJ7sa7^uENi4d_W$}C@Zgm3=kT%tSJ+Tf@YGsQi z+hh0;`?*;#EBa1Bwu~4{7MlGE)9SP+nkN= zD9n?`ap`g(;a{fRoy!OV{it=gSmR<87%1tE-szwdZN(lfHoKeQ19|6ae5~!+0SXSZ zU~!cjLwVg`nj>57U8J=7Vt?5xXDwM$_1&K;qqObQFg~&+=t@35mbGM2*5;Rp7Nty+ z4s{ovP&ZII#ETu^VKUzDNj1KKjL%f^_g3SBWPD2*f8QH_w;?uSBGF;Fl~wttQfjV- z%r@gGt6Kgr<-@j#lJCOpQqK+}1!=HcM=99WoB9=ksAXT6*!7v#N3CQoDna~O8Q;*%mD|$=D7s~kd-g;)r_?0rgrZ@j+8NWcy z?;ZaqWWr>bFwk4zF&UpN<89ss>dAPsT9G;hRb_mljBo6%=coE&BqC+JcSNnOQ%Kkm zPg4sK#Lrc7OHA$U5HSETUVL0H%b%3-uVW8RdMdn4#RI9hK$O)eE;xM38kzHsH|Kb7 zLzLY$Q#52vnIrQ}^XBV@e4;WeSl1v4&UxD6bQ(I=LbJl*VM2=VYuGE}8+zjh$@n!g zUhj?1knvo`--}f1u{NOu>^IeNeRmx_#~x*bYrpap?Ak$J_C2oSH|h7V>oEN~Q;r3T z(P`969R+R@qx+?dw|L{NGXDLF@gos07?)KJ+ho*hvF~xu#>kX3#FxsWTtOXaga4N6 zhpy5OAkj588GaABU?aZSu6B^w)_AjJP_`_vINxlAO13#_wlr5A%D1nqxPRQgIVGK+t{*5PgeWjX>lLM7rCT0Z9Dc)#T0{4^)&4 zX>1X4=WW+~tq8V<{>3g8<0|RN(DpAp));)e*fPU%pU}ZQ)b(d5jj{(2g|- zIaXhZCivT4g>X{RjwLjl(&(n}>`e1Q)9~U0Pf2s%!Q35mlc%(2Piw2Ry3F5f&su6P z-MPz;v}d(+9|WWR8|_)7j;<}@RZ>`O>u;AU`IQWZyJ&8<8441%P4@=6_Kd-WPrYpW zbMfq+8uu=Bs6C#|!d;JQ+>#oYxcCg)x4Cg;kyT1@jZj#I?KIh_)SSgJ=n%v<67^i0 z&XYKI&sFzfsK$>U4NMH<8&X(!^b_#CFgv>9#eu@yU~|3|`?poFx8SLt{C*g}lEUiN zk3f!{(#1t&l>5XaGl|66fk3fX+0$Pii-yfk+=>KY&hc35GTVJpzBAJ*hqXj54C{ zWtSUK9iCDWBl_z+rSiQFWkffK5v{u=?-3pBvjz~;h*sw_GSFN^HvuEgejb4{@Zk&? zR$|l&OXe!jHc+5FXN7xC7eG7y*IRsW7nWM()5oPRZ5#e!7uHYn?V_&CpxL%5yelSF z`vUw=TA5k>m=~%@w-rCkt>E4s!La>4_#>se20pnP8{2Kp)3R1ML(0W!d2+f2_V;a(%rB&Q z$}~R(8afdTO(~>P7;oAgGrI^th?yN$pg{AEgr@IHkAUW7RtA>1~)m5_9z{!tj^}P?2R{Qf7 zJy@ppMjxg6qNmDLUsbI>0=0@xU7n#-e_2+4V&WsJfAM{#dd7$LMD<_xR;qusPr2$@ ziUR#r)GDg~JWr|qHBo)+$_bCCzViyD`UgY#!d@T&)zyfd{Oew6Pe&SkeWkOH}&g z%d%4cR>~sj@}jax_Ltt`cb~u-yYvdK_+U_ z%)nsODu8c1RRLZrflsNM^N9Ml;F3o%B;yC;!;YKY`@!)Cdrs#q2$Kf-9bUt7ALEZb z#hPk$J(Si@(6OJg)}L;xwB8hriq?OhqIB+-=v>Mzy6LeZ3z++k(sV{2;&F(vQ|}on+to|4_9$EI`tEVP0xO;hIV|$ z@0&XGW7RZu^6v);1CS4uDzqz9>U$@jY-XqYr;g^G`?IF?9dl6Ah|8o6OWzo}z)-TT zg_3oxiu#Q&>d&4^Tow+`KSz^BC_$M8t3c*{g3t9fCAyYY`i)?wNx})DF+6$ziwZtB z8`)`(5#|H*7D09d@AMbF0#0K2<*olc!7*T6Xg`nL?@?+jp_v`r>n=4ltv=ihQK z^FNT&kOf(n2GuOugPqlN``P=v=|F5q-tG81e|jKm8Pf5WAcZa;6Z5>7FB!;&$NpLX z7*JHm5wN8tlAAdVt!pV>Hgxypaf8@>?easF7QG*AW-%_7q1Q^$Z5l*eIU2D1=VIP;2&<>N{$r_!&p5^m{#6}(>3nA3c|%yb zZn7G!3FqgAFq`hwB_*GxIiL0~Hct1rH)1Of7|MEtO}VLz1>HJGjPh7M|MXclRNKM| zYsn_Ga5|g+I26Mdf(QYArNlDu2lJuB*jqKb&-4L50N`)GR?I_&vxeG*rN#W!mspIh z_`C}8{5d`#=cv(|P5jDm*1q;`!gHstH4Lk!FHFD&v%X6aR6o7#Up!?5i#29Z23n2{ z@Bu3o{2-#~%P}1PH(5RnV86)BwHGxhgK{iXH%tDGc)3i*@{1$byhf+3Wib1h0CNx5 zBZfTrW-(th5<_k~3;2)ZVnCJ`@cGNxQ@Sv3%vu}2n#-E<;`dk+ZIgKlm)kN5T&_#~ z625;F>s~wl475}DJWZyhlSlo6H7y6b9li7U@)elD^k-S$&?Hxd>2UH-o@K+dC6kre zc&$HA7|j}K_aUOg6lRY3vJv%jmzX;brh#7MRXX~9M}B(}a~L!@n5QC_Ujss<7mJJe zz%i^=%-05gm%;1mXAMIo z?)~_q%t7Nxat@-6@nv(6hr(rZ5YvGhXRs0c{5TfhZs<$0>0rzc?G@F-WPEptCPVS< z1z5BW3G%I&B=Jz+C`4?x@pZ34fzqA;h&j_)ZU2zzJbM~@MwfqFjd^++zc7u3^U~+o z^SX0CsL_j*=+~cTZ8UH3gU_>Cl@o}*+gJ0nC9Ia-9gdLFp{lt`hdidT4!waicV@X`meB?8&z@iXJuys%;C zE1+3nF85g3h=|%bqNP@a?}{jL4GBdP0^h_tYp!c`IHH4p!VL& z$~r5ZfOQreS;9RNu+Dxu^cU+a>Lt0(UYf}IhW&P`!T|Kmk!0`lG0H+4l*NZk!b1Bu zMG!%m9bMMxwv&B3y^WVnV)HZy`1Hw)wXT0$U?@oU7eT;Lvp)Sc9Kcm&5eFC=Rd#-{2j-N-5TC@ z3hPn(hbV$`w;%|=Oe8qJROmq+zI+OsRrQxq3e$?@NiQ*`9e=Et4}OV-$5cWs62SQt z0PJvDAqMlm#w-vq(4_KxFR?mdOK|&?yIvdbQfV+s!I9dv%7&{7sw=~hiOqbL%AhfF zD3rCY(E?Wve)s65^7+YP9yJY1<&S;JQqfG}&rD<4y6N7CWBmLy=F}b8tLCW1=S^pi zYi~^q;}@o5saye~{5qX=kGQ|byFdn(Ef5VK@G^Tj`pyJe2cU5q1mz(~fF7y9Rc8?; z{Fj$mkH}wldyD(5uMN-hv*TH7{;HJ?2)%H$0+O}o53OuuIRDop7Fj1gHILPgybdIh zOzjeVLD~dU8~HCu>|+OpLAW9=eQT5)HWJ><`J0sq-pylYu$#>u8(wZq{qiuTA02%3 znEv~_VxBS+V|wZE#|zk0UCs`r zVF)eP3)n#a5B?>ad~Lg0EaqQSEQ%M;V(m4bapP?Eq;B7rYHI5tlvUCtABnrKWt}p`I$LvnYI_!cbQW9tgeKAU}p_AQ~4n~ zTc|s=1vTt&pktf)jk&Bge`hXBju?Sh;^l4W!OB#Xw)UkQqx~BWqS|BlLni^62Sy2->hG6vc=z4l|ATEo{jE>}OUtuG3%Rg7kzRI`1!k*LB zR3mC^QNNP;D{nDlg9~(>350M0*JJn=8xQV- zh{}Y}L~mK(O$VGb>C4Tp!a*d6PkWX1(9K-00K?s{viZ7WpQ*t`|7Npvi4=@|jV;zK zSck7d`YK(Euk3|vfo>pu5#nuj0soi%Fk(Ce`Kw1-)(VQb*!iC*Gm*i&-G zcra%nky|%EVwOJG4$jCiOE*7JA)3yC(c{%%`1D@B<7{#2qT$M2l_$OeG3U@~wa`0n zuwZ`h6^NH#y}>NHG;acXlZD`F#P)A8qyN}w{>+)m`i8#^*zK#-;H9@Q zPiI!D!B-Z;w0U5%SR?-GJFKR*&1c1Y3N8Vwvl?Q%U zN-uu!)aPJI(l5dCIrBkTj7HBFEMdc=uVSCE0tF{G#*wab_pXtw)LmElJ^;vG%64lj zca}^``}>^-{KaMLbM1yti+RFwXg&4~3g>R2iRkwrV?<^vw|0o&RzY}KQw z|8JlAO4FmIG~Ia#pde|Q$A8F%=ytxN23LNFX$$uT`>bS7Xj{SPEBI>To7ecxmFPr= z#mFDJ3ih9bl|g*NDmJmjrM8b?c+M!8S4Kz^$ zvO{_dU$w#Fdx!V>7_F>(6RnUSvT4J|Y=}nt;q~8m0bI9hk>Khrj4I~zG@3$ zDmecst5@aimSKL>$_C!S%%X!fzN=6nkKwl#VZ7xUHY2EES=?B}?OemIYhw7?wJfPl zLUZ&0GW29Wz0EUUh0{{`dxFFpdb8!{VLi2@W|1f+8MqkKnU6 zuzHnS)Q0QblMZUR7O%6BRntvgfJVtCz;A3|N!lgvVHJK3*}951e&FZqpf2teHCv~R zY-o6!x4q*qtugvYL$n}K%EC7jB<|H)RHFh+@6Ra*)1o;Nj`>>v#}TK}dCe1i(I&P| z7eEmLpGItEeY8dxDz|S26O24}jUV3(0^V>QGBo-EBUST_ApXr4Y+}oA;va!A6RS!v zycknZKoJsSrWE+Vuzs!r1OIFbi>cg)YJ*~zw~@sKUNPI}b=)Q&q4e4;=Nh7}_CvP}(MEo5E%KV&>DAhIs+Q3P@4<9s!3OA)djpQ!{PExhs- z+pG&vBY5^sq$kZ#v$x#Ew&@1uslh6{k&3HY6fn;2W<9j)fO{kY>4~AKhYY{odyVIP z4LRn8JuFu@;$^jjXAj$=du_TJ{B|!Jr+vGzLe2*613BBUTPZnbA4>L`re-zl$N0QF zRSjOA){vC^`9#I8kRA`qmQ37u?%em%z z7VAGRkRM$KBJs+5EKnCn#RLKl`W_7h$0`kt@@c5i7owqXUi}ywuRA+C-`fcGk5rl54%XT-WrbWgz-?>QTC^RkmHu=0vAWsIKhJ;~C7H!P__8}}Cb z_vYjydfQAMd5XpPzlrVZbug6(OUTX9R0tG0J6KSqW&eLD?dhFNV`Gi+(a4AH0E|ZqBi> znh{W#bfyvdT7+74dc)7$m}{1F*&+pL}8 zoZ!hY-o*10@Z_dNU2uBB5ch{j=N&IIQ{b*V((Q0&Xv}368+Re>>-qxR&Af>NQV6v9Ham7G7b_9{v(uExx#FQku@cv6=3@eGla`NfB8L>zk3B% z%bM$db?hzUrUYqa$nIqN-oMugysvWqZj5QUs6 z6K@sc$KY8R>bD)ISN&YC!^K?G7e!^-P%bEvc{Fyw`(O>9cbbKA_f=NCNoBSAGgRTP z?UknKF$-6T8Y-mF+4iM;`e|0rN`O8Ev~jIb(`}T#Tn$a6&}(XF6om@ZP=5+dLWoq| zg2M#tvuaugN*kbt5-F6WhU!tMqX=2id`$`_sfm>+6sLyn1Myu3HFS+amDSK03jNwn z>Es~_m52~VG@U|c)wItjbXX0opiq&_iL)Y66kLxWdND!oTBUpixRz2Dx_IuPYXc1| z&I*tl(i}YDNrUf9**uWk9BcGl915L2pzV7=CRhb2k94-&o^~6k>~T$0r==D(Wfm=? z-!TYTU5|<2X?=kSf`hBE8VaXS9W@k4pr6^@k+p}A(w~~Ft2X&FRU4u< z@*AkQORJ{QfV+N4R(f@w(yodSYS~6l_(Ua7OX)9 z4Qg5vg(|C|GZgx@E%hG#Jw%}r3OQ4BC1UvBU#<>+oE-yfr{`oS>osW5E^DD$@^vct znJoFuHBoZcyK2d6b5OFEC<(-|QpwqB!GTn8iW=%cp)qQxDTM~9p(#|Zry4R*nl()g zhEuSG2%!l&pW>=dAzUUbq4^Lm97~Egh@ja?CO7KGS*rCx8)f?GRbJP15kguKrJYmL zX!FH&L`{32(yU)m(3x`DEqa{p?eT-zXd_!~gI-~CahY|k%vuG@U4nC%vbGXg0r@Zj zV656m8WkKYLP(oWB(j&9Rv&3rS0`EP09ori?_|A1wO;sD>0}z!8ljfFPN6Dl=p2Q9 z!`XH*97ia0Lk-dS71wz+^e%;tiqL6X?zFdcsg(#6o!UC1&cmye=Tpk#OxcUARq&!^ zOVzGknFXLS1yJbDR2t8GQQiIt39cz>Gd-w^F=}Ww?;kSV%M22Z6 zO_Jd%?Qip zNOMIfIRacY=nF3iVky&KF# zqE)p5baXr&HYF@~P-QErh)=LnX9I38SlnQX;_BQZ#kTl_{qOkk>X({e7l^QKA7~Xdj(ib$>2#aY44r3lJ%PxQej)~jAJ=-c+WseI8ZeIlBQGO&0$Nl`h>Bl8 zN=Xm5t*jyu{mrb~9{0=&KrCVaLVW>OWV5jceCtoFR;`sUpaFW`%(v68A(G$t35Me1 zeQ)r{J1}HV$HxnISoh!^<8NT>6su5a{&-fDjzr6(DhAUMH-nReA zJG{%!%v3j2l&4Jl;(eeZk=?a1{sFiD%%WSiIV}|$p`JXb`@3jyAMukKpV6@g*iI>s z`lP(J_e7UazXSZu1I9#yc4)B&?-oD5A1@g1PamPbRU;(3nBV-s&{lUBt8P>OU)Us# z_M7XW{QJ9b-mHd?VXF-Fv?B%<VJx) zA@|u8Z45p>`Kk6(eA%yTy!AI1W!x1=;x}$M-U%ltcpK-2LZNW!c))Dwn~STU+Iy}AsZ=cvb8KBkc(okS^032w(~RkTBw zvby(9yUj=a#=2OWDm7J7lMndZ?>OT+JujXKq1{j5OmDjWaGQ93-kf|pcS4r^u*H7B zV*h1Js%Y)7$MEUZP?)H5`Zb25&1q8k0I5LB{*a(WCA$VNJm)wU3~ z3DAyTHhIR}9;o;o;6jF0l`jx|8EDE@YCrF)7lH!?sXI)fiepz~6}Ha4HJtD7Q^Ruj ztH>It2+h!iU{Zb+N8uwlAuwfFL{I>EDx~t%4aNv-HWb`UQx5(vH07a?J|rz3zB-n+ z`181#^q2*rs{x0S>h599*265?BYF@)$y?YxbS_o9_qXNNa9@>*(|l(!BF|;pp0i-VVPIv?4+asX}aAk#f*p}WT41_l)6ozh2-5*GiD!LsJ>aJop zC+YT?xc8sBg8qufhDT(GcWce<=s`MLf8@_}w6NrN@YCDwq1zV6^MRK9J)^Rcf7aWQ zF_;25fZ#Y-;W1n(ChSAIfjs-A@CdF=45^c8whyHDk6OU87))z%Z<9)XKf#tDW_heB zTOW^8;h?wrcuYBdF@TFrMDq3VD@@Dix6ul5h8si4FJ4Lr?@1)*;0XO#{BO-PCF=LM zdgvR;7jLO^G)9CLwJI#WS^~?q5;7?BXtcU08#G z))?koL%k<39{S^7jliT81n@b7jZLv8Hw`wnv?_q%B{{O1XwIcOr+Ctghkbz11Bi6{ zuQcC5$W!tjZCexM000jnP^LJS5;lc8)h1Vyqo;0+47B zXEUXu@;myM3+dIDSUz9~9=YF)s7!dE;PODMe>hA-N*8$v5Ud+yrn!9z(H_Hvv!QYzp z=KS3n$N;GYg;S2WpBE803`R4ex4nZOFCw4j)KGYbMx?BM6?uuI<#c^+sq4ODq0iPU6gFwv?)!#7(6?zQyDHV~#6!o?@M)C(k zjrCeS67#XRfJtVDR`5uSDEYXwH$$tVLO*_w#Uo-T75 zccjC7c^XV4UcS`OZ4-I?r(wn<|EYn(ORFm`p&<%|1Zs@#``Aan0PF~U@t>dDNEyfk zDl*^~4eNs;4VH6a^dX(nL6f`n#-AsK;ZOfuy6+{{Y!88_)qo!4Uy&9_fTj{I z+0B8t_b%AHmj)NtllG#kcEqx9Ti?Nz9y{70+GALFQbB_j;MJ5&G$G(&S06d73Y;N@ zyt0LgxZc%P!kz0qmDOJoAdu4h?Cv=jj!ex3kYU_(E$JXlr(~zAm9=)$)nX)`)B#or zgw)%5!R$uP<4zJHKMaCx8$^iHB_5>JS_(BaKg`o)NjBA62? zCp=a`{L5&ta9v}fCGAsFdZi2G(rnNQ!!kf5=i*VbCim{%s>UYzsKaOut7Tst_ zVh1_-i)%_ifco({qm1>e4b@u8D#>l-Q^9Gq0%-EW;O`!Dz}wH9f11X}EcW=CpZ(p@vgIguaf9@H|r z2cXXTQFHgSS-<^`MUw+r;Ro}*b2QJ1{I^-gD4b}VPG~5xHCFXnKaOYK$<-I zmu_DXm?M5S1m@zGpe7Q4!4I5_un^|>_%TL9P@br*ci>8qhYy)=ti!_#B10>yY_@c< zF(!}%pJ3$Vg=>v5)@7(lNOKG12fVQ5hit{1-wv$kp%|rGg_8CPwo4$0fs@%Gx5x_6 zlu~6nae4@Zd6+TTg8V=Rd0DZMYw(d5x0 zrpa|VV@O$(bkrBqDARw9Y0fc_@1{n2FJMXk4rD8TDxSK*jVx0WJ%$z(A(1U3m}Hw& zeMkl<#*6V~Sk_sP*;r~nq;sNqZ)Y?5?YEamBaH~(Jt{mn6JuCG~XzyB>Pg5Xf4$n5TdW_a2iQ<(K_+G22~-1tTq+~Q`yW|n~*u3sZ?TfPZj zavyJWI4pOm-rxWPfxvV~3+A|!gHRy8CUOuBmIacLLpk3s2Hf5o)*c{yuxsf!7>cgq z?4WzqGk$~o+$)~J=XUxt5`RP)P*vBeLfD@^LQF|8;@qFeH1}sp9w^*xP^Ehf!tOl$ zkuu43vBNsy7rN?akB3ix(-_eko3J3T$NntaK(NAL|1zQKM9C_JRrGMSj7J5)ev<9- zU&h?Fv^Xc?@fiZ`kElv~x-~AwN{fSLti(u2M_>34lck6k@d%}Dqo}09r2Q~E%&T$P zQ{jrkB8}}7Mi8%0n3MPAMyBaEMpyp~SLXlfKk1TwW6h+y-{xKFQ*s>lDN1Q)4RU5V zf-Fv5kvSfui>A}E7k4IMt=CP3yjNKWMHdIq1yctt`9*;c0lD>g<6{wevfrL0RxJ^zw&d98d6EPmy-5i;T_>-QPll1KZIF95d+|`Bj!2@fW+}n~; zx07m^zJSyt_Y!E&xFCS=(9f^CGrA2ZQ!Hc$l8A&Dn|v;lgiyVW2!Wgk`+4GhSRB_6 z)8fEqrX#bbDOTwWaldqACPWsan%j!B)If9cIlXNP8dYoY7*_jKP_FzF9)5b9(U{c? z+4Hs^BH;A4dI->}6JkzsCH?FWL^$T}L!$ZKMSY$>rQ264yc}-T0KzeU7bOd|ji==p z!>oar)pBA1T>>@rClU)l$rQ2RD}@)~^}!XUwiG}jWCE!{dc}fZv%?JKVZY!9B&=hG z7Mn()1^69^QmL_2s2{~_nn6-L|31f9+uA}IgPV9w;E=RVOosK-lD|t47(|Uz4kLoR z2o$koo;++y?QIaf)Z1P}DFUY-R8@3d$$>#irEc0!!s4)VWtg{h0tP93*m#JGK0w?! zD1o>NsrPSzpw~NL#Gnp|ek*VkjK$cyPms*)o%Oceo$Y~6d$R>P2?ThEd(NVb_lI~&*s1;guB~b!DB~rSZioR!}?=()9XZOxQmUPE94gCV0G7=vVBG zrH3CD0#;ct&Avy^U)XF2fY_T_*FY0x{Ky zl7;v!C-7F3ciaDs!6_3WE8(!k5o&RCgYvgn5<&afq(U(Vy!2CJEWbX%XzJRvs-K@p zbN2+~-$IL~6Xf4g^Su-1qLO5@^W{>r@%WtRq&Wli!Dgo}4`)hX3128zj(wpQLHH!TE^)yBPwJP#265@9cAlFoQ6ivW%fa>alwff-h!TR7QWA(uU_~TE<*B>qy|RKR2N^(9sl(X_fMBgX;76KdEay21b!Z$#o=2}Bi*p=A zKx>(JuiFhPUcQyYdyB&g3Fgi&l3>(zMH0TU<{;!-?9bq;f3%*a59tb10D!XCy8;%X zNA|Af4Ev;dy~HpQoPV{}c&{0-Q~4sDq;MO5hG$-(`!VvjApUK6b{CN)$7-!YowRuf zn)NGo6Lm_{FWjY$Rf!fvt}`f18)94dnAavpek^R0CqEXqS%43HBWYOEH{xeIg#>s1 z>nSnQ^a3+oGi&@EA+y*^EOyub4{2H2-_SCe-cdA^4rn7^L0|(pTP+x+Ldyg{A%Ye) z^2CUO)43NiY{i?wcs%L)^b`2M5Ju&l`b~vqEIi{6b9G60J<3iuCqIJffl&4$k|n6$ z^Pqmm1of-oL;WCi;1ImAW=g0+VeUkQ8g4BT)NssSP(#We36f~-QXPWU_&&5`60r|SyOri({OJ{oKm8Ix2>+3Q zx%IcPP;Qhohc4(NAylA{X8SR7(Tz|?mq4@TtXZ>L%;_Dgeq3cV)RUU*OHDrWA2lgf zxH&mqKWkwr$sgDaB;ikt%70Hf+m$1o@AsiSJK{R_gnwSc{Aj0;=)WPQSvW;aYnKR+ zN*-K|tNbG=1&aQcq|~fhN@$CSMj}@)udMwB&o9aj3A0H}Ie3oAAg*h@Nq<3MGwo9) zg@xUug`}`%d*{?l`xtY&{l)))wtA)*qx8OL;hubxzp~zF(7em%uQ!HUmy)j^G?I8g zjJy5l{JG)km!x%IPl71JN~~kEv-)l!T98(~0XiBPTb3aKs`?&9V?rNEkaW%<0h!{& zGKVxshGhzibz=X9g#1M5+JoBp%{*gtmtM%C@DSufK(Y~=P~j9#@*i|oFp@0$72oYA zfC@7Qjeo2#dbHahBp1Eyu%4th+%>Z&iV%dX<*w3h0F|`!u7obMnMJl}U$uuUk&U+Y$MGo_&LQsSLlj#^0D^@?yO>Sa2 z75h1Cr~^%bBNk*O-^*=WPS^Qrn^Z8mqB3+!wV?k%W+7{q{a#i9HsoX*dfQ;pVhPPB z>>oQlJsqq6Ak`*Azv)X-Z7j}Dq)KyFHF8jc>TcOIVQlvpdMQnwLSKBE{GOUbi?F^Z zEn5Bb1&hEM#GRe`x_J_9V9kFGUzzj>jsz^r(ZTGezFzAV#Vx{^B%gYj>}OozL?hu&D~@Q z8L`=PRreyME3i>(!*WhG+E;EXbO8%%QaR+|V^ z>K4tj#qbD#M=Ze22rwu7u|+TiXqsNwj(J-vm`xBx3iyb{2&^HtKnPhd8i@jlX?$Q! z0#3_4U}c`&VdQL$>~chD;gS$uE|1lc+%-@?n~vGLKM9bDQ2O@F0o+-RZ2=@srR94d z|0}ptU;s2}j>Q3#!%}oB){Qkor&Ij40vu1;4*F|xR07{fjlv%@!=GM{;ZMJAf^#jP z-jGL49(`0Jua6vr(@ohtvA`JHgG5vO2l^tFMkpbIT9c&ZHD~XIgE*K=Ddj`Aqz3sv z+CLHFdM9Tcgf|ucPcuc*PKu-~stpo*ok6Wk zeV|i%H&rr~g5@_?B58A_U88Mc&jdOl4WNDD|6=E)ZY7CbV&7!YGEA13ax){}lNu;9g7*$8%z{`L9q=2n_0u zN@Guez`Y|tR-)*M_$31dWg`2+pZ4w^r_@q(*{ht9y+Rm1EY5*scE{YR?^j*gKspx= zDPlX%f=P#9a2QdvntOrU%S{!&!ft$w?;90fLtg={_yaqvf#tUYTZr;a%wb$L>R2V56kTdKXCngoH*VzFUKQcfd~;~G-*uEwEFNgu`?`~ z8rUBZF!YVyL?zQ4;kaDM@zg&Mv22l(wvX2eOI!Z#C?bC(Jzx*HjOy#_rjxPlrk59z z54Okf(|W-Rc`b*rZa7@$J`rRB`_UG~Fbt2a$B`BT2P!HZuW(XXdZs9y+m6q57^C_H z0zf#W3ZgLK-z9A=GxiELp~u{b&30wu*y32NBVw8V2WTb4B(Zs{BO(bAJGP{n+&uo0 zs3Y}vGub+7|BVZWAckH43KPo_!w-LxnD{@Tf|vlvl!DmEjXR*SXbsjtU>?XeVK5Z_ zSagl>oIoV=65+o{r})1&r8OxPWkK>mBP97(*a4|F#2|>y#U|YaeM|Qf#I4>mjJFSQ z8wS&)CYO9@)qUewB5l$9cc(GNWMBQi+!T&_0=5ecp=LkA-B^LZDnlev94v-_P#@Y9 zR4I$2j@daiDifYSJr!vL)@Z-Ag43r6^^ZTCZ|ptbAIM}@azp*B-=N85+J})gHTJ(X zKpD#s$tTmHMJbCj%id6+Azzn+2T90-!3txc5QD*G@r1jy)q<9q9i(rIX+}4_Y*{hn zmLrKr@0BNs!XE2G5{dX_*?&f*SlKy|!s(5C9dpQCls{7$chiu4YB=DK6qFD_5Ilvv zs&*!z9jOP@14%;_4WXjtYS1T&z|6{P00aCtTnXwk$aP|?t)WwH|h%4#f*E1YV z!c5lPsaqjn#CTIta#2hrLws$%@bQGOFi?45W3FiwJb$&RW+!HlpZ&M7d96ZZ7Waiu z#)$ZmXZ$`*;w%Xd~ng+1No!PXW3wg>yW7j5yh!g$C z{xA|TOzzq6m{e6BiXfb&Z0^&1%|fH0DltAV?|trYerTa_a2fFUlAd*x~h;O$&A2&VE*$W?9XQ=`%V-#vL_5&2Y$^>tAL#mYe|d98bxI*ElLoq+ET_J+ z02T?NzEX&5!1I1^ETt`YLT^P%`@?HMunG$ThVlXq2NNJ$kW2203TIzf5NL1q59$fc zmY?3X2Y*T2f(1nxS)qPQi&9U=itCC7zFN`17Yhv>K&UDb1ie3UnH+JeLj@pP0Fc|+ zr|}bN<7lWC%?oSf`c1kUd#ZnIZO*6re=CBD7 z(5_TfR1#Yfyw_G$R7|4aRv!PBG2zj6cq{{=F6Fqg;%f7^S_-XGK^-x2t`~0vVBF-+ z9C_~uIUAaDHf2H&h0JIGeA(y+DJWE$SVk}0NmtSJ@UQqX&6ChIyk<_-1(D9lmJ=40 zW)lTI$>u4YxH+|&L-7EMpfLlgJcKE|P~-PFk;yVo#EKiUj~+w86)lb|Q2Pv_Jd;qV zu5KY%Mz@Oe5iBj52^B@k## zj>{gH09M@T8*FE2G3Q?gwH@FWe* zS`HyAH9#VrP-`SkXF@h0+%6Gbn)C&D(Q!C8@iR+}?Z@iqz#SaU>cSDOddPY>!aaZ^ z92^usIt3TC0L_<}oOYG;Ge;vramG@k$sO-W%4c6~ zS_WL96B5Eh3Od9}gdN&XcfpO7{PD~PN|TJrw?Wj2ERkQ{i#vSX^)pc$d7kMDx?q5* z?gdmB`9~>;B3$&|pavmXOeWNc)NjfYtenuAYDI!z>B-wfcyw-SIZ8kj*(#*6*WZ@h zyfW;NlA#JG{sY8NsVlM~uV6$Hhk(l#gaQPmc&GydOo9?Q?h8)9*S?1>DNz<1MNZY- zi?AS5f#y-b+^Z-Z}`!#HMWZAE(%-D-isVFWGD!_%d zyE*2y61-Ys)hJAXidK=x=tZk)q_?X0LumB?dv}jOs~>4gPeBoNVf+cbmZ;c8h#~Gi zoAFgP;f&K)K%_H`7$Mi4ZNM^ANvNpe7$K0l1@=xw>>|Vxn_q<63YNVg1xA5gcZuv! z)$v{yjZw!e-%;#);YE_QhkV66{&Ds+(OR5yFJ|a zfiX^X6I7ZL8%54HWSzfb@O?J3;3h~{Y28ulB?0^`;0P@t`lo{I#g#e)jQw_54}_$B zpdR%Y%97YM;_E*!b{;i^oLKB`^pHf%Rqip!V^LlEpe>NalO{rK!rhmKO`cm(S8o|r zTP^0n-2@JPDlBvw2qtBo_Mx$UOR?sa6{pr%5~*f&uLD8$=@y|>FMqDV>8UY)W2Af( zhxdx8Bux;WoINkOdmaL2&=ZpVd?ig{;aT?5zju%U+a@lTCq_3Du7cuFK_f_vR4Zr( zY?DYvpq#i#*-=c2o3gkfPW~s-WFxW~EHvd|p78-KR@su7C#bX85n^^&AXP3ly}{3{ zG`7(!;5Ann>zju8?8D#!0yt~X#A&8Nvb<-$cb>-f4L)df zRhc(mi1g;ODVtmAA>_>$vH-B4ONbRCkshLW^SM`5Jk1jIk+JSbA2d>3Qv~M#WfKAe zs1Xq_p+DyK71WCsnPhx{3!!D(ufc&YMObQpJ<^HqkbdSeoH$4$@4b6h^m(uGt!Rwr zOoEU0GE9LOwFUA+P6}e=R9TYyz_adol+Lo>q<#<>7Wl?%PMGcAk#})6i7fw-=xTOC z@Pa_uFA;ypImT)Z<`;CPfcoVG+0OCgJR&K5mi-rty$-djVE5k(wtyMn;Xfg=kwmCs zcb3CsBF(xGajwIs%ge7ShEpQRud(>0Hdg`&MQx#x_5%% zKIeQ6dqdMBQANyzS3|{nLgLY>{FkviR0&T`Cwjgka*8G3bJ`}$J_2qcvT^uPbb;zF z*Pg}RB{j?bvK$1Mg6v&-k?AEv^yP1KEZqBU?b4h6_83NgpUS1bOKj+kd(a(XL$HAJ zHlG;l*C8UV4tYs6AC^juF5@#lF*g0bCM(5wB9W^5d$RHmKExHrx&m1dV=9|ahmz)# zkU||zqG)+E&r(YTg8ZYB+FUM>JPe!)TCMMP}=){l6Uh7X=*3=aS!$LGQ|I7>`aRR90bgBVIK zu^N^35Hqr1uf(E(QXol@I9{!Yuu>HN5}mCeidUasCdi`z$>AKi8fV&FxJ}foaTC%h zH0lMYKhlTMkxFE0d^&}dW&h+qd(bT*9NtoP^x+b&wS>PzXj!fBD?V(|>{WLr$-o}@ zPxMbMotfNLKdX^gCXxn{s3IgO4Z1?&*8dq5h|+ORQbcj)5WSa@fv@*m-Endc|F0G@hx=S~xQ{YP(iCZF?pxP+PCtV| zgZIGTMHf35BKHE)82TX*CWNH3WT?fxK7jz*9d}l2JaycF_xN@+MFx*SgLok=&M^S> zF#p+rA)w@!AL)fFGP^okt;<(We^U{ceghvfEF${LOy;0Z7vA;6dXzg0g6t$b!1y3C&mc1gh*P$P zm(tZhJO22w!evtjAN&YuSPngja{GwJf^!_fFa5(1;GSOu@G;Ni!iU0&@eD0xg%yC< zEsXT8cNK)EqNHX~W^>V%w&rRZWL`&g>M>3N9ZROj#z-3Pfp;LjGf|QmE2ICwht%0uWU40x|4!t!4YwBAj3g6Wt@Fz2AVEU z0SPfEnA(9@lPE};$MEYc+PXj(#H)Z>$+X`$H#)+56&fQs-(>7*&88ChonkegdD7<8 ztlVi%?_@#BWPED8m={0FIJfQ7BIhEg&H{2dsZwx;_tG1e(IbB3N=jYK(Fx5>Pd z%OubT@|-Qk$WhsJ!4+}JXVH{U*f0nZjCtZ34`m&JK~Ki^8J?|~f(+P83l#Rwq`OJ` zlWruP#vQjacNF6paVWRxb4<;MZ|5PS*r@{V%HyS5jJ32qb``{R-_zi z6b3PI1Bv}M;99!9*yE0Y8b$M%DwIK(VIijZ`(*>G#4ZX*nSd4)DF?O!+#f^L;q)g_ z@6Bkz{T%+Nj;J&hvBHt#85~rF8>`HNCtm?LScs+bfDS34_tvy{L&bakeElLjRqKch+NGe z))|N+9EE|+_A{=2p{7&$<}Z!Wy{`l+zzN94pg48u2x2XoGnV{akl0o$o03#ZRv`9q zeQp5z=;w+|Wb^GG`HbZ?nkAT>(6%ths=5XjcH$6(gRZ%eQXa|^ld+gbzgr`Y_jx?F zCV%qX8sR+WL&Iu5b%(K&<`uquhp|;-tR#q)0Yv1nAD^2c$a*RjCbCYvsuUxLSZrr= zW1-OyQtM?BQ$cQ!iO75=?^2P0@MMS;W=^N`#kSA?F25 zaZ@ifL&On8PfpDP`UZ#ZC`pZ*g0f`~eV+4`;h~x!3a-x$|lB%T1Aa;%$aNy~q z)EbhSEn1=)LsDVSK`Zi`NT$R+e9RLVi4XNOAgJ*&e|}hJ3Lox8s{-2QmTO;;2A~WS zU96nxZ0YW1Pj9i7<^q*>!uMuDNQFhyOMl6wAYm$yx7}EiSzj<4+q*E#nLR~%TPMEh zD`Oigtpp+tg6Kdh$wL@uDo8mY6|P9i#4#!7Jh5h6zk~z;pvCg~7c`znSwPAtE8J{O z;b5VAD>mQ1z!C@Mvl?D2pbizH9mG&MD2mJE(2k5zKI<(U7+fD z`pFbp#h4}0t8g*IKJW!qOs68QKJU^d ze9Fy9G_ry|N|eA_gz$uQm7@_Dj9ol&b7sG6g6qG#Ia6>xvR4pfY1Bnrd?wdGQPK@} z5MprTAZK4hlGQBooV`I4{J2Bjt^QN^%;g|DBgu{D2L?ea1czauU6&NIS5s+Vi%}UIGIH0f;aQ?nb?*#gVCb;C|*N=H8id6uZ#413bfoYjP5h~89yja zjkivf3Ck-c3`M+pa}I8g?!EDr$2D&AEvY8TYq7H_Ncyb2N#}72MpBR{tg91(fW#~- zZs~2Ys%$V(##=MJ2|wKsAV$iB>v+FIf__TI>z)@~(oz04)Iew@$OFz4*GUl{?XBk{ zv&DU{ei5eqCbB*F{0`QrbnuGVdBGmZb#-q#LebUZ!7J(W_|}Gs_EVnxJ_%L&`KY z#Y^^VlwhUet^I$`JP+$)^}g@t|NH;_6#LA~nKNh3oH=u5=FCh|O^2Fz6)3ev=Rs?o z7BCWEXez@AkD?5Miedwy$OKiCTup%lHIPGrf@?lO&`oORTXFIi43jtHw+|Wc(w8}~ zWm)s9F7;Yyeqr;8u&eC#Bj&`QRhREKAV0l$QMvMZMRQzv9rl%Zu11)cV`Q%%HSZPP zdCJJLzcyQhTjwsaqOZ+E*dMzjs{s3)oxWmjqZ>2>N~pknoi)qa=@-bpT`NWQ^5ZFU zZC<%>CYqay3#e~SH+tpMjnp_0I@i}$*9fp8#7r*j*yu zrP=Zzhxc`eGlrw*rx{t%TB&o(v}v5~5RV&{*^E_ExKB$Y>|ujfNfuVJN;0)LG8LnO z9-Qa%9kw_vpsP?g)yQtIlA?r{@DaIM3XT}{No@nWkE9k}&(-Xq>fLfhcK}4zYDp4I z_{dw0JXhA&GIMZb!~>XR!N6=5o0iRh2u-7P#wElX z&YT2pZjh29AEhX4!F7Y9W`;c>!#>AXB`pmgGd4)ALrn_E>~lOp(VBNYLL;!C&m>F8 z-icHmUDxIZS<^#MHX;U6<@!`Iv#ie~voLj{k>!3S^%0`+vHdeC-8*H8j~8pY5wcr7 zfoQ^Y>wl6KjO7ZCu72L|VJ+Pr+OSAaRik$WEds0>K@Y`$b=TXAJ+V=WX}?=W*TxlQ zKYwBHxS^dqhd`Fj=76=rmm1krrRVX>ZSX^ayCh(6`Q5DLe+R9i{C6U@8t1Dn5QMpBiM*7QfSB8 zrU)i{^g1LxBn-eD`t?InFQI50?(;t+jS;N)=yq5d>#Z$@ zP`rH@y6D|(Binaait=8215NBaEIr|!^$HTRjzIPNG}g%Sk4UYJ>sMivBqIllNL6z6 zb%1U-BBgnMWC!TABfv8dppjomp~hB?Ky3tS`w9THV~i~4D=Anwj*nNqlEPZPKE^}F zewM$#2GFvvr0yZNG_sOzoSxG%ev8xvL#Z&*rVW6^=K%gqtd}V?{`71 z1=N0l!3b{(l_E$=KnpPSGii@P)BPW2$TU8OWH zZ=&1e|@iK|;QL*vKBOlBR?Q*ZNX*aji}RY4)E$ zSUz#Gx=MOBrmft=WKc?IYQ&r!7(JM4BNYZ&xZP#47U$&M{qK6oUL_U`%tiQyS-529o*3 zIv^mH2uQ$3GJTlvVWSU}jurAaZ>z0%D$Wb_nM0AOYJ&tepeF+uqZ=*2XJI+Ww||B` zJ7iy~NrSm!Hg-#%u-nY`EGwnsV*FG%Hc%0U)MWa=ea@*^koUIY7bo;4O~N3Fg(eik z-a0A8?p}slURj^Ca7K1*GNY1;Y2F3(2b$@Q?-@e zFH!KGZiu8H64lfe2&(Fve%QyWC13VrxfCi~8D?bj%cXY0h84B!lX59M@TFnkpbyrV zadj%!(N6>9Y`N6md*M7N$=C`hvRwzj@DZ2{x7mZ-UCXr`ou;^HamX&rInh|Iq0p5T zlGVC(sE4lmO};66bDdH=RtL~bn(ht+(8Q(m^>?$+GE2AgCw4gaHE(fbC2X4Otn;-DkGq;1LW zzks871(QE-(*cE3DOjkln+-=OvTgsQDJV+#Nj9%Fu=e|ew_{ zNVns-=51A8{gC%kF|3wv9OxpKr1+Sn=}PTg(RO@2+8~ZF0R$3PNa@pv-^28KVTBJ$ zH?mDXN<(9B*oaGyrE&Rb$U`OKO(S=uf3q3c&exh&YT>WC<#aruxR;zU>k9RLwK9JWFtSgV zO4e5UiyJAstq2mH(@ctsoHGD;3g%*_MK?d2TtO2l!j2WhG01LyU25&$qah{#3!xnj_zma|ay0k^u+0V#c`yZ);P>hc+|3@kgxZBr* zL2TL^QWs%cUn4tHW9SgE0BO9=FXF?q^UMIm)i)%u+xt&>*7Fep`)4K7Zs9$VLam>g zD@C@f>%%ca@mZn&8 z#1mX@AhoA$PBpSa4yjYX3rGa%C}S3){1;2zy_ZeFV0(U#6v(m{OU9^<90Jof8gcO) zDoS;ax_=hbvL%b9R>HMjM)u)ibikAN*uPkc>b#{F5JQw~?(wQ7$rY53SgxoNuV>hQ zlPkXSM(GW`tN?iWu zjY@oc{VK>R!-xE;6xC)q0l{E6>tU%p{ZgY+9)GEp#g|}qm5fZE9F&6n-H3w_Go=Jt z$$*c=C6X9X(?h9UCg@VshN>y5dKlSPC6XoPV+CUNX^#@^^Ba};Jc4Y?^B7{rAlLcl zq2W#QYng7Y6eBc2Ov+rTqjyC%!VtKI?*Jd!jm3HjQWB*1Y z59+RHWbc-Q@~sCArhs$Z8gd=)W@KF#N&O;w9J_yJqfWY3pTOK^kB^|!(wD-gfMS7hWS* z(9kYM*7FA`)VmX6Sn*k@Q;R#D8!g#g=@8Ia*xK31nx2yigpT-doRdBiUg%_Gy{o06 z{&AgDR3^l{Q!NGg`yz&`Q&*Cal~+rF-f|LmP>BC zc4dRnuAmhEgd+cmgp}DOMqq z@Nv};-%@CekEcr|YrCJGfvgf1#lAdAL26jV=s$>{TXV9?QYkHRYDZpgOu67T^D-b& zO|0Ic?n66bjrLuzrjr7KJvUeG2qZ(5A~_1l*+>o+D7m09D{2#stmIuOP&kPX;z{@I ziH&*kA%)$__QByls(+Qj?b=~U;gxr=LhrIg1 z4ZecUSHZshN)h!V_$52<+l7jqch4xttXRfu7K^{SEm-vku#{h9J*vz-1@nGy_F|Q} zqvmn;X_eWmNoC(unUl2{0vp;fswFdhV-D0l;KLHH2DOZiTf}|9oCa(Q==A+HI{jdS z&X5^`=O=vk_wz!mm-9U~;~R6w=11CdM!>O%efW*JYY@FwY@@3%?HtsHK*QM0Z_M4Y zGaXjlz1>A5phwKJ=FqJyb7<`{m3GeZ5zRe|dh=S~lpP{)TTmr_w)#?{y)RaB%IODJ zBCh0HhgjSGCLXQ*Ej)*79>*ngb~r@i9=CMIC$u4*frA*B(bC0knj6X*AG}!dA(L3* z<~PQ{Q7IvP{yr*;7RN`a1>$OGDmNqL$A*%0h2#%|Q>Gkox}z)+__u$}={g5&sWbBL z3cAAi0OGM3C`eDM3-CCjN4butE?mb+R`OsUMwzo?O#79HK?KnSSb6KkCg3C` zTgvacqBbatRx(|?b%n11DXPhG*0+veUmrJ*@3j;!bJOlkDG`HR)A#8Y-V(F}3&*dk zgm&Aj7n2v$e{Q$9KupvyI66nOnctZ+%rgM>Ik6d+LgS98ns^+%BLdK#IF^8>V&}dy zhXxR%Xi&|Tld61}&k3_N8`e?S#3t(6pVAJ$}L*-KWED z8nbJ5cAs)=C`)=GqVPlac4-OuXKyj?4+NeyyUel3y^e z0cSzt=bJ9FX=lwtg}lK&to*FGb>er_&B>{)oIc2fD9}m@5szD6p|PoGGvfKkK@6*& z2qWhlo@9KR^*m>OSrg3mo-=oCe%GQZq28=nwRy0nkd3M~i-8fu`r=u*BC;FHn&dsA4;*~qIkMjMJne64C8SipewM^(h8OS5F)uWQ|Zkn)UwOf=7&R8;&`CS zA*{%sgTIEYcu;E1Og8eoIi-UuXrLJ)i)*5A1LiL3Otf(C{1-l4K^>5!X2qc}IcKXk z+jibOLUVw%xL^(uHkgbo?t(eWaJG#4iQ+Ou#}p5+hcB30kF;?AF;1!4!;!WDm>w@||6|BSKS(K`1P9zWr{iEIZiu0(vKOUF~^krWF`9OH%6J}g)L;1;Vg!_b( zpXXQTsH6keLicBYox1^$Q5?NB3TBN1{C@M#*y1`UWZ-!(VP}Nk%pAw2 z9bYIvuxmH^QaV3#^ioZh;4S|T8lKrI~cqxp;!#k@btn-a0)nlw#IYh?AU>@ zVD{T(bD-b#Ju1#qKFsiw`83WS{`!;oT?o;uviW&U4r}f-=L&Cc@MiO!=9b!@v}}bF z{pQC5KJ1Xw948zMF|zAU^IJk3K34o}j$_Sh%u$aFe)_tryPzxTg>uO?*~CXAIujU@ zk@Dv=571JznR{%W3FZQ?ZViU1QzVzX?onK}6|@4W9=-9zdT&-xV;+z|H>i@DKS{r+ zsZo$<gByqs!>2Kk9Z$*14oZFO8ilGe0Rj}!`ibJiD624$MSf2dCk=V^-6&v3T%M9I)_vC zz5;n3KSY@dcxyCwTW#Z1o+Hh z8mj7{g)c+@BXE-P`EkMA!TX%NxCZTkloFKhC4X9^z?BnRF0~nLqfU2g*erSMT;NXj z#GOeP0M@SoOfA!gDY`gbiT9{Q%?hO!<oBZbF=DdxC;HFhb>`;GJuBDJ*H{*D+uThf;PF1C_G>;>0hZqZ`T8cP{ay2SLI)os ztG^4A7)@ZX}nWgo1v9{ip!%aKsAj0Uv~#<5cE(GI9)@!aBu8w*Qh=0V?QuASkmv|4> z7UGmzu-2C(j}EWLe;ZOO1YaOiDpq$Pq? z1Xv=pL(*7jq@_pm9J~$Bi`~xJw6Jt-Rt*GpfKOtHtu52F&NTM3!4j=a@n;63CCjhJ zbrpPtflV`72I`jKkOwzjX_IZMAFI^ITiB>p7GrZ&p)X$g3%jbbbdMW*P0jivk*}zv za&YpVO6mj%XRseJDPDWGIZF+(1oo!;3~@Y3zWu7YYi_0Si%E|kMyoRhcl#FfTJTj zA7E(}Z5yUDWIe7kjGBoC?d`k`yScazocYj@UT{j{4SAkzGguO|&jhdtCWssQ;n8ET5B^UxdSDOD_UCm`?dK^1^GUJ4Q*+8T>FSGTNiAJ6Rs@hLf1v} z8Z|`gyjc((aGK0!EP24kcrdo&Nyy@0o@5kH&~Ky8mtn8wcRW|oK_A!-xN0A^R}e-_ zyysJgqTmWngdeB$3i5hgWTm#?COrMZ2Cu{~{cA7>XhHizk{pC*a|SvBf8=@jSNtt_EhT{4&Dh=eO@uIFh^ zb1)sR`s$WdkR=aDW3c6Q%`Wy)u%)dq)O1DZ$<&pd4>Em-rM))Qn*^?)xm!XsEKQCJ zVLyggdbe@asHpd0SAsBBlAIWnX@Xm1SY{~t%s#CmamU!tp_V>=H-A>Me%*v6hgrI7 zZCVx)Zt2tpV(aDHgr%p%a@^41o3^jNUW4lzLhxbIr0s8lp5^6S#$E}x#7C0ObdDp~ z)9Lmx3M@d#8O}M7g@;=@!><|NE$F+Ow#u6ohg+nkdX(B8^+RFk9iLi9lekgDP4J1j<8Nk7(D$a0$y%AyQ5M6>U#3kvMpYAE9 z`J{fq2uhLnw5w%TA}mi)3qj@d(v~Oi7V;7LEt4ZHDFh(4wiGoZ>k>~rd286G ztt|tB>HUT@KAphwVTS!O?zwUWeeffD+GL5;zV;*QV6voYZE862M^<98EXi9O3(cMl z5|mLPkAnAxqZ|sxQYs&R#!>LzfHRDO36x5emitifB?_WiUUCuz^C?I*l%o-pz1kq| z-Z)~29g6TIg5emnfZ<=nk83f?0z`vhy|?F|+VD9 z7270elUXcPv~+L9BM?G7B8SsYA+GOxO|-OWl|{hrNSgvOh#eIzvBE1eFS47WWdwWg ztJtWNI?|5nR6E15n){5CRA4q0GEwerS7*kn%=Bi@mUZeel4aJXSz6XJuL7Q&LaXe0Nu@q7oT&dRr_xd^Gn=`agKcYP z>BvSDN)e%SeqFimaRUh8p)4A*%b7{C3=J$NLJhss`5{8(J4IovJ|VU#>yu;&W;-NH zb1sZ(-Pke760Uv!B)cM6hAX7sfoFLG?>$LJBM;42NzV!Wd(!`|kxeY4y=6?}mOj+p zQp8J3xdK($P}*N5IQ2!fz%^Jv{=byq(Z^YOg2j%;;dg($SGZ?Y z(MrSSsU?q~I~yu~^=%|))O`XmrgO>Kt?=#0rGG?bo~t4|3S|F9laGAh|5=kyRES%8 z;U9^U=cvS;feHOz5LePkC9cyy%436cW|MSQHiU90RLx~os#fH4@;!^8_rvu4-^lR( z&Xz2t{n}LDtJPnHXU;Qf#WupA_z%LvyY%0vzvW-SlqqZr1l#pmcD9@4VKzJ2GEQOY z#IyH`zfXL2(d!V>u}n7SjyB2gy~gvSX#PQ46@2)#PfpVkOTOWN$c6O`UOr>jap z%J?()2>5ILx6D*&NDlaq^$&CF8x-ZC{=YeBVBdDLyx2%*jP8#4K*T`<&8reH_yu4I z&J`p8bWwN9WTk0rr~VyjZ{(e}uFlIdi- z{Vb02ytdzfUBMG zGG399CEwjE_&yoAJWVb2L6|51g^awGrgl8*zw3A;KiRNhn4z;}2sR&;4hZSV_UK>A zL35=Krh1GKthc3gt^~N< zr`lUEH*2wlyp_C975k7TgyGm(0-Sd_1zI#@b_H!IH?Z&fTBN)Mo;h)t3@)wZ^h6+> z45yWYee=Ie#(c=V4>)=cx(d~c*2!m!eDzyu%h$=D#1EO1l&Y+h&-KMh`91Ld3i#bP z4&IrA<2uHB@EL#y+QomuE8Y>bIKE-c-Z~6x^Y`$$EWFq)3Z7d0G%nVsaj}&O_yPsI zyfHW}ZhzNQIbf<3YjYR7ekk86@KWMssezmoi1#4pX$60*f`43N{6PP#f_@vWNJ6ci zcB2_W=<^&s-c=Ip?u0Il@f#KV2V*(gw12@LqTqi-LGvNls_b;sWpVO*EAfZgHN>Ap zyqkQKztPOuIYq(03O|k6xvdFj&+R*${wLh{mw4iF^q8ig5fwC#{RPcT1ej3;6k`J#{UK<4u zNu$EH9YZ|WfZ3?)lE^*oOh$i`+9Jr>VBx; z8K>ZR<1ctND0qIO+r1n?9o=LuY>eg!1x=WOX82#wOjgi*bSsbJY3F8J8t|aHOBMWY zf=>!N<0xL4N0YvgKghtj=Ck;!nOgH=&BU7LJrlbRL1G0G)yRD4O*w`l*CEnrrEE!b zLDL?apE?PW?QMTyO$J)p=5h2fCICNn9|q&{CYTl9i!3FyZ?y$v$A(Dqu9%9smDAJ^ zqs+17Rzxq~VDqR%ngx;9fyIMP_Q^m?tIqq8LaTC|m^bo&!wN~Q+EO1Q$!-s{h)M+}13}Hxo=oYIjF_>Asd>bsIJtZAfVkgNHh2EH6v;UqI5M|8=}tR>rqx` z2rvcgz^B_um_@b@XdSV{4Yz>clvL-`(LPvwVO_os>m+1vHL$0?4ome9xO2t5O~9re z4a*Z=D>JZPkB0U4PPu)>h2wl-;{@w@Zx&t|7Abh+<5O*TlMb%_lbUn%EV2$wTX9iYy%MzDImJ<%`&@r9j0U|M)$4=@k_8I$j3q3>-F$fH5bC~lYTc#9(7B-am0C0^SH%I1l_MP4?I zjN6J`)i&MgL%w-fGQ*s>+}7*>j2$Az!`Ml8ysctr(vTC`;DLrKmT?Idd0dSmUjU#d zav|%S+?}U!Ld)?YfG*3&uKIY9`^73yl3x6>4L^;l!1R{`ee$T13n^Fe+sOntc|8GE z6F$eRl$u_=kOus`F!^DC<61Ee!A|L#Q^`dNJFrNx;MQd$Pp6GFyJ2DFpn*{__VZ( zE|{Mk(o^>7in4LZfwMi)O{~Twp}z)y;QASdWiDW(tq{0t-pzEpXeM$roFmo-{>Y)H zz#6nj&UO=^iMLG=1McVJ;N|7Oz@`*+`Fn4cb}%eBZ;}~6=!QuZ=r7oday&-jH-g?p zI-6m?iHm8K=e4kw@`%&L9}+`;@{D}#d&1g(PNN2O3vDh>oiT?qzYoetFCH_=R`FvK z+(ef_@}gWbhv#sW*4Ug+_CEFqN&aDh6K~(Gx{XGh9Rtfg)s|8-`&-UA@avCW9{i$* zft}~67TERCtvlw6lg7TzGq_)hxC2w&Q#j9_1krd=x`8*4z3a{ro*B$ecZ|_cCQKSU zGkr*ziu=d@eN7i3wE-RRWgfzuP7Wt7HDREzdM-%TwT9%BpW$B0Bo;Ac&=z6_oikob;f_ zXiQLfG8dUnzw0hFlvyhu|Biis+aek_5F7;Dq~v2|b$07zDI8K-qKMxi8=Hu)p zC6%a2<-8#|y)PVRiFYlg=8y6ua?oOFt;C=Jm=Y-zh1<=-f>*dKrv4yl9_~U&$0i~g z$3&)MDs)+c*q1)2iapAtV~y3{Qf@qsjk0*NBVIoIExUNvVrjmX60vKj*D%dpOL*Q( zJiJMHC`Do9Q;15--(h_OYoQvOU9!&3fMl4=yzqu5lhf5w9tD)Ulq5ClT*{i;g|hLU zZc?%pOV*l!jUv(Sh`PJqC`Iyovk%^19P$y=2|!WB=6M#m`x{pOr=`8ndxVq4xv*0{ zm|s9?ve18V1~mB&^sA1g*^)2f!gAckv~J-7S~F}4MKd+)tJQL?;J zoZ7ku8ZtfQ$jmdgooECv7yi${HEzDddAK=&^TClB#dHeQCHFl>bSW2bB21#3c#JL9 zh$gM>7~7x`<1|)wN+Z7Sy#nJct8XesvG=s%fM!be!(T&B>c#Lu=xk;x$I+=}nJO&P zRAHfh2yrS$GTdbw-m3{H8*i1p}z%~yHZ#5JD%Ik)7pC~%h*#^A!A)a{8*5JaCPOqLtf8pez##@gvUvDv5Tym7!a~;3t zFC9*!CcNZOqVk$klyj7g@fO3hBaX7?y~Q|f+)?(Pw>U+!f$4q3R=!E#-wnC+E7rkB z3>#7S6&WG@>PbK2h)B7vumxz&D4s2+JNm;OhWfHqjJJj~p=atmURdg*+tRmZ;6jM1 zTS$3Fx*~V{ioFHQzO8_{PjTO#Y+MVmW!~*0R1UBWbR;FaCI3gn_9>Xx(_b??p2Sx< z(5fOjK#4%0*Bt;ErtPrDy_{Gqg}WtrHJaRt5YH{jZvq(aPxa&jjS1I=lj9-cf8R?- zP4$t%RBc`?m_biIKA049xC49#ZvWRe^%}<`ZNns;_i6FX}{dd!UMzy z+fLsLB@Kx<0NNBmRz?JpW>U|YNGFMb%Lol*gAvt^M=8}IOF45g{8Ny<8d+-6OFU#> zsUJruU;7edHki(e?C-eE?goe<(r;m^q9%7~-IhLo?Y9mnJ?chpf5~1jioxDjate&uxR1Cos~GPS<+hnnnW@0T6~<*} zDHo(ptFii}qKbfcpOat0*&ST!TpVHLodwNZ{ULNc#>5Ql|ELu^CqD`>vLB|gUV1T> zZPtn5;k){HiUXft+@Uiz4#zrz%Fw>Qo2BT*VcHS9nS*}4cC+*NjagUW?NwZ4qx~hW zy*wNJ91hC@M{!ZAKX3C1pm92nc`E@KsL3-X?@YyKH7e)agg+BJTOFDWmRN|Kf;^2l zN%qZOIH|w}R48oh0yaMKej_$MI!1u{RER=SV`%wX&B9(*)MWjxtvfv&F6zW?7;64#kaoxntAf7xZDpxUhC3%Vy zN8`MUG}WSj*2Yj``vU48|L~Ran{I(`JzISPEB8C;R!A%(%zB7z4ix(tpz>Wiy>W$QJ+6G6y`ttl<{uwqlzg|Zq&EI1uge3n?316NK3U$p}ejzXckdR<* zoP`?b3g19rLc!;BX^|%PkVm)UN}`i0Gean+W7au$ckYRZ{JAd8>{!ZTR+vVL@3JiJ zWHmuzn+~^kP@d28fSHEWdB#6zNaZ7H;YdU}z4>#G+)^vVM8gmy2Ghv**$y_kl^8z2 zZ8p#qGL{U-v$z5%$qH}$YlH{0zzwiS2wm=3=TdBQQ_pc)#q$Ruo#xN z;B!=}xKBN|dC1_#FK+pe4vFCo)kR< zS2eT_VL|J}f}Gs31#@55b8kzjz?y2AJH;ppu$S7K!tRy2<%%f$t#yW+HNyF&$C3oh0L1la+hAStcCg^rl=*r4%H%{87 z$}q`jzNxvE!ABW7bm^GgFgv&*kJ!d7(TL=2)F7}#vALJwu%_bnn%t2Y#V^R2nma4P z#2{_cZ7euUjI_yHX~cXM3sE=}gUi(@Sg=1NGv%k*8_1NSYQU7^9D(y_Q59zx4s{YQ z$dIe)%VXHQFmY%L5O$ng)F_wp2X;D4Y^_cRG%@r-C(+K1xF-UHjQ8fHK<7NkO2WkfVO!od zc+Cn++kyAOy=rDDznGl7^R|Iq4HruSd@~#$p9E%%K;sQ$f<&{85n`C&)x}v>86k#i zG!s}&q!{1%kLwp)+dia9S;z@>{>{7io~5Jvi@!(G_H|UiSj1z_sm3SPUtoh*$r%AUQ=We^fDx#7OBf;5O4J^KP zff-EVTP<*T9||eYolZCC`7(2Y*qWU(i9@=q!iy4=?ey;#TefZw2@ zf8e(-K<503BAaET9Mu(0FUvNI!P-t6Fe?MhB3K~wfh+P$m6&DxVQ+qwehFf9u`Bs) z-MYAy)_k^36l244C^~Kve-Kg^w~jxT2Kd#O>9JZ-Op4&g=Kw^W%B94)B$%p1YWCF& zWgVa)cb?{DBDqqKck&iP2`1mi%!7r7Yz<>GK-G+d|3{DII!^NNkRirS_jBvgh z_R8Y`SQ+n257XIQIaQww(Y&Kl8O_la4#F^8_;6(BY zB54(Q625888-9p%2-~r=9HS3C$AEg`)HMIgdc=sq-OnUBUFij1K5i@i{C&XKiZ^bh zAKa2?)BGtfZiS7!luBJ;CJMo|h`0cs){%2~S1$`{^|PGNZ?jvula zv0}3KPv^0>^IJ7CFmg0i}TeCU*4!CjaU zCFsdpF=SzqwO3cLl8uWKgUwL?9X}xTj0cR6ldb|IXIom;Cl%c41NLT|*qTO(-`{7u z;>1pEqWCO#Fb9C6r^DtlSC9-Mx3e4mWTf2G6?9;2+KMKlej6XMD{fTUcbgBv!FK~2 z)mF5&2f7~bqf|{z!Q48{>||1%ieZ?6LBy>-LjhCV=MOe6UJUH^=UUkMA@`IlCzWg2 zOGv?Z?_rKMV4QK}R z{B>H5qEpjGhi@JEH@2x`8j8KYOAdyS#r8dfZc?IMz_ z$V6ivRu~QgpGvwj5#Ov*5{EbY;5~1z-o<@?-OAZzT7)20WPUwE4X(MOni@CcTosII z+KEBNkqDszylhTYB3lrzSOu-$W1q%jJz)d;I$kteUPCui+8Pz8!6_J}$$4+U(w?s1 zX=ZFMw%6!cT6@ua&nkO-HMh!I^ z8d>&^PVIMGbjjCNkqI@c+HKfgTE%{Ck7>w3O2FNIXp5e4ye+t?xwxjweP}*C12k_c zXufx&c?A*9F<=jo<6HzuO}E2fsKJ)RH@<1Eu16V-2EpkO8}L>KR#1L_gs-4{fCC<1i~>?w*WA~OeV8Ej$qRmxk^=1K z^_W@sgoUBEV>8I~MGS#`zKb6#9`pjw-XjFrlPG>^Ghg&2AbwIw=|(BkdFAJj0viyg zlcTm>amigj=a-eymc2>d`9lrN`g8K;ud#zjjsb{_mSgXbv42i3Rby4nLmGvYk-Sy* z_hL&D#Ss5>XO;Zp0m*hGiUWmbo-wdy9mRFp{j*vA_bo$NWk)eo=)dD4`=z58CzO4C zk%c@UMg-6Kq1FWzU-%A4k~`G@Rl zE80a~VH>)NRmSFLDZ`0lu;nq(1^JzWh1E?=HE#W(QT(>E7ue-)Vt*kEh&yx_+iA4| zd#t;d6!c3q0PzOVL0AC?`(iW;xb?#Y_VmFBDOpiACe+RbQylw&im}W$_h>EZqtVy! z%x}XMBcEYkmsgCw#tt2f2rskt0M~`QwskBuRm=~ndxDG0wO|Ov2x3?_x_$h?{^HQk zHTB@k6aEWrnhMu>&Qcn@vUXf!yZVbuLz<7g#y4?4^(R8q!SKD$ua!+1AVz3}m$zSI zt<%LccE~0U6|QdMAtsc4evNHS7xxPBdYg?IEKU@Lj5V+WgT)KNg;xT~J{}?p z8ev`LwX%&_V!2ju4!p*m87}q_R^emEaM3OdcsYRCMu-){?*nf${|ChkO-J_dgW^nK ziS1h1(Fa98jj*vGpzO>;m@;Wcv@2^qN=y?3L!WDG@S|cs;pU40Wh)*PyKDW2!6Pma zk4?x+4%M==qs0i}aWvrF(PBq^&yDK36~sa|J!alpm9vUmQ*ZVK=Am#8JH!0Df*+dHVP#ir5-;`O!SdgM7v#dYEny?P8FkJMI zjREwp(GMXSr&?xZi*2Ky^&rrG*11xl>+Gu@<*s~|?amghZ5x4JsmTMO#pxb!4*`Ju zDC{zJ?8%^imc@+|qg(LkdF0S=U7p#RJvI*Z&@*h#IMEbazZer7$bY9g`oJ?Wole<2 zFuwN;VJwi9jrAtf9)-`aQ{zN45ZoCjMg=@Qm9`c5^6;8S7W+6)8Th!^wM99%DX|<+ zrtjX;`;SKA6SLA|&$(&B57OPMTsVsdQ9ni3*>V-&3nAT1vbD zvQqrAKOe{1g_=)SNV{_Bjv~J9jX5kC(dmvAgdYAObU{_OGwv4V`evFnmUi)Ae!}LV zHt&%)fOq5exAk6M&~3BwmuH%yR|XxwrB?*?(wBU6xZa<`eTV4mFUAqzN)Cv51OlX4 zv$3?8d;;Zxl4_a{Iw%f-I;y6_XWBFVfWu*59>l?3f=X1{kTd_YUhkYImBa zA`4wCl|wHOQGW7>$!;(qZFYK$Ns%^wf|aLXUPy}pb9Awow&$Y=KC#6wi2=8)Az)-# z>*AE1Tz=&?0db*(O_#t01|;;g!(*P4f>|g^$C*}MAT<=;CP!~V+e2je&El@0z5SJA zw55bRc9E404$=D$r$@{~@Mmx={ydb7CCMy~dYyFye!=GfIr#HxJ~9zhHo<2R`)T@0 zDPFwq>KV<05q`&{RU{y@xJ(Afwp8TIpm(&->+=0*3ToezS-kcnlE^3whl%A1(t|XF zW*gO$0q5i^@C>8fN@N|6o8T&HnkXF>o=D2Omq_xm;VLfvPslL;PUCVmy@_;6K6YO4 zdV=mDIslr|9Sf9MA2^qe=`YO*a%gd~;-@Ay0eNUiD;17XuArCt!EcvNQa@(RNqgm; z1mq?`sHUR8OKO1al_1I$GzyS~rR&2W6u@%d5#h5XpK%`8<4@nc{RmE(R zwX_*rw`s952byJ`PM@CvYhR~dIEsECGNnMLGc2;w5*SdC-z_GqJ17>Y$_XW)Qc*7o zZ&1StJe*&t;5wt?;_?k#5~K^beo=6B&m*x%W)cTNmaQTqv7m64f=rKg0$~yKgIE$# zBFtYwCIJ|PMX0!l@dO1=ERLII{1nbnaPi#({ldoxmjS)#2t^|qixWiIGzHliHFJ)d zxehEQLi5!yJ$R(krf=(r@IPy-3zcvOkPrj_)A8XZB0 zs$mX0w>Q|7r_*oZDp{vr%@=n15}GVRqhH6Jd~|xn%~%(=!v)2f&B3Du@a(&OVx0R8de%|hc#Obm*=SfrM%AY`&GmFDnPXw&Q{aw8sOD*r7=;k znofP4DBYl@o78ZYnyxe;bgCN8Q(ABbzqX5Nl%-~P*{&J06s2P0M=Q(IDnyua!^7kep%UcG57H-5DQ&UWWwSvQXHxHr4__fHJ-vi zy*xpU&r#zkjCe=38lSDkQ)6? zN+=oKrl*mMM& zXQ{zTZ?>2+^9Dy|J^PrF^=fjtH#>^t=H;M`aMyXWD-`DPfN(X+&O!ESH9eKZ=b*4u zHG2Zfq+o&?%xBXnn6CzNm;=G)ISpkAY&~!_FIU4G1a_3d8`N;6z^>$oA$fIZNSz*P zO2a9l5V%AGDm_43_eNj*pK#Kto61i!6au{);7UuKrhAbMVX8wzGKzdKCYKGU30_Hu#ly zzgy$d#VP?^teP0B0AsGc+RAgsD(G~vDtg!kC@v4=g7ZWGJ`|ep(Lg1zD0Ig*)C6cs z72t;2qQpv-sYKnVh=fS z5Iai=E!uhmehE_+;z`52m5q-)!bR;vzXS>S!?iRZn13jF3=RS%oRk+higNJF2Si>o zy`w~lUtUV_C^JEo0D>dO)v_B=mZ|Wj3XoxDNL25 zf`}ls;Gzv`0i|sIY%%!ZY!yF6Q~Bj;a*0}gmYUAvL64VOJmn)Yco@a&)#3@Bir2HN zv&AS)J~KQ60nS&k)TyP=b~bS(M=d2sP3Q3_rCh~M`KS~gMk$p%j83TjQkW`f0zRsw zp8x8L5>))z3fI}%XGFupbv%IPR)JDgpe&V$YBin5gNRbKaLPwS@GyyoS~$T|RW~rh zv#4q+OMF(0@1y6~U~LmU`6xo!2jg}TT1mxKjpATUWS^HJKwWY+<4u zvQ#?Ukf19Z#}cjPmU)@57}JY)z7OCu*SF4|2r9;QanV+#5U$E|BXK1rl|mB~1Nlvs zP@p*374&&0We#Oh*v{86NGA1am}sT2mm02A!oqT<+sNoVdoT`SiRroA5oP{t=Rf@9Jh|#_b$Q7>aEp{I&*p3W?i((%<;$~Z z*0qCA=;UTAmDT&F7pbfN>QX>rX$>w~=lcQb+J|cxZUb$PEr9{|K&z>k1+Ob8I`DX` z@nkxlodg1(y40}FQ@`>*uJiQ6zPZf~QG(RdVvff;&ztT4?K%&QNqnvkT1e`#a)S#y zTVbgOvv)eOlQ)E)*`Z}C(m8c#Nja*qM)ZqnW!eil8MIJ*{tG|L0-@CzrnYA30eK$Ao|2Was#Q%gH|) zagtWdRtH|k=0|2w)+9##;@)YJFT==6jB%2+fV)!u~vb+JLm-@brp;WDeN z1iw>*^$0?!F-o9*_*iK*;e!epoj`v*7ZbRO;;S1rN1n2pCx4w*i|I5Llyo@QfQwMj z6lhFpTrwE&&UqgV{tPmpag^ms-b(IPkcbLoi)i9J8Mp|9{FOJpISqBclfZYFJW!} z%|DrLhBb=yXcq0yy3Vlb{J>#4{{jxb!pif-pg79&pE)}8g33`}&40_$+bG56_}_AL zllh-HI{bgn(G~SKFbZP^#a&vQ`N1B%-JtOH=s)mw$^E>|OD}lAgq8v}xLIOFCf%_- z0po`ai`>d0zOtG}dzh=^5D#e}DIjSesUVZOntmZ;rTDdB)0es`Ju_mUZFACm{Hc*9 zxX6LTjAT?5GuYvI_lp-FxCqmKDPEP=l_%~?sL%rPHIGLv8WtfzHl5y}MEP~`szLV$Fa3|YfBaAXsQb5D|E=z? z|BLRA^}h~t@mVa4^I-)RfR6=kbfi zbK*x=w#oV{eqUK>t;G)?2s+W^*9qp?7{I>G`eRi)m)XgtYK^t2#T{F(b0ul5N z?r7NlQa%>(L74_aQmAB}AQjLUg-n2;K32_tbMcrd^$B9iJE62eub5igi2#vwcyR&Z zNjiD&gBa6zj}`gkRyMyK95=Cyn?m4OJvNnIg)a5du=#CF5iI95aV;CXQ0yDt8^wH~ z$DawhXW)I1dk6!{!3o%rESkvHFBG46@4`=j5ahH?jK#`5Zkt;?w_vfTh2Qv1Or1@|8o2pTnV{x50<2wShWM5OGlY*u^8G# z<%FWLF!ok}Rh2d$Ds=uW8i8kTc9uYbGHI$c5oK^?Ah5BEF|`}Radi4`aF~FDTf&Z-lM!Z#m9+p|W{B<&Y%qKG(lk}P9AIM(z*W&H#h;a5@ zq)DIm0`v-`^U{Pg-Hu9K*>5(@z6|qO+l{j}N8pxpNB1f`b9}PF3bUo$%uPyn1XiIv zhn>WqM`TF#O4R~tY&caZ&892b$TgSumh_azcGoM?%B6?fEX}cdR!o!Nmx|b!C1O-w zzt`?>h~cmP|8I!e7XR1~$C32EXo#&oS>XF_HneY~$g-A-{+j-5^inZ=2zYxq-Qj=O zR!{-{s(L!*P;LU)I+A!h_Mds{HcD$S24&!7n7Dd&cq#67iCiZ3)K&{@^fK|eI2zN) zEL1q`aXLXc3yGsg%4y^570bmS%|O;_x!7O(Og&q_Tr`h9jDdZyL-I{8*sD)3sJJIP z7!J^rbC1FM`^0WwD$m{J?1JZX(zdCJ?h;auxD{Oi@MPF4Gc||O3wEoRcC+?YQ>(oF z&Sx+br@_6kuel=Ket;vJL4tTdS9aAy5d9&Dfro4byTK?$SKCrf=n8cx6&yU2=E!n^ zUqgv$5C09*`kHq)81rfNO4Xh(JeCKwQnM(-PB|Lr<>IL;+6B7)bLE{GP)?4AT;|{C zoX8ZM(Kw_lI|v`G40DC;#`iXdzrArID|@sy@|8bz$Cc-D3?#b$v9Zm^RI-1wADRy~ zLSGlI!sP}vOFSsn716y8f8j9i=YqSfbSJ8uqd+Y;Vik2g)2P@ldjqjd5e->zuKJ3- z&cvKHqpvEhLO31^KR`d@!%w2j)eRk;&mY>qE{4QJ0oM5tVRrObKMxj+Bk05ZSl?&| zgmMmE?}df*>HY=_={LH`3C0`QsiaG3SfzieKM9WctD`E?8WtEb>{#(o;bZaZ;X$H- zfV)=~>?h=wH?O&zTEO7=iiYxWBNNsD|FwrJg9|9?_EA$P{|3()pWJ;4flU+u_Gw+4 zsJ!{#{Jp6LPpuRBi{SV_l6A+!R7e*{=iYXyOk5N_O6F}C| z91|J@Jo>oBMRxH`v7ONR`ZZ=)Deh_ZdOod7Z8SA!^z0t1TPb!Is%O@-4sVGgg_jKm zW`9c@7iKXSyapD`Yu8{)3@o144z`3J(!JjnI|<+D4XpdyVyy7K-cUC2ZE=o98#$Dn ze@Dy+cH!P5JjLF6SXT-*3EX=hNj$@tmj8)5-ImW+3z2TqclP9!kV%W6-8*TV_WyYNo#27gdp(LN{%#d`&X`O2fyS=y)YmE1Ms0?YnX+#}qaeu1_5 zOdKn{a|gV_{Ux|w%8y3oSXWRkMa}<`tb7l~%9%acr=N)-Ng`T`7jY!t@|F(oxDWRqwSs^GKMV-ps1O#j0cZxTge79uun60Pxl zd%At8C&>$Pl(yV8%qv(%pDeAcFf+>*Nn0#iz_yvltuk$M-tYIE zdxjZ=>gm_-{k;FbpJMLy+~-{9+Rt^at4pF>x8EA)h{cjG*&!HbF&J4M!cPj>xpl-J z1PQ?;-%;q=;(hpaoP*o(I`?nX;%z-rEWn{C<7Gq&Pk(qX(5Mn5sIC*15+X!EOJ_ygPSA9(dnhq=myzl|8O_QC|yl}W4 zQxOJWfR~<0a3ZrR@ZRCcLuYX^N1ep99SO;X(>~X$b1cEAcPm7hzVCnol=rLj>EZ`1 za{WZn!&D-d7m6NHo+tOohE5_e>ho{+$=kjWJ!C<(h-)|bU8hA9I-}(h-H$hoQ-U&<4T&jawo1}I)P=}*#`w^20Dl@VNBYkF$d?`r2*v# z=*D|AIcd?V>!776?Gzp!@YYnyH&=+BZKvSe+xJ0vc!fxY>3<#c_)q1?64Aean7$60 z3ik1y#gA;>YTkIvVLDov{+Z+GXO6434}oqS3G3uFS|@DB0qbOFp{Wi!tG@}wisO)vI7JJR2C9R0-MiGCblV6r~+ z_GQ{q1=(+vo>t(Aewh(gS)mG841#BO2}j-ovT zd+y%ak=YuH0q0Fl+y=~mHRjnx7Ud49!IzXjjoSnb$3cZS2(3TV@IURnrFLrEyUMh)}wVcKyZ-Ea&&Lr9;O+i-Ygl@-SE;;6$RVO z8LU~~6n*;Pz1U9C7aY#mlr>PVg{dbRUX3` zfvP~|s-%Z2cYEcpSdx#xB&u7rc(TA%Nu`<1*Wi>PpzHK!JamQfb2RMoT`y4oK@0ux z!+&bsLgA!d2;`HQ`VCJGe_yRE#t(R|7QW_;nBy04VG`b5O5c~#(1`yX1=`)4*pcmO zMw!#2*j%xbmoTjkH~zam7G=UL-jO%AMGx>zK0P(Iz%|BF;5s*vc)}J*9hf*GG-y#{ zI1Y68fctrBvvQ#mnJ9ap39WdNJQY>)wcHoTf04wCohAx$7BqnbC@!ZhgX6L5d3K>F z!HY|EI1RpAf-X?wptgY9F`Y45Wkkx@GCG1s6*(JT2O)*VN?9463a2C31_+*A0|bY;T#>%J;H(RA`TF1 zhezbQr`Wq%sjXqd9x~*Qik;VyD&+0i(X!!gY&2ZeMy6jZtQ}Dh;SAJsQ*u=nt`>>* zO~d$7lEbuz-{C$0P+VboZ4Az4DSlEY(xhv(NF99`0TGV!@(Ab>N;30dCfC>lFe8CT zabb3&xgrnk!A(F&N1`)nj`CwM=88oePx&!yJzpaatQMoQQpnlL7iOfJD?8(Gor%&E zP*?{D@gFYeJY&8II78wyS#pm^zg$0H_{4L#LnZJ6^!*IJh)bJ{HXI&oUPQZ4LyS&( zM)l(bKnSt~pDi6h{$c?}5xpGH4|rW({HCpk^xq@eIad+_)Dj%-#W_@q$Tb$Ii;qxi z3dRu~#GC9&d;R&UJdw&Yv>r!W>OjaDhBX~n{-d!g61?}yIruT>zs7rIfK=|&ksc2e~lS+pYF86emt@Y*VFI_Zr#OwU1+@qm)QDR{2HF7bvPUq zI||ngF-0*<3id|70)Nwq5PW=o7zDdstsr;^$v^@S?0z0+CkQ{xF=vwJgd@7MW@Qr$ z%bsothX2fL35I$7H4KM5&>{?7s@ZTD5=I>HpMW8JOfie@X%&X=e)I=0oQf|shvCSV zkNC@mndSj6uFW7OD#+f|mF(`O91;#Y=I|7X2@Y3oDn$vOFhh2_N15E?q5-rz01p_y zTR!rDxLEf2&~{2JFF`5aElpq8GEe0jRoJA0AJ|jFtd- zzFh-y{6AX+iA`cp zUywsW$<9BKMS{8!8i-xAAR1ZoD7@h7Ir4g-(850}DuB-mq_{Qfb~E9#1OEi&c^t(*Q02Wwq)G1e50!q^ADkr(Z> zC7tpIq-?vji6C{C8WEE2l)YKeHC>ZytM;oDmz-eZ*~a>3^6&7UD&?=lPojIsqT zc*dLhR!dxvdPPx7T=0>nK)eeh;4ZoxvxsDUO^VL(wxr;NITUfND?0fmcTt$4Gy5}J zlDufWNQo|i(jo7Owz~^?XY5DdU!JhyZ=tX=#+nW|GIq`$(5ViS@jq9Avzn>E1{be* z`>3IOp2$$2d`1krbj1$Lu382z{m7x0fStG$#!!{+$oI_^W6@l5J@a&R4SMEiycm4e zmx{}Z9m%4N!WPZ7hTkE8D;I?jz~POetGRM$2m$o}XLABrwMkTk5Wv8xO$6X%dKZsX zPW)X0C_sUdKSco3;2{qf$}#t}L;$IYEfK)$2`v!73$7LkpwoiChb11bXq5mazWf&m z;H5{7$ol6*q9y?I@hA{LJ_tbDL`)?Gb8oCxW@NWUTc#ZMyyyUB<=p2*3U;mC_@!+^ zJ5oSf{C}2w|4Uo1Sh}fU27Z3$SEv|G!m9f3Og_9pr6a;1BhnAqvNpz`h(^m{yO95^ zMS=*(M|0)1cs;KwsNS$s7}e)ASwd|?eo3MJf1%#ctyg!lQefB}vbL^96aa&4C(Q+W!slT_oR9yxkD5~ zHiYOlhkX7SF`!T9mrvkl{w>Y;86C9s^7fZRueRH9&$s_q`PhD2dZ#A`hH#vba_@fI zMAJ-}dB8SI-c&1knGa@#+?ThJBTY0Nm05gX_!f~KH6RNr)fREiMaMpZbvzCZ!n`F5 z6HvI;d`In)LXn!brF|h15#jUnoucFbcp|qa5&Vo5P@3A+lfg_3w<;Zch7J4nIK|Y~ zexQsmVOCn{!dhO8n^B9XkVCfAL7XkltKptH=h`ODHDF~+oU6cmK&I^w3G)0OY#pM$ z?r>0E^O{JO%f7Sqj{m%@MOL+8?uo3bxr6VIv^RSB#DZ2?)s4^oKC2qllJ@px%@O(B zR*|Z*L?B0%hURq>5r$y^JOI^#@>i^MK~nPy==W=1RFJ%#Kj!=`L{S2B6C)FzHFSM- z)d20C3JTh;y<|lwXww7k(*5MJh2HZhm zRWaCd$M?2mjpVm&=Iyuzn_EWmD-@vgOpK}yor%CiT+|^H$$x1ZisVNZvE=3Wi3Ipx?LzlPiYeh(UWg#5u!J#M*rt3{#Dnt3ehc3wGPoK zfM|3GZ2O&F(e;TY~*Z7vP7F8bO%ykN^z4Md}-Sg}whC+BoP$snw-w$Us z!S`QFTY~RPZA0K2c~P|H6zAR0B4i)E>O@=xeTJ?0)Y`Y< zna3JTJ@t$}aFGD9c}}&9=ViuuHO~lN*+&3Rc8CWhr z8=IuqDK73qn)4oU^SRP@aGB@OjXL8M(vk|26#oP2<)0~KeYcQ9BX-Z8@*pEE^i`ih|->n<+LQ7_;E zj!SsFP9Ljs_vHS#p2O=UJVv8*FljqlAFNg$F6h8hu<67p8~0h-$+9RB7wR;%yf3oS zV-aj_BzMNHX2=h3_4ud=9}4%VPS%>_!EvJ71iiBF()I{@AAw<$U$FyV1nuW)YT!B? zZ!4<-x3%Ld=HDo;%cpfrWz6u)EwcFMlaizGzO3;hTDcgZvnp)zp+|M}P~TZ0vW#2A zyRKk}J;JRRf>jT3hV6NbHt@dip}c>Wuyxq;1SXiX{<8CqLNT))yyQi*=_qt?_)VabCv(ZpVpkhQn7D83)>I0%VCv zB-_;o;&U7!v#6$9H5{KagV*b1>bpYDye?hEisTKifi1$`y)|92QFa$jwZp|2Ovr@%4l zuSuabTmW`xVw4|5i$nw=9V-}?Cl1YvW6aH?{wPE_;hGWJT7cw`I=0n;4AaGa>)}Tj zpoj+yq&W79Mv6HkLZbZFyr4IMIs$9CyVXOR#SA>;x88{+e6_fQ9-8EJQ>K+J8KF2)4tFlrWYKu}v;5jjL|8>{!|JUc;hV@#0)YU&@9<19t&94P zDWCZ-5%!}h3xUBID;#)A31Kvk$wIUYp2@%gHq8`bL#um+Gpz^-_$z-_y{ID5(H30? z?o;Sqi{LNxt*X|z${-yGj@Q&FVon+n!@ez%rECkczc*Jb2Qw(po2ll1Rp`DPdsi1) zxJM#$-bsbSE)yB%iUVjt1#yOVhlMA!g=+&u;`2?@w zTmcIzbbaHu?l2y|0Qb}e3|fd3ZRX0^fKB1BHEN~0w5Jg)syjVVSgdWvPl5Eo9uXdm-RA&*J^~Om1)5iozKb%?u`` z7ez%cf{!R!1g4e-a6U&47l^u0G165JTj)HFaAMwuN0km5ZYu4D5F_T~$CZdu8^>CU z!^SSW=%7Mq6u!Wr-D=5$d6 z!fs($&YWmQ)~Qeigjw;6T&Q9vf}K{r9=JKkU;Wm)hmc@-7tsO5Fg7T}E5dvzbtVY@ zMc4=9yA7Wx^Z-~|QZVZ2f)NL}7Z1?JUxw>B3E5(RPQf~d6RAKv&r;wX>0OwsAnb6x zN6yTh#*-5ST=ayd}`t!m*=FgK?>f1O<{eVaLlkZMmPq;o9vW#o@J@I>0QiYK@8`=ENX+ zw2ht_`OkKuzmkj2fLz3VVogvk;=INTR&G43U@w&R7So!AMYc9|k<9HHNfm-Xo4 zEZypBw-NVSLf27iECF8Dgr*7)NhXR>AHqQZOM#eGAMezsGhI z--m1}*bP)dfL02s0g7D)He=n0XYffJ2O=GVl%uo}JW4dH;ct9V7icZ$2J~G;8;|Kw z9?%NAfj+KLN;%p#q)zJ^AR3#B7bY>T=pv}0_yqclsN?0FH=L?@jrZJVoT_P!_dJPH z1tCr=UiBc%pTGHMX|04gc%gqdRj{N5OaWoI2YpsHl9~fi^{RT7#1!l&EXFR^m}B=@tndwVV@|7oORNjHhZ!> zWELkmpXs9X+%eE|M+fxW%qO9mR2vXkfaFI(=6~p3zyh&l#TYq2imG?R@(*E~%@d$| z&qA+v#t&+R>6mXPt~4=`_2wWGnb#jXK8j3l124%y+Hj|g!9jYLZugzM&hMxGqPDeE zxaX*^M7VPb?GWh54N{-zUbu1M=i=SSLFV#9=!B}YGd_!0%k8@i;ZXFDul1!e&L-A9 zsKr2UlDWsRxO-(k(ZPwYFh2)^C4)vSF)k5vPRAn@q75QLk^CWi7P}#!qU5z;|*9V2eHmF@i^X@UW zj3Va=8t}H+52NoIDtE4*jhWWlTwvZ~Y~E+C(R*DG=+JEzc(vIQ*dPTigvB7VL8*|* z-*aoJlPKK;mlUFUVvhXV5|L+Ybm3E1cwd>KH@dvrL2Y#5MJN!(L_Oel7F*I=K6p9- zm(@lWz0YN}vCm}~xdGPR_|_HP9aHo^mu$V`2K^#GMF%kmeE|Bw0SD+p77XlnD1vG;_)cPXJ{+HmEfi>o$cYCip7FpKd9c23qSJTsDdg`M3_pMa{RMzd?{5J0 zk(reNOaVoQ`JfbPY;AiCo+U(8a-R4)`>*=riTU8`{mSmwZh@Gbv1Ds(4D`&M4T`W! zBIH@$h_={4nU;thl*1<(>}bUb#g0UGy^HfJZ{&^KLbRI@|NQb)!#Y+)_`V?Y99j@0{DiZ|OrqG0ar=UAFn!ybW zuqu3+iaH}&+-A6wk?P!Ls4An=wlG&rMVkfX&LI({-xPVSz|N~RdRGgmX(eF_B5)Eh*{!3G$wIXBe1 z5_97if-&e^v0X{uWzf0u=9qBjN}@dUt%#1=bhZK3PSu*r%TxA?SSMkttW58M`OO_H zkh0#BUJ7OO=E{dSX)b8*m_24MD1i`|@zNe#^;?HB2AyI%YC1sT+E(E1ArJs==6)l5 zLPc81@1{X*e7wKHc>QsTMel(f+<~n>TZaq8TZN!52izyh zQ75x{2wOLGG5mWrG$z-_+pRsx3b2Qqhmy>(h&+k#-?u4CTu!=P( zWM>GoXtp1UFY!!#Bk8PqAMpeN5h;E0PA*z$hn8 zg~~DZAXLuzk_5i#nSIPx_BG0K)~-uWkx!*#RbKIW_d187(Ll-ePaZ3t(I!G`D7}2tTrrE^$?h`m8*GF*=Ey!;isH9;#&4aBCe$IF+)E6QmW%UtQ zIr5jjR_=*yC*QM)Y_(gq4e!@S%CiO}+T_YPebeMsLUcKugvmQ3O4p94i6R5=z8+Hp zgSG}gCVGMv;2=y*kxvORURHdXYL%bWXSS6ob}^|vn^2gPDHqtqkTV|BNyRIlLiedl z%oTi8a@sL~qUt1(<>Vkbg9H@D8*~JggPDN!TgCEX_$@2P?{wE=Vi2CBydQ#Jnrk`g zT)WQj+!|5L3zTy{Cr~?xL0TE0q|8+qH^-u?gcnBJC{%|4+pMgYo3&S!18;Pkh-`%e ztC}NQDR$wNZ_ROJe`>DS19qNUz999eX1#cXjF>O+=INZMt@m_5J!Bh?{nRyslR0H(j9{&j84U$!c?`Krn#xHaD-U2*gW&byZ-DJ?qThS zQe=IZ(sX-D7q!^J+2f@EpDx2(5P|35H<#Uk77>cSU=t^z@3CKyLAMEgPyJPNkw@N$ z?;$Vw6%kO;+ij`xj$g5}{`HeZC;7^+;_UWpULkjxO#4lA`^OygtjP6>xw7pE*!}EI zV0S%IoiQsDsIhXwr}8 z8Y*9ubDuOF7otZ%lfHI3HEF|Mtpzqa+*d0*b!6Hmaye?nmaM(l1MRzjxE>I!WZkqE z)qQ%tmA!#1b%wQSk@xo#NzScE_hsCphu*c5mT6ik5?Wr4FBz`vPg0b#l6hl>!OTLd z^BxFNKR@E_Kn<#HB462ai6gGbn2>kh$_s z;0pO6?LwxaD`DD=fOYT!@(n5LV8#Th7_bg{D&v5z;ec^ag3fuPHwN|dzQzJF9N{Qx z7u*1a)o-(VoXLGoG-#M~4pFpQ9=t>(kNFI(6?w3J#w^;f2MAm5?3ZW{=+8x|@rT$V zH$M~nT(}jI)sg}56Q+g+Ko?nan!Ug5nI#fzW=oOPY?-9=dfG7*w4_v^Av*_AzFS%@ z6UJs$t;l2A^=4Hg8rM+d@h0sFViuxtF?sU2EHPLGCbLx{Ml-d$34 zERaoxtKCG3P_>(SK|t+}z;RIR<`>N|XyZ_%JhzwqysicAjwsFvnkob@P!sLip7o>L z8*RTPeL<75z3or~^B&O0mxqLZit>E>|Gc)n`Baf`aVTI9u_Fcu09ZBb4Qkk!d@@}? z^jiGTFTrvDu`Vt%2Z=#L2?;{FgzaOT96i6onIpR+WO!eR5!@$0z~2$>Ebkp8y2tX< zfd92}OB;KFm8}4dO0&*kOL(JLYu0Qapjor=Ce4~wsS+7=CTiA6NrB~IbL9c0RQtVe zP*i+;OvWF#Smo7i?XiWS8gz3FJ4^)wCpGth8;7;~;Kk8CA~hfA%>X`{D7Un=Cm?R8 z?}adAAd50Fax6ZeTYR3%b1Afa9cAvfo_zzARIOz5ejV%7K zs`7^#%A5EmM0vZsPXvp=cWPSN*(ncnu_s0*A5}x0u<%2_KhHA?MdkN2#e9lh3cbOjxt&DNS^+G!|8N=S@Fv6#KZT=6~9G#8q7=X!FG{InLLD=eeZ#=&A>&lTR_N9W~+ z`KDD8r<`{7B$?LU9-B++b{%k~^eJC9MJSj=BjD&E2 zMl8*=90YM85ZCpo-+Jo2fK)ATee8giNV6)ZfLT{>LhHyJ!!(;-bh5~^Xh@+GDxF#g zL9=Ov?h>e0UzjV#P~Py0^2U7uE!zjRSS?&pe=f-WxU_fqf|QP?d50YC(v%@k%}c-H z%J9A8m80$>1r*;Re5JrM+DhI)e#2;J>S1YY-lMJ!SB!&f00MW*=~{R@^y!toK_qy! zSf5^7poO=wK+~hQ_TkBwI*HV%*nx&@zIe7Fo9~S?WV3eNy*as=bfyiN;hlGHxOjeA zjeHh-c6nk3H9W&_=V8o0t&z*~$)X^cQH?rFv?esRLCuM``%{$3`a>~ND zA0%6A)ian2*WfScE_yF}j1c3-UsY`0IBp6QR`zi5=kQkg+r5$XdhU|RbjgjkGpRje z7I@N??4NoA1h?|bZPtFd4cafaS-c@PjevVX%{owwv(8tv;KuL>1V|%F7V>{K#rqNH z5N&Z4t%2{E*}?7km=t`MKD4FUho&8WaN59!Hc$J|=pkiu1+JnT9`n-|(?_7b4Odw} z!e`=%v;x<>4CPM)esLzi=RrSuHVRxkDE+d-Ww zWjJYdJ~3VblTZz)4Vw)=YlYe@wPa~CKkEjkQUt0DN9$%dS|P&$Z{=szfjgXYYAqxP zP9DiU0>8uw_Lui-&@JAla=`oRa9*X?rHCpV0-1?Q`^G$Pc$FhD$H&L!RTYXUcs1a6 zmGAU}0>Tdj6p(s+oNpY`3JBW{C?Nc9lLAr=9Y!f2HEo+KAh$vR0oi(IZiNCePb(m4 zcfhL`Ce&Ad8Y0wxj*y>pvG<8zj@_Is2qOv%bA_olI-o_Qk|IsQDE?Bs7ZgVCeA3{* zGskX|pFvKgoC&7eB$Jw%h4OHMy^E8B2H$49nO>kObTued6%h9JnuhnGy6_<`wt9`} zQPVVY&lEB|Psdcc40HGhsF?hk=ZaBNOmX!=v1xM5V(Lh)3$a6sUPUa-%5tkc-uX4+ z>wS|z*G=T&nE4BvXKF9Hww~h&k-iw&y--o^X}p2baF9UCc2?Tm;%%x!i(ggG4lAXL zvL1~VdY)z`mgo3!6%p|x-pn&Uv+$TZ|0f_(9ZMs-^MA$RZXD&7`6JC0kK;x4Mo7Q` zK8-hlLqtcg6+VrZ($GH)(#CEY-+=h#H>waLjE~|CK7%*-jKhO1ovtP4;D+mF1(1GV zv}yz}?CJk7SAyR*bM2i0vx^>t>*dC-_LM||SMdNA&eJtbsc2-#Z@b!0a}GnOe&dH+ zNV68qRN#QTDs87KVx;1p!U@um`YML-=hjb~YsEo@7{Z0rk*Y`+247uUdyLkPPqMRV zl4=P!tMZal67_*3S28bm4DZd6hr8Lk$qu7M*G@dA4yPpS3$piUk(W?Ru!ZGa+p$^J z-!1Z;Dy+AiW;vu+}0R!*R3TxJkyt>Q(9n`@jK0(^V=}_GT5^Kcvn-L+P0q@`QRBpJMOUPF=+u9Fkcn zcB_^A$z1UW!0Wpke*mX95(99u?=;|az0H8r+a(5^7?2qXr!ySkaH_&wcxPT34kunD zoEGQ&_i%devJ>HS53aQar@L_P58(8v!5{t%oScLc*}+l2wN0=qGgmSHUOmvOmYP48e%Hnia$kmrK(WYD5O&u;sL$M1LH*EtP4dN zNQs=-fr}A%N^u#;bCQQW%=I^=tF|7L%IS&88WQgMQ;iVI^~;g#!d!oSy9Ql<%bBwJ z;WPt(e!IxPpU0cw&(-QEK{@@f&|O)p8q~{HgbLMNI0Dr&J)eamFgDkH zmMPbLE?t3Pwn1eTUS8s7-(_kpad0OmlUMHLbkg>!W@qsz=Of@@EpW#cxN~9)<<3WY zjEYsdj@ea0qbpU$Pr!x(B;2Rxb-oI7*s?2VT;(JpG!sgcZz76S{O@5>B4@BARFd!5 z>uE^MIqyM#3rBo&HC&8)3RIVT$lbcvNn)zK`HV*eoI z{~`V0RxpwRSv+(g1<_JjTlF&i9FdrwkG(+ohYS@Kvt_Q#R$kwu-nHvtbY*Cx%jtsA z#eSBk{w6A!_LDlMGk#`SEkX$Efi*?6OX_i>010}*j49ygWJCQpIK3K&1f`oZB!9lV zfYNOYq#NEyqiK&Uk6YPXAxqN0{u~ieeiKEU!}ISlTt?C>h&Xx`2tV+pQ513Geow@8 z`-kcdK-`Lu8=Dd)CPw`!OzD$jwbOgxqTgFEsVG3l;gsrL7?& z!h)Ms_=WfL3cAh^hpgh8&6Up+5_&}oilN~*JAR%a(tbcqB>2sABCy^{q&-E-4yd8t zyxS-=%4>NI{D&$)9|z)3UsgCb_BbiOo@5e#<^gw+$vr7-Ve7+5qVLpj*V;<$TBC;! zC7-d_rGno$72ZMjL~(W?Tr-HAo?uUuaJ{oStS6*RC0M0pyhs=t_;i>cEhpPr;;zBp zpdfXVg9QZXe@s3hH)h!F^25oZYiIMud?kB0ILMx8cfO46WAA0^A^Y~RC!MSUgDvBf zmyKhFu1tJ@GOf%{y<`W0V2hE@ju1Wnw3|)A&tNn3ov81$>}FHO>jq`K{_SoyJu?Na zNmD=@+Rb)#Nq$w)AG+BRnpW0ae#Wwu0mO3W6fxX%rR;c~NI4S`9tcK)gKaJxY;WgP z4TpnmK^r*OKFf2J4uJr;S_y#7JCp$6Hd4Lxb{U)uR9byE%US0M(VHUm1eGB$YgDnQ zF<{o#_qFSYKTx)t0!b+doUE)}c}vD&&2wDPaf;(V_L~yfFx@5i1R@vtCCs{xXMF7U z{cJjYGO$AX*&h2l{A{7VSUTFMT@W)UtEdSgrQ;NL`zED9IoP_AZ4JC#QsCgtxUG<$M z@9S^xmd2^cyN7b8t>KM78|l0+HV95KaT`3{aeTh{d{l;_O#qu-jsvQV)2U}C8!X=7uE{D*u=bfj>Z(_A?P7r3&m*qerqLebNpVJb}<5CF2$)5 z@aQO=C3Fxde-UgR_LPNbcdl-AAO$l&2o5BZO_@-=zG)!z6Y(Ds6Jf_hRlup4wfu%UKON@~DZUJuo@F0oEFUuY zWQfPMq{(AzS%lOPL65Dkwn09VWgi{cuN}i|terU6DQb}4d4G$N=>zR&nI4wc478u) ze2_>S2+lv3-8mu3#zLimQ8sF!uraGu1AXOq!$1!N+h8k9G@A?r+bl$|&1Oa62)0q{ zcJhu>ghgp38NgAZJY``He{oJ!h3S2xB}^;X9Rc9sF7X$4``N;^64eM1Uf=%hpJ7_b zK}$=TxY5y#YDYPxRRSY|u^5Geb;hGEncwOUbkJ z+TL*m)sT3bgXQW=>O;i_$W_#Ti}5x;;ECUhw^4ix44ZI=aiKJc|7pBUZ+YxT5htyy zdYYZ#_9Mjt;G=_Wn%R#8BSi>-2W}f;KN1&UF9z*L3;G(cA0u$grhl2ZZ(81wRf2jSmSaQ44=Y8$ul|$`=l6auo@#w|| zd331#3}+`Yf_3PZ-#UIY=os6J>wp=0oy1&`_Axa99f#w$_QMmtI9yWgX?-sNI~zkz z@2v|vU4d*6>aH(?D|J{iD`_ zy-xq(%?5vC;`HkB+NiwjL)Xny;ojxjFiQ+RD!a)a;U4vUX+vIi{roQ&{)pm2>2r_D zi)V?Rrk--zzijs5d#6|K#g^A!uzXnP=`YYAVL;Xuh+hfJnYxBKBTs^ydnX}IcA6s+ zJ3q8kkJyM*aURwqW)ZNYw#*4O?zaZLo%sHt#+cn_2F7gebwt*jX-^$XwNq(~1V8p? z*Ar9Ro9d{6xYzB$kN2Yw+e82{uE(*l#UKJ*RUz6?ch!4fl{K>6D8wEVUL#JrlwE$# zg6I9#v(BK3W2i`2g**froR>^{oa&YeGxk2{YE|J$6I5}$m2#d_jvnRCI!1~Br@~j-6XYUzVHcT#`D+c!db~xU}M-`I6-q+84>b(pu zvqJY8rMyGSl-u*{eNGLi;$?sZlx#gl04WclpcqOqIv&1ecmZ@#tQji(SgyQQSY~LY z_)~B7tsL6#*OY=%e0UhT7hY3}qKE&W6wjN)&$8?2VrgF}!7*7#Hap_MVHVjDtKHqh zlwZ<2m0u)vo`DB)OGRqxXtqz674Zw+C*@65lup*NUQQit?`nz1Ln?KEu~shcE)^>x zXGF=mySpbQU{lQ5L)i*2fvupmDtW;?krbIRRKB{d*U6?Rd3ar~qyhV~`4rigXI)w+ zi0O&C;2#C7_p~}HOly=2Qfc)|rEi|-ap^vqH)=f-nEo0thvy0j5mZVnRJ%rp1M-EK z#T?ZE^@*xje1cJHX^t3O!V*eq!Qxl;0CcD*crH7GJw+DZQt5Em)8wt!iSe+HGGHng zPdQ@vEWJ$@M|Pdw6I6gvsz(qcm5E2ycKAZFHwYhApez3cEBPZK5ei+GiA;67$n|ZZ zN3*eDEP%0%-XLrjawZ%oa(y|5@daE7n~H(yrr|bX2*7&`bfD@)X03h!j(Sb_XGduD zmrHD*?!Moe<*NC@9);W3C1SPq0dcOxJ#3|kdF@C8xDIq5DBQ}@Z^ z^MyE{ypKU(9r6{&y>srH{l%$aW!?xThcJ#KZFPnyid zQS!y>#lU<;bi`F0Xgv-Guut_BkOB@skE?}6AD}#sKF}UL#n0+x{te=!Bn`}%CC54d z4-i7DU>jrm#t;v6^8OpJ@^}oZ} zs+Jv$^Rh@*9~9iZl`3c5C|1Z%3+-Jx1BUZbf>6ltcHb?ditGcNz#v_W%~y(TCxxzk zYSSF?9Oz9t@Or-^=fGk=rl}CBZVsmlYX~5#=gWxmFy_{Aa-eM2s^6vBpaw0JC;*ZN zDXvwV2Xcf;0ezN@xUfD);5s~o4CgFG)F<$kS0)vEAK3CEcEP;Dx@s_*(XN_;W3r*h z-p#2wAM){$Ydi}Gke8&fm->!6&vYyXWfr50n=lTR@5_3f1RB`ToyR`IKt`xBcIX{1 z$o|1xQKH(y#R5;BFcrDJR#(r)WT85D(N#x>kfCI@8|%I>Gi|(kR;Ijvfk-udBe$Tc zw{zl~z$^~}cnY?BsdhvW4;`M4IS6o#azyDZ00rc(94|aB>OM}Uu=^$8lpsq7%B0@i zy)C+i51olEQJLSLX`Wq}$r7RfXfS45zpJfI1*4ov_?p5v4O2tLsK6%|ob*c-WWAZo zxC2IWanL?kQ>TIO5ma0c5YfM_pr`~7VLLEFZqDy}Iv5qXxdQiWXbRZf1Hm4hqb^*` z3$D*VjJ|Vl$Z}8$tf)Cr@eo=q=z|YJIuu}|WBJPj30Pcaf$9B%tF{B4g^?2`%DybbfCJtVG-TP@zIfhU1X*?p10!*Bc-$0p6TQqRXznOM*c7T zp&v>Uuu+LyO&yi~Qsl@uv?#TRu^2L$%AqgE0 zqGNYJjo*Pv96GA}pK^Vf7~q`Axsbi(`nD}Q*-!fMEL39 zYr@{$cg=n$hy49#Mvn*LQ!49}?`FUe)b1++)%#F%DZA-*Ei| zTJ&uLlzcnzN4oqt0nNzCjxZ7{fL1h9f`veP@L}|1u;GM7Cm{?9_htJTf?R8{YOY>0R&x zw>^lV7w9XrjZJ*w9z8S-oY{QBt*_)ep-{#JzduRYZF;=EMfwq~zIcDWr$a>J*v9SsnL_=@ic+G+epSWCt`iPs(S`_>!1*oJp}_4=DiFi?e1S}8uE zFyzBIc>HEO;ro*BIDuajC&#_(S9gf;J;EFJ^UrGDC9dKe^u>hoiHZ3?b5mIT}BTJwv)G0%8Pjs2B-q9U*j1yA)4x!l;j5&6wt zL9Hx>e5`e*2d2hSJo^xNi?%Gi=X?iB1$t34@lM{V!A*t9d&3v)!CJreHY_$ryg4cN z+}z2zlX54X<5>JHd0c_(ZKUlhaQ$j%MkCJeV}VwD8U8w4+sZc`gFnDj8soKX>4Xbj z=m3=w@eo4}^P(*ddHhyXF8lbd25GAjS4O68kjtw?K~zG9MVjwC$tn+3iFQ$4aQ17J zNQ%03b%RWFA%=PQQ*y3LJQ|t#qU^aucyh94?Du;MuLS2re+}k60;i2?_JP3`Z>Pn- zg5HP>oJu_9y%0iKvW;mws*(Vm;?0hlA8ebH+?rX$WxbzzER71S>&{3 zNDO?@W?QEoLoiziqR|$kis^LiD0FS{wu9eK-n!X#tMl!x7$%gt^6iO^>}}WWgZzr@ zrR3Md-2v(R(Nk?Ad@t}pD7H%Tpy~CacZG95bnVSz4zQdN6J$9siQa&WQpSNgRpGip zt84Z@w3kI&T@@l-zpEFm@b0=f`u;K9ly8?=uAeA+MAjj%L!sy%b>vgSvKZIH@RY?V zj%#?z(xCfzpN%>q&#M+G@|+iKy-mp*Z{kn>F=C@55c;SLFTb^aDrSnokJPC$Ny+84 z$l`~sgTNGX#f#uL4tJ)be31pw>v%$b{gQ20^!FR~`{m-VZ3(eCr0-jH9hD!}+BTT> z$z@w?X{HMKY&$*j zjPGSVe#HRDW~KV3;Q+w6u0Qc;h{Ll%t%6?R&Hw0YIdrRSR@7)5JkQGaJGR;eW@cWc z0Zt1NuPuCCTdPX9_QX6eU4ztcYz=$6$+49ZHGhu*&$q0GQ|rE0Y#pM{{Ot$-oojpc zl69}xvZbXD@aZg@=q_`%*>WR)dR~@qvz?w?j9xP3PmcP96{LPEL|U{om-p>14=uL0 zlTkONr^*X{K_QjQS8aJ6uTKQ^*C~a&i!6K9mXOS`a&17ponf?=v04;I%O_q%_2$vP ziXI!ic-M3Z@e7643)~GTw66DWDs{|neTZ?R)b!7OmMlltS~pjm!?R{(*4^vdv{q() zPo!M-nyqvgMG=isevkNl2*0$_LOS1W=4WahMh)+^ zm@*`V^u(nj;UN$%|GozK(VMpN?y=sYwfj{mZlip`Gxq=$J=W?zMw!&QwIZ>vC&tkk z?}45ap5u!dXb=W2k+)zQ86lzu@S6QAnf9G6A!_8b{nGTQtxJ^eq64ySr){XLyHA)q zf3izEA=aul72ZvI+h%n>@d}&J(?@U39>AH5pT~qb|2be7!&o=?4sLKt0VO(I1ZIp? zd3wIB=}65W9*M>EH1%#wX$L(3I!xGXB7Tk9+i4CQ2g+-ZACY`H=ibl0`{BgOva#N( zhr&R1_-+NVH+naLtb6|w#bFJAVL~|r>^%X8o;tTS0que>G|=WvHGr0SVJOhLywft! zE>lf}1C8+bZ-7QG`9!$h*|Qda_Gr7-fmYNS(5#1l2rss+Ksh^~-W**;mQzaKOR(5B zWX1h^Y{~MZcWf8PwhxNV^7eOZ6UXtzDr6|c51gRPYs-q-pYZBx@fm(d@~ScTEan7o zgHEY+AOYTtz(XXbTDjm0Tdxk}SO&Y6Q+L^Nx*pBH&cWsM6fiKi(box=(dp_w-g-#K@n$U?9xT$@s6!`3mO~`b|ry7}_JkLO;^CpKP zQ_&kOBU8^8{vHZk_G+uh^hH$b$V3Wsfa0mIhEd>IjV)5(v3tWnHf^N>*)VJ$sQn%i z2u!Pc{{Y1)mIWLLP^3YD2RAnX?TwE$(7rs^0NV12p+GBty=9=i`}~PO`zsXq$}6n` zEjhAvpqc2S2i%+jSTGM9qrKzZ7MWmc6#DC^ruB_Cn5nzwxL{DG?Lo3wv$Xoz|Ql zpCA@`VsBTn zRwTluzvx>niP6wPv|&X2_P!rv`e(K-TBzCvGwSB@R#9-uXSVaCbED{}6?U?6?=4Rq zmG^vY8!vm;+u}RT4%y;+d1!Ir!vBa1=TBd3c^(F=|9j>k^|@B( zVcyZdFc0;g{vget+q&s_$U2q$KoN2K^O{Ku-S3mK`Sg|M`_|Tx-<*%U8{)`?RlZInB}W z<$o)5ysFa`A(;61s*ozb3KLg(ZPmcUo0m3W;?6jQiC-^Pn3&fZ60U!=2?;0d&`3Bt z-$25oGeeOuZezK_K}`-tb#*9gZ`)Wz|G-$pz$_VN}vaF5mcV^t!+qqZQvr9I$F;7)|O>V zx-RY-qVGNVZL>-DeQUeMI`{Ai_&D{joV_3RfA7Qc;r+JWoh}KP|D7x3W3^(U={srK zB8JIX2W-9KriI+^EgN4F6C)q_N#@pyp|bBm6x=Rpki`dWm!Hv16<1Bf23rV;W)m)R!e~8l*iC@G$7*e>l%78Azu|0n;@&&hAP2lEQd1Ov11t=_R{KB`O0C|i zQRUvfip|sjv7X;|O^8J3~ zNkuUSBsYSbLD;fV0mK0XN;7|qda8tGpq?tyYzHnI!0j9Y+)uY?;2s-p(CbInH?U}G zQnyX`gkg@}luZ{;p12-y1hQeLt&axy{3lulxTEGoV*V=t-}FeU0PlocOPq_A0Dd_D z&U&h$0AKVr06z8uzhA>!)d&uv@$}zAJ; z7!wy(S-FV`WR!(MZ^b+Xy;<;N0($A$bm|h5sow_-o>ml{e)lv%GWJCc$zIu^kgPqe zIV3kf+A<{LR9oQ;;jdUizx}IKNS^a~>yRAV0z=rk1CU(4o2y}u8Pu;zqc%Zu+9C}} zVB3>^1;*{yDurE~769QN={lM;K52X>H3O9DDbP$oN-4 zICM>`Agpd^9fVz5An}OTe~<@{*{r>qV0Q0^KikGePHd3bzu30Ro8J~)<3n6gkUN{<;O+gZtt1jy)NZG+%O`%dofp0BdA#4@ zH`}GoiyJV)@RFh9a7mX8EvATTDj8bNv#^q(`bucYP^}kfTU70}qVEg-vNQ~Z=Vit@ zg#pgxb+eLt$>+8q$MC%Ogk>5vG1Nc_77We7WAx7k3x;O$J)>Z#YBN4ZZ7Wdi83jX| z^sk^(T^+23CsH=-vtYFWWkSQ806UJ`&NP=Sij43rc!PvZN1v(+DhK*)NkiBo4ET@k z*J#3Cs%Id&DcQ7<6LV9)&;_lSj(3<<1<+`6FL}S;);%ii9%G5+x{n%EFkBy&099-n zt5#m$7A`eo`In3Kj4?w1S|Lc)Tix#H9jT&M`+t9m+2Y#9wmZg&i)FvvqT?M;BZ1Hz z8?0%Ua;cJ_Hb5(CjPn5K*BR#ugqVt2<6OabJ5JP$DDAoVnnVD6y44=jpY@?R!Z&4`oHNC0l?!4-tSM7g#)xy;AX^^7ujQvPqR6yX_G=?9 zjC^;GT+&ALKI7k5!zP~21rUm|zbtg)L8Uxgh@JP9S0nD%G3+t5o`kvpT-4s6P7tl> zx6a-p54I6qV`IJl`p16%k_%;SJ7K+m+#Xq)kXjH2Meb7y+>4Mg;yR0W%iK0x=0h>V zstXZTi&y@2!nR^WWakg$=C)#9EN}R& zkH0UoW5vm8`OI8dinu%9CcKWikcbjh6w1~4zE|&;6|tgkPSG{&#H+1TR1C%IunrhY z&qv>r2V+G+OsseAto?FCJ25cYgT-)pZ96fMw4E~C$eIx(Z=BbVUIX}r^Dy$pd986j z2WeIjP@LZ&uWT=hMdx?TT-f4TI~F}w3qX&H5gJMgf3Pa?X?rok0L0ea($+zo9O>LG z&*~s9o=WiO#SHZxS1beEL9u2BYw;Dc7T**npVQ2uYB_s@Q_U}`xObMPnq^cy$<8n! zIY)NvC@xRwWz}5KT`Ce)Y^C42XP3sPwpO{Uqv+oCDRn+?dB|)WLP*6+9mTBZcV+>2 z1L8ylf!AXoG*+rxtW-H4>!7SUDT3+bIc)fV!!0lo-?1?!qC2Tdm zGXk<`x#`ML2t9whuP}4ZNlMgl_UJuxA7+TYJ*+@l0YrG zEEKO(wdi88Cd$jcR9w*+61k&m!pH`>%p&qlQ#ZbAK?F|!SabO|Y=J?ujx0hlzyn6> z8gkg0f`$q?!$twQ0SRJ)=|Z_U0r_5nIrR}Ke*_&1D-m08IbuXv8RdNzqqSgi=G`02 zs~?L~?|kS^zPaQx0eLzFk~Y`}fXWVG4zs)%NhDrGxi^RBLNUQ?iNYp-7Hg0RR*}$0 zaT3xPI0z=}vb_L}4#G&oN3QUmTJ^P`Y_3sGu!<|9aLQ1Ob0g2YR3>y4j*BBm5_q39 z!e1&1{8gBRpaHH$JKU=9n!1GTGikVVg?I9;U+cnayxb~RN8z=cxWiXO2gb3wy*wiw zWj<26i8T34=XgsdgU%Qztuz*+RvO_GD3!(z@;=xXfP+$L@#TFJV|?Ni>`49WOf1$s z+f7)8l641N8}`8rx9%aR0OhFHjPZD4hIR{$_KA7$1~c>BsfeBQL`3Y|S7D&>ku3_1 z)4By!pBax}W$AgN9pXKFZI^edsJUv0h;#3a2N;Rhv`P9=b{Atl46jCpNSESEVMx~R$3Aw2Cq_9iD6MaG7q*f8P)?x0eNlwUmuy!E zqqjQKmi3+y(j<3R5G^#e=@e$`LG>XOh%;W16i&3Yt$J- z|0YaFL<|az6<@|1OIE87fa%d;%Q9hHxL;DC7w$6*hb`9iNwrwdr(Fo|ZXf(G30Hq! zHIxK|?ol?=r@=mOwsNB7RViX-cq|gCc?F7j;r@XX;eo=lpr=@pGJQ~RBQewbLV~CT zD()untxy|^|McjDyfam#AUme&?o)&%^#A`GBL)-!wi>ESePrp`2+%4_6ZUrO3B2b| znN%LAt~rF1kq3&PRq`9q7zB=U{A`qhdoNA&O4IT}Q)Xq=G48-Q>MiMF$c*_$djEdu z;#^CNV1v*Ii#(;`n6FOWo{oskX{+S^bdetQY480qzL)3&NDu2JN=%#O>RwROuH7v6 z_7W%SK(ut5xKmooQQrvxW*y{NHzLvxrEHUbFCOji;GW%O?PEP-<(h%w@-uo+AdBry)RQv52MxD6 zR_RH@Mtn$S+Prt)0mkMYrB#AWirrqN%JiHP+XO9Lrso{ottPEff+;9++m8})u03*9 zKhdjLXBJkMnyT`|Hmk}LS43rfn^BcVX%9_Rd6f1rEE?JatMW7n!6XVn?-S|VWGO^0 z94m&fnkOgpM*{o3m#dY#e7UK==oou5CVIMgGqzFr5ijZOFHY%nFjFZp$5id32c$Sf z*fN88IGYEfUb_yATV>+J$5@E7DEpwf;w(A;6mi;g&a9HY2Fo%gVanVv@iXm`F!9sA zGF1FDsj7cC|5s?>}mYCDzW7o&lnLQr?P|WYd8U zf0XM62x|&_e3vm}$E;w+j_4;1vGnx>dD|d+l45e+abGnFC+$%Q$<6^xO3f7cr*1qD z31Otm+%WrnAP^-7$KD-ZHnmW!Zc-Leyk)i|fDYr4VBU>9IXnt1BqvLZk=E}--;A)p zFJ%71^fPNx1lt7;Dp?14f!)zdED3R-P;KR@CBa{^L?7Aq5Ii%514UxHASue?Lt>JA zJ=)#@v764G*w>tJsup>~W< z^IQM5)-01x7is-(UW>^#R7~F-GqQd>Yf)TK)wwH83R%dU)`wZudr8;n$j{$jmq#&K z<+{_wK$BbUiM0<;8qcaG+~#a{mxHBFFD{eWK^3vSPV0LF7F;J^5X7A zp_0Z*KK^;P2Knt^F}2P0dtl4&k`soAp{8we=@8+FyB?)M8W;1a16_gUxMX@no}4XG zqGHZJD#vDv@sSW0sJPozuFDp~JEbbM-Ke+wq5L^poRoS7(^>^xDMsEwL+4zz#w>G& ziXNr~@}i+4u^(|sasNWMDxGVt7_Aszn4XEezKGFPs%FM-3;oDJVXnaPjo-HuwNq@HP#M~1=1AN&y(*oTYqY>w2s zU>|ALP#`sf3CWeS3|icOqmyA|>Erf8)k~72?rVDhEn39pAPt@mK8syTEBFVJoPg7r_JTg*D4%19G8=7f_ z)=ZZ+(@ZynX{MVE&9p*mrrN>9F}0wXKA9tC|E?a^^8%FYyEs?$?xAz6DFJS-Tn=L8 zrjuRYfmjzAxm}jQsTD?xF`XLZ+qojwaediKW(Lz%9W?28|Mf`{WVxq4FiNmH_;Rmtp@Y zR?(*5GSj&fqe=jms~X42no$s{_PfpU{i@YS2em)U2Lq^4ajq$j|Socpxi{$>9 zL?P%Eb3o+g%1orAZ=PwMNX`7oj&k{Ycbh?pH#&r6 zz$G_;61flVE5bg9iv!D79)~Uk!-Hx8V9tw7a{e%C-OFbk!hX5Je2>cZ{>vTa|HIq6 z2R2n~?ZZt&p#|EcKp?cxre!A-xwV1{0@^~6T`X7>up(+fgrcZLilU+^wm?Iu;t?HG zP&}fCbL41!MLcvxwsIEn`=p20B6PUL8~|5uT+y*!sL>_ndcvHoq8L>Xg~pZt1{N8zKJsHP!=uJ zwKbsq9;x;3$xh2(bE|Re2DYk4LAT(&_ygM+r-y6&%*j2f#<7=}H7;Ia*0{q+)OhZt7<&>k85mNYk%lI8@dp> zM!|IK7e~ys!{$wf7Wir(A_ztdvYS)Kadq)!1=~dxxt@KnYfHo2NCG25Z@OFa{*QtchE)yO}ij!tf?(P+q+{tH^9B zKNOQR>fre|MDmDCf3p0P=>oHb%UHeXsAw}v%WzPVmY1GGju-AVCyt#WZ)~#la=&%&uj8a^T{o_)ksQBAbW{8r}TGoGE&HrPxR@Q7X_2Q9!G#;|Ri- zB;(PcsE)Sl4Bk^W4%TfqzZomC$7`vbGn%J~8pl({YXg!wj&*;;z%pj{e~;JhO_J*N zu#w#sqVQ7f+;cg`_5Ud8sR1Adg1J7ER&RmQrP@F_UJG#THJ7-{%uw|v5pcb;7^{U& zKL_}dC(Q|m%>gP_d+lYK$8`uOfYmlvPez^}zyh=OGHsUX`brQ-Z&9kr#YzBN`uhT) zy0eA4Db*yd3xl-POV$469}0k(;-3?=5uI|`3{l#+@YY?c%eCUP3$W39!6DeOT3l(1 zncbG6UkWh7{YNfQ#2uGwH;BExv961osEzH*7Ue!EH@UbwK~je8;&Ouk@=CN_T+#bh zsEZ$;s5$<(7aFaveW+wGY0fK^<QUjVliwLXqZgH2sbSL>*T_wSwlP%sKxTs= z`ScZ9C$3btU7_Xl___iD;3+n0kE6Xz8?~`-MoHsp8_F@ya@_p3B-=X+rvR;@G#9}4j4 zb}mfGMCGfJV((R2f9u8l)XUKq>kt7b4`|UF3y#5R_{(rt&v&%-&dV7 ztE)xe_k3rYl$_tRhiUd& zf4%CKhU&yqJWa}Dd1xy8OtV`qxY1k}9KBX^SPzf?K_p$L4X}E$Orw&^uG1>5lR^QJ zHbWa?oww>J%|c#mtvVSH&&_B;C1=DRqSA76GgNkWI|Y@e`kJU%pbq5-5w~9tRA!9* zLELw}w#8B|F1-Qjj~_J?qa8PBW0Uqn-4!u&xl;7J5$q@X*MPX_My*?yV(_)!wQ4!$ zF^PWIs-L05mzpXN3`O%B2HpPmt&$yay`zte+ zxA!uu^X_!BI!~3MI)lgjAhwigLtC^;z&VP9ncDOuPMoIM$y=_siHe!1!y6kUo9--L znyIz1_Ja2tGquZNi`yu}k*j9dq~XXOa?-_XN;L*wSX#k%skY8vfps-5R`VncErfk) zJag?yvE(K#r%UP#^h`+VoQ)`FsN`Q5_l>~fZr4rP#SU7sXl^Cazd34Np_xdhwQgOk zcxINS4a~R>`6&aC;YoxngujRZNS4*y0Ob4E+J46XB=4+8ZrWl1M zgg^qaYm@UmE4<}eM|&P3{nh{^L8`UVDZWG&TGqX71 z(FUZqos7us_ve0N0&;5TC=J2VZ($yz+6uiPXB2q>ORVHj2024>H<^5 z2C3740!@Cw7r0EHzr$8FhFR29DqE2GT0gwCR~fbj8DB7OEAxVmU}-59xizaK74Sr) z<_a!CfZB~0Gj7&y_ZAL3ZmX)qlwaU~L>Yiw7qR~+ZOlPRq4`5;|FIbHl=()pCvX;$ zW*kkUj{9H0^JT81os%h*I zljU!WJ$7)b!?|UoABNc+d|jv)7}~Xy_t4m5&IKP9{1CS92zzLp@1)T=Th$<5`1dup z?+8k*KqQG`lbOfN&jR9xIhy7TQ_wbl4;Cg7n>;Q$EvhcVS!Bdy;uv;z! zGzx7?KrzDdL>1r)6Ly*5WhN}oVHg$cU|XDMWw?{VT;CaoK-MXvIqGtTZAp=G>rX)NTA za98#BuDhBe4+F~o91Tx2wkHr3zLMe7Px5%3Zhetmf1`BQVE0n?SJT?$)z~i`<-?%D zEXu*dEYW#u+W;_HWMTun=0$PG?ONV>l2g<`V@f+nPFkR}OWP2tEs8==vjH|Xm0{$zV3IYhvw*6Dn1j;*1h@>GN7>zcm$^9mLagSk0tY;X^Fv zLRauR<|3h%jWQScchDKup~B`OT_fXv*IZ=zFBa4iYTUnSF7m~ZINycsao3+P7fDtt zJ96%HxMY`91U9D-s;Pa_S|q)VF)#7R4Ai@vUZl0izLRW_fNljfIB+E$D`X(3+mAGY zX~@Ew{<%2^B9EwxhC8(0rGL_HWVSp4_at&EP>w3f)6mpq*jA)7&!=?~_fd(UQJ#9m#si4V` zpa7K{HA8Z*lu2&0g{@CH55=K_IVK^ZvJH98PSXsdk+{5>HN=-6+t1Q2VoVG`*oI7u zME&Yv=I)qyCI>!S97g31$`T#L7hxKMB|#z(WtVX#a*MJJIay_HO;(l`!-BE#FQ(#N zhB68{h^bsCoS-+x=%tcb;n&Q-O{+#+jv9&0IWM1K8Iv%-H|iEKE{s$BOr2S08O zZf_305COfwA;$O@U{w9ZBol?7QIs_O7yJjhWAIFj^F|(I4p%8S6+Xd5^j3BfsY>|f zr(h_!2Gs;hkRqIM$@@Qtf)Bx`F;`iF#GzE*cfqGI;DQx0;#Tq6U7Ev^DkhC}cMu2f z(&D^i-p2m#kQdoGPft@EG+x)jb|3?fBl#2=W|s5Fw3DVC$TFZCNwSdMYm^ULuR9PV z@0A1oHslwqkB(k_b||#1${X4L38tcqsQLwu11H=CX{z6)@1cG(6qdAaw~aC0P!&^H zpT!t2C?ATI($=6XKNY1B8CEw;HJX9+Vh5@2&DIe+kXs{mAjz7H4-W*T)kjdpw4eA~ zH)RJ>`pB&J90VF%HU)>sl3&%agyZ^7$H8frF&Vkjrw%cw@Z(x97(zDy;es)ViX_29 z^i3CcR%z+ow!qE6BQg@~fhvJeRngyoDt3~_Aoau7s2!MGBrv`PV!mJL^o;5$*fG>s)M26rWgS`ylLLfMB%Md%Ty#YZg})ysPPVISCajWdtXP5f;U>n z1Rp_)-~;@-SEiMO;f|CsVZZ7CMFfUqN*j=Jw=c>DZ1ZAS)UxmBV9`JgsExXjB*#L!36&AO`0k zIqmz`2z`N;>^-FFAZtZKkmhi>{~b`BvNU{P2y!)g5l$>W1rK%%S>TsDj)Z~_!iVM{ zn|j9^@aAaT+L#{6O}zbch{hjfEZKO&Y2q2Uh`a?_2fc9y$;2{&rZAVGg*F@q9a4 ziwqfwFT)djB~E^K8z){0VsU%Sh^tM4IYa!KEJk>lHH&GWq}`rhE~*J>k{C^&2_>Swy0*3T^a#OE{JW7@TPH2@28 zOSSFjDz+>~{HpUf%~11r2D|ec0*|FU@f~ z+qwOP*lVsvfn?0Zc%wkntj~04-RR{8H_rE3<-R@4cZo=7t)wjEI+LzF>c$sZIv=2xr-%S<= zZ+E9T$XWQq$y5V_HS9Ew{=gR=Lf1CBUa-cIy87=$+3q9ujbq`e#r8Iq;m@v`R##OnW{Wk1{+-4F48``QuM)K~qm{mYht zs14cOE&lzXJhLZ;d*BwNXAk7$!%=`<1>&%B0Gy)Fo$jt_y1#dCWElF8%l|{95=dm{ z!4e4kG2+@g-L7#e(8cN@u$aRgf!WLz8I}^}Y$Ctt$lyA%yCT_ooVH;a?C=x%yEGHF4c5=c^9h~U-q05 z!oaT-U;YYf+z+m!l5~~W>ve0ETG6J$ot}(F4EI-98ZO$ECf; zLdHNO;TB*~p3OcyHc#AL;ZE)Ib-u|jCvv^++k!p7>!HrNBdfqa8-1KFFMuODjW>74 z#rS%Pk1E{#tnFV2h_>_GXLPz?rJD3Pkg)J9$D4dmXml36S7vo;>u!atgKdEKR6KYy zp=bKAVi~Ot)%a>{AXMHl>VX1N1Nq`GV8dxe_6?K$eDsB4KLc=vJy1KY2L z7lybwrk_${dOQZgec>U^o=9eyoaJeM)+*c@Mf<7YYlky$9pZlRoCP|@*=}RSryOE9 z5yp27{12$H{Ip1{ba(NRx3l9?-JOLm8<`!KKQ`L{xXp}n;e?qq-;voFMt^2WE@W~B ziK5A=@@z{X-%JMvPbqBi3^4x;@?(^K3Y6GQ8^OY?rbA z6Ek<2L7_i7ciYnX!kXF0d}pCg(udl}B@){;+A@4ugOw}=Kh|J1zGe+LP8e)QJ3&N} zqtyvF{6s~SyJL1ARd8W*%0sBoF{c(Nt{TOP>>~N4lynidp>u~cwln7x&Mjmi8>KS9 z-}R|nFpu{|=6v@hQ?d(uBb)^_UKbGeijyA z3xyp=+De7ZhD5RXt@ISJrrKTHYdtmSqkPX~;Zv|}VKzSejq?3t0Gw1fQd^1xH4Af- zMBv8E6fwrw-O70GO$D%JjRjlOGE>GS4UJWgs9^FbLqHVg>aWDOeswT} zODl~nkuL`?vUZ`;#yBqmqJ0lB+m*~V9F@X9dMBmFTzrknHCUG-{f2G;_HH==;h3z` zPu4k&VE{qLa!ogiO%U{gsA&|KDcLiPxpy(oxn6Am1GA0Z2!xLA4U})zoxR*R`Yuqp z#q=p6%K48))wz!7W^Ru1;p}H*Kc}c5>v#mgM3}8^9Q_{!$a;RVIp~!^l7YTS(lym( z#Z#?ga-X+AU~8O+@*9tkbZae*ULpf??L$6BsVT}6@fy!*ytA>~j5C_wbryKD-~iEn z`f*jTtW^eTB_+Y5UUN;0o@(r0uA)$2H9{~%kXvjD8}>Dwy>D48aI_4s7r1*~!e!RrOgpUQEUo^S!XrkESgwW}CjhA{ff~ z3=zr$^laAN0-2Ce6zTps$hR!pm=B+-&t|{Cl8TLO&vLyNGS0s@Nfce1n3`JbL5`~* zMqPSf!T(`_?}T1+0p&2X)_?2bgvSyTm_?99D-dGFQl-%Ged?9a2;wDFzGFMeziNu$c+u36)ZyzYv8Pa-yFtd+=A&Q9`+jSN`` z9t`1ECiVK8I_syC{dN0j6DaSzPsU ziL-yE1%AXDYW}>IQaodEy4OFwWB#H^X^SpP*L|H>`$daoit5GMn}`l|Hd6r^jt9N+ zcne!)f4GcdkE-fRvPzhoQC^rDAkZ>+^9SdWCT9zzRRnB{CfSet{mqhaU4u_Y=);Uzh$ZvyQZw#oe z(yk&@|83S(4D2i5M&irp1qLn;zu$6Io0z=n;g-CuV10Pwi_9|mjW1&JCy>$oqSbxw zN!}~C3*vjFNhiXYX~50<&E01pu|YC~XMByV1r=qIe3gS3xyT>zS4U%>hpe~{|52JeeSl2c3iP2=<&s@u10+35pnE3Jb}i# zHnv4N@V$`3o5QtE3+&`&75d6>aReLvClO*ieL2;aYa~(y1NYnJUje?ys}T}w6D`UI zC565{#!7n&UWQ}dxr^2)!q=?TE)LTdTxH|ks1XWGLWvc>SZ2G}nd5V-OD$VLZk(7R z8E`S=8T9ku5gs2#2II+&P*^cUFtu=Yyq&F9R{j$5iSRWROvH{otZ~Fw=UKK|qHFp*>Kpv&SGn z&RVQ6&04CJ346RJZXnidh(U#tUB(2aF>ugio}>tl>XRrr{v&*!iC&i3SA#NR#2F8` z2YS!$3+hFPT~&b6DORviLypb}44zFd_H_(2Ns(gYF}1*U=QcG#$WqJdMo+bUgp;j^ z6lO|fp|gsO{^^QewM3TTAjNXxTVb)f`S?K3D#S?+$rljHh@zmo>(%s7lNI>vT8%LkC@aG(q9!`# ztw1@^u}}rdx)2+JV3Y=(=0vw$Gz8rpS*6KcRh4!{HJl=UHR3DRoQSI;;#v}MEsMBT zMqITK*J@QIdMLDHl^9cjvP#TCfi6~iG?aqR*BdUM3q+4X;!J4RdVJp#TYWC zbWxRh6N^iB-BQHk98rdEes#IlmuE*xQRCq`b;Bu4?HGm9Dv6`v-OOiUcWa>&-g;G-{;aZw&m4->CCgOtA`%To>%`> z{BYa)uSO-jT9EMSsDuv+5`Ha6_@RJ~Hw!9%J@chAkyU|h=zjS$I9GJ~^j%I#VZ6Qk zk29z~rBc;4pUmmyHW>P-*>2;`8}^GaV;t=VpB|O|XFRAhP~5vR<#Z?KNzB23N+M5g z)^p|$unVKL4Sq3w9>SNu;W-E740QW*ibvvk;$X_|+asW2X%SE&Y?vU1FbfEe{|yr7 z4ntbZ8fMgXQb>P5RkbN1qeD=s$se4qCMVUJrf;^m{SkMHmp+uvDUdTFN}?XL{-6^s zW{@#+0OTBZA_9i0LQHW3hNeKjV2pEpJh;t%WMKrqwdZxzl;gzhpUbC%} z>oqELZR=)2<+)a465G1VT2_Y_Z?W*?GR$VrYZWd57QgT~#?0`t&9+Xh+aR{d1sfin zMoUyL)>^PZxW&4!J(QXpMH`S4i>bp`Y<<+7;oXd#ju(J6O8rHz={Ke|ST}rQTc@NJ$lAF`XIr;i8)N4e8zcB~h|w*jBXigho`5hl7Gcbw z0)Rj7GX#5O-PYypMs{3bQ%I6h8;F@p^r3sC)W#7UkXYgvDPTljY=XBcu$mzDN^S$l zfscf9>8#Q|N65xn=r~6Cex;~go5qPlN}d%I$gn{OA&QlO0^$OPstb`pA*&!oASX#z zXh8wVoJg1eWF&cv_5-Q)=iAV}{lN#QwJ@bZNwyn4I2`(8ntA^$(XjXhs{RW|G)1!u z{x4{TZuwt`Mwycoljn;+ZX#4VcC1;iKSwBtUf`!MphaVXvq5RO>0QNhU3$$;IK-x( zw5^)})fw~|zH@ZnMe)#+-HZih4jM*Y~hLp?I+TI)vVXgx{^EHMA$0t6uv8d@_);36GvBF>^U+HG4BU>RhJB)v% z6)Si2Ob~v(&0o7gA&pW<~YNS2A^fTl9})nA(evDt;|`XOpr@_SMSc zv9qo-CL|w$zTjo?*nO^)fv2~w>o=;6_;rscn)18WX?u*@(4 zEF=K?f}*&J)5J+gBm|O^yZ}~#-k~~$ZzmdrERBqd^+l3u6Re1d=@U~Qh_|h;)3KpO zslv8yEGGQ=FYS6l19#V*kPoGEskQ{cVqUGgy;p{0BUYCFB0RD9L-rY;nn_$z*i^|& z;Lg@xl93Qg&-m8N%z#(@mniu?-3qM$Alo{1-T?9`3jbc7jANv|C|^PifDq`?y%{G> zFDV(A@~nzmR05TM*m?)D;%)=U}C3hPcnOy|ARGVP60(}5cw$4KWi|FR8ce(6oivgN* z7KStCEb!q%SP!N^ZJVF=1644X%m5jAwBY^g5h@F$ZaYh_JOMkT^H7HIe4?p;;U2+9 zt;O!^QXR3u$KPNMZc-ME6a-5u{O z$LQaQB@Yhv^vcBq6modFaPjgg^=)l}AK{95-X_#ft^<#w3LH%_oL(Re#^cK$4X~Br zh14j!26LykvN zsabgqvYHvW60M4L!4_Z<=F@UrP-JXsqgZ&aC^1oSXt@MfEXT3(h+YgxeqN|?Igkjh zS)yXN8fS@TSGe1cfhsN{a?7QGsj7|W$T|E~47n-*KV^^{Na#J=b@h@}D49bt5$Nu)xr2Y*pQJ|?19&6^Iy%I(t-BQ+47yUdu`Z8V z4?r{Tzcm&?xd`HZPAjRd3HCRI*yrOj&|d zU?o$Sm=Y_xurcC6N~<{N1%N4}avj$QFOC=K@3Lq+8w%?Fl0<#qG?@pMFyTF7!D& z@IEBDw9Ot%RHQ`Uzt~Qkx#o~KKVzQ!q6cS}k`|B=zBs_y5O zbyZZ9i2UmnoT&vnT8*fqd?#qENzb>fTV;|Kt0rKwaW>`}snwOmNdqj@W<#TKaYtTs z`#7)SS1(98rkxoXN8OYxz4>M&4LSNF8n|JhAKBZg_Ugp?wQ3BrZM>Hx^T&}xWRz1k z%6G89cYsnTaSDDXNg0K4(DnPI^Zr@d-3%l-^+wU|x1^)c(|B{UHk z37=5d`aO{fX~$}&NG07;q!RVD?hanEuqGj@4iJT??f6CsQ4Nd~5u!|q397%a40T9F zmpVbpP)cZ00u&a9D)e_{s7`+%M2Q=o#Rexy!eLdtSewg3a{$SA0Nw!*5ZMGrP7FZb z$UDg$$TF%I-Gwrv<)lh8IXMuy&wVEBRM|aD5F_f4lXEGond6Hm;pGrRz)-u)i|ipe zmQKkjl82Vk?ULR@iy_$Esocx3;Eaqc$0@JUz)~-FXqo=10`pxY^8o zpcFH(AvSeejHN^H6OsO$`+h0(oL_lj%8OH20iG7rZ9{j-ySeX^l+zpIrS2BuPhqkg z?Kt?20I4J8$$!r{rMErJHO_<~ZN$mUPR`Rzo`B>Rbvy0k8wR%#D^EZ9G$cRVtrIlP zl7m79mES+RZ`XNnvwgeZC8kC+zPgw@mce0wH^j?!$*1Inbp?k5__~u{Djo5~uT;vJ z*_gGCBDzvDxEhD+(|=Np$JCZ>8zo>Wn04P9Ax8%8t?89Cyt`BPO#}x)*343eV3`fU zay4=@`)fQ-dzQ}-dFybjbBffBq+kk=x{(e%QOn)^%1hy8oILrxJj-(ed{Lp|guWc- z&y)I^$HcIxNKC1%EfiLc`jsdbwArMsKp3`dB0$8ZXy(BwV3?vJ;VSb179U zRH`GJ)^w4bAGR7=lQ@dq&)KX^)k_OMbtB6=WO-zb9+re`$h3EukrYIU?IzZ%Q{ zM8kMst-@sW4V9xuDqx2mlS(s^M=H(O6g(2Zag$$-8#(y0iRR#IHUah+3NgzL!s3`i z5^SZ!HvcSBR>a&sDaPn{DGx=NGd*|$r{iFIMnP;G`Q$uot9lZJsu?5}v{Cqu?XZJ6?-Y0+MTjX4j>KMpAOZrKshU;5@ z?ugxtoUlN6TFFz9TnU7ymHhSWut0cP$>(M_qi}Gnx#1rc2zg?!wnGqClwu6m4~opM z$~jo|jhy!?ezw?_R%vZGSx91E5-aSlVykroq6Hs@&XNbUz>0!2wW=uZtJiI7-i_CB z;usf;wt{;^Ugy(3?D6kDIP8&U&h7Dw zunGmis&$Ip++{@9gfQJphA-DjxC?C$4&y9wk%Ag+4N9U(ra4OOUg}>emDrE#o!>|C1#9B_Y-xQo#FC;?qzj}sZa3fByjcz`piNOVnVQ)qh zZ*#93P#n=YP>w5{{tHD%oRSDR+$V5TMT%KGF?KmZ&BIwC%rm8&n~@t~?e zRe108dC5nLPjAMU=589rJZ}!PsF*U&_bRlUR+03Ovy+#eA;+@gsLZL`obwNqp8@F| zd#hcpXHSEvV4AkBd8Q74@x*!X!7=lBTXJzFV79?&B?g&MV&H9RBx{jNAOVR&j;*%dQ+WD#2r zJg?~G<}D*fZBY7Wh7T+@?M`x_>HeA6orF41ZB249t?rz0T`o@qMV7EU8dJSko{GT6 zTm$+Xpbu2ngFaMdCUFvHyz5TycnOJD`E#tTGKs^i=Iie<`a|L>gq@}YG0D{iRWh*5 zmD`QTEl8=~=!~p+`r)4>W^{A8wo|{LHWbMRm40Ed=A|ynX1Cbv1xegGq)baA45RVo zGrE3s3@U}VKN{8?e9ek-GX%-74}!C1l-+5PeLufQJrM$Vcq1~WPFncF%JYP6Jx-8T z*27@WvAp_y@p<$1#SG@6no3S}a0|Ojc?rj$pRLRH{ZzTfl2C7(ZzT#%eI|C+jYj{k zzL%$_CSB-A6T5!tdA2nny^XNF@4n#di%@f4BW{Y7kHfxn$dUU!`ZT5SFE{hLC6XYWyHCWc`(;xo1) zLd`fVtZ_MpSt?|mdXM*KB^e*>VUv{i4!(zFl~n)uv#}cJC=b4K^F$i1DaB211{V4- z-izb&pnjH8GP48u<@F;N?UQFu;b%*>c{~&@39E_+eL9@v{G80}Yn-LmI43%2xh6)g*1^6tZ zVvxxZ1l80BfU8G-3B3k~mT%-2%x4MWQUST%%%_;E{%s2IYEESH4gj7mYT%bw^xlJm zb&$9x4{a+oF)^qJ^<8WwC|Rl`PqoeO3qG$*h+^2tqgVcN&1L-Jv*2nJ9+t4JYl%B~ zIEsmBmb}$Pu4DYV`#2z+pwVPy;-I=lvDk z$uB8?Nqh0{lxAW*`3^z6Qwu7aiU_eOvs1!p z@=rIAKye)2=tX4bi_9%!#nq{SGw;b!H38uh^ZDm^+D>XG(4#pxo%r^Zyyb+PW1Fie z`W;A$!F|*)!NBiqRUadkxOa1>j>5kM$H&g!>24`DtZ=tI<&FZIOdU+Z1Y{m$ zln10-1lh$_`-&sG0=m&7#rs@ZMK zUWJ3O%7c@Oa@obZ^Sifq79oxD;F(9|a=|4svU)jk6+e>NI5ujNHjdDLxS3e!Y!l;q zE%-5SY&a(|XH_Mr$swA^Hs=8`Ne*Wu)WuMH1eD|;!Vz-d6fxbP1yKysqRzrQCLO%E zDxL^$!~2;c2U{mhj_~R1v+;ev_x{fw4R){hl9|IW!h@X zZ;EK1^X!Lk$B~+;)4aWx-5ykHD;2ua0&HQ>eUJQx_5KG5nVjYT+~5#FdSOmy0%LbO zavCXdkZ63ir-5EuX3nPmB(KmmMYWJRJmM@!h+|cVf>d_e4kR+w^a7Q zJm0Ro`UCbn-xqmgYL)eI5IBE{l7iJSiEU_k!%QD$rpR*}Bn&9}*>|cT>mom@{T0OYnB%AtS>%NPiZ7N+ zRobO+sQcG)`dF$>g9jyFcDF@KwHpCet9n8tqYMOzjH?Q{x0Kx&4@R2JQHY}CqAFs- zqXChC#s~Pwr3>@r&ivi6-k+MTkmr~vhFgr91+M#1I>j<9nWL7x!FND4i8i<0B-$=G zuqfr;9Qhiz?f46mR_znNh`JfKe4wZlOY^be@W{|>qI3z$P&6-&xQZe!9j@Sel2($} z75WF#umQGEIDN5M3Z+>JJ8pjAGPzR)x){hNkf2)~J7JM3SkCpVi2?^Oc8T~d;7+x8 z#qzrBv`(l;?yO{^`h8W0;b`fc9gQQ!OMBd%^Jpm=r(!cGrk5#qGTkL`b4S-ADaCFf zZ#s>T)0<2L`Fl4gCN6xecgp!#`NEA>ma7m1aZ$`%J*H6_{4;f>yvs zct7dbQLL`ZZs&y&$ksn_0W=`2jNn!(vz=z#d+***<#BMrC(y+8UrB``Ik~)LtaiTh z6AmYQl28wBuom!=)5yRkqJNU-o65DQk2?K&v*@IEnMRMQ7)TT5gaQ} zu9Hb?rLx54DhLrijR~2NJuLyd?1$wRJ2u*X;*L8CAAor1opLzkYd2CRsDKwKVB;bP zFpn{i(mbe0coJc(-!SO%5unBbBNU;AB%zGRrXh?3G9zS24LD)>1^f=U8_!)VDe9h* zSqFfb)k;s?@mL85MI$*xT)~fzLtab6HV#Vv-_Kn~+k&mVM=CVeyO^eZ*x_>*sjH$K z28-m`AdWYsc;SdcXTY&=FRfchLQBodT8-mpkvbO6LDgjPN2Uf-K~ivAq|ntBt@? zKxVyFV#z~D5Cuve;*z!u&KioMjR)UW^xVji&}`!25gkQO>gts%5GUFM-Cf$pAVcND zV}zV>CW)M$X&uLNFk+1Ck>4;a56U5`Ea4o08*D5{FHYC^8tJW@trdxe3!@SiS-Vu| zekd?SU`bL3+eoL>);4}c<{uv`UOMb{db2~0>|Nw3Rcc>@(&HsxW4fPSC$|^~4|itdAcLwDW}RL?SJyzJd6$ocwEWFxjBge&68 zins804zr#YbGuh|B(0s4}Aks4@XJ z7Zp{QtE!nCEi6ufvab*i1-jT*h@b)`RfxF)B~@4@f}o0>=}f8|YC*2jW%4826jd(# z4OMC*^-VD9L3ifGr^f=cSnkBs z;oPq@v4ADTPUOm8@Gi+~PgBY8k_B{m>X4Z6l&fbJv&1ov9gu42to+iF@Ot?*ZB$um zB?N1fC5QfsSl5{awmQTKF`|-&T7~5qZ@v0G-c!+N6o5ZCv%^lrHN6IyUU67jRt03; zPjj7L5d&0i5PKG;I<7mtR_V(ex*lX@nrWEIHG5dS#2R445Nl;%rN2o295>P-d&n}m z^h|AS4O^278*}3Vg^OajL`Bs%u0aMN$H4cKq%pZV6Ez3zC(Tth5UN~P*Ttq&!A7AjW;$b;}?6D~2~n@qS2uv~22 z1rNE9<6;X2hMYm|nfqiND~Y{j`vW#a7rvo=s9%lF^CBqhn+X;DCO3*+rF;ROUVV3b%=tYLHWD z*DCMmR;*_~M6G#RfSxh7s&^!aT?O_h+Tmwsp;C{*>HvugPRg^4qW7%Q2-~Xuj_|^P z-iV4$_rv%RU|DkIvUV9eeyP8k#6}kqC2!p-68aa5*^sNKTEevgq0ks4(DHmlNgPCc!?(X zzKM6fmK*fQxyQuZr!Y58Z05u?+r#y?R2`V--*IXPi~EG_Y8t9#Hai+8MfQDu{{X7D zX}1B*5LuwXjftX}dCm2|v^F_5cJAc61(I`v#9*&1E#Vcm6meUc}A5WRLQKbh0$arY_ zi_vLWj9M#xshFX5tEdqcTIRBSzTjCZaFAKd5(wpbb<3859&Bx;;e{fpRNlt&%3$51 zh^||ZOF@sV<+D%iNaf?B)Vwfad}{YWCt(M&&A%N@EU~u(d)qoI`%h7|7iu`5VPfIu zEeDB0<2T-3m+2WNP3D4fsk89CU4nv{Odn{T2qURDmuN zT&=(?>g5o3g8~Qess>}%Dma_L&_T$Y5p6YTYg>if;BdiX3F0Y4fX6Zb@S~aE`hZgv z+X6KtYoe-=2(hqI&_yOXu3MEQXBJsT){k^{Jz*PTRmfOCUqaQb?!V2G(t8fGs1IbB z_e(;6c)vs?P+_QpN)da1y(h&>;xN11W`)ukFbmaHq2V%%nw6QY0$qB>b~8_DN14S( z3eDx%s}F<=)fI>v+lQFMx5;b1G>5i^`lG4V@g@Q>%@MFSLqHlstq(*Y;8M|}5GX~q zQ3#YNFoFOs?8!z01vWH8U^^gEpiU(SQ=mac3R8Wj3XDP^pnRebFqBW20*4eBM!*Y! zQFbmMFb6?R6sQJ71S(X5Fak?tq%Z=@RA3YWE0s?a0;`oz7=c;^nh4-H8<>mP2eM^n z#62h3@eFbtATR*FpkNq*4e&-cG+Vq55CWqR*sgq{5ReQt+y`(|74gH>_mTdx^n9(X zsqS?sl0|bsM-^?C_=Sshs=%nC<;H%q?&nf*!gbG5V5Ia-n%5kZxj;gdk5i0;(HN^$ zH50bk)?uHXLv$M`MJ|CrZX}zrH)+)X;KyBM4r?S(28_aKIK(-^>>zwo6Nr68gvnd~4eAEF$QZyXAgXR;J`CB3>8Pn-1CT@!U%lQNY1czC zR=D8fGBmnfW11DrEs??mDX7H%rr>I`;FU7VaDS==#DZ6=tW|}fuiqeJg$u4zp;0y7 zu6)cItDCI*Sg!^Z5LM#}v)~e$B?{iDTbFBPfLL&;ijRV~F!>xt^0FsOutJ5Zf~8Nj z@=*m#pC!r%B$wba1u6ujj|)B^b-rzVpwPNX%Ld4jvs6SoEZ4H+0Wy}8kQZRC3T4S= z1YP;CWYece`3x|@Vg<5f(}yY>RkBfNh4EH^ELkdc&=U)AFdju6m$6W?gks_-7^u-} zdc{YVEF;+?B}>p5T{3(&X*-c8&i?`z+(m_j4+-KZf5t}?f2rxgo*63lIuW1>MWK19 z5O&ULy?|w>kkN=Iq+#?484Y-DElBvNAmJ$el*%Ol62S8$JhIW+vR`k<gg^)AKkji|&@8QYn^)$|;a=Q!* zZQd=WNpe0H?&7xxw$beT!e4&j&o36yG;+@UxxRpjGzLEkFz|tp!<}ddIs5TJ*iL-< zAuylcWW2mWQsZ*l3y+>#ld#H(!5-464!emtpGd9UO?ane1P3?e1O~`d?IgLH-IR3 z?Fok)Fnp9-9V%6B7$j+-A>74q3Kno@(Osw9cp%&>_hXgKdoFPBT3i-J0P4smlj`8Z z_?(iXo`KpRlP}z9hSn-DV1kDfcpM-bAOMhg8D?<2%8PRcgO8iRF%~HlV-2IiIW;ic z4v@*^>;hEeeGuQmTr)V!49*5jOzo=hVlz0#%w0EwIk%xAB__B`fu$16KM(JC`xcg& zVchElI0qo|<+gL4Z(#)>JaTtqUiHE%IEf(lWr^TgVR@=&suxc21cLCrhxe=*G@nsH zRu{4)yd5x+U80KLX@X?aC^2AyWS#&GfCaus+3tAM>bU$o!+MSKt&hh?F3J#(HHW!B ztSSIFnYL!Li+<>{P2&BBESJ(SB5lXDMnF3e2~}&5mmJmER)8N!5O;0h-f6m>aDQ$_ zt3Y!C3;<+~Dvz%d(1!qWibbHoKn#00_p5m9GE)H_0to!R$49Eyr0NXR2}%5xk)+iN zA89KyW6hD|Q9u|J91RG29FXj(7+ECgD!{CocL~y>Zfi}rL}j(f1P3VaC4gwgzQ~AI zmD!Bs56tL0!e}eWPsnFDgvn=AxY&(w#JlGm^VBW3UvZNSV?l&f%eZahTW$Jm1L!m~-u!LjeA_m~Y z!c373xDnKufF}w!$(6j3b{-xIE2YVM_&@`I7o_pmIKHt}PtzwCfN@_8 zp7!qCct_*yrZ4A5V;72O9BBHGg&UVM$L`@c^tp^F9j1@06_2WRZamxc;>=)-V=~;C zz||{}mh9G|#h(fui6aWRDGJ5Xni8s;st~Kk&>CH&(2b#vQRixhr zqHyV8^-8t3o%u?&e5(4*H$_ddrTBV;5jEPs|9KZ4Hv9>6lyJ` z;eLWH9I9GzeUiATgQt)Cb893{K3;x9uoJP0C9G_YUzzRcSYi-w(M94Of=!FKdM<6@{BnOt6bd>-6-BZ83WNznq>Cmh^`U<76X4Lyl8oq}m{8$7Uz$zJ10$ zHkd(3@my`~0mscLo@uf7tP;CZJg>$U6o@BMJ^ihf&m@V@=_rJweHYIh>nBeqiMzXa z?zawv!_(C>)ceD~f$6+gIhjSj+Eg>-czgM%W0x7>w;wll2mSFTurY=OC5w z{rPb*jZ+Zvt_n$EiUADS$&irojE@Ux#MZYP=TwaE(*O@5Tmv3*_lj#=o^IA3{*@&BE>CXfNvFmv^c|jN{4!y$_?q!% zBVOwa&sni|d?4~N&?E03CN9hHOzeEii>H(z(Jwx<0&~%l@1(Tm&rV|jt{Oz1gK8OE1fl%^ey`vLt;obk0*A;dm^J7 z(0M*j4D9APBjvL9z`p&naHVOMb9Otu=61Wh&ScEY6L)m;Oo;vPXYoll&xqK?KZ{Jw zlV{yg-C9i5JX-AJT(Ma54Dzmc03Ab@ggj^ze!jRM(4Xf%3pTN3g!P;lz(@|FO~j|j48PGFdm)XIi)xW%3}uIDT{EV zGiWe^I>NCTTpQ2psF1D<$wbIn6yMkxj@#(~|8o$b##V65gF{Zw*)H*j+v9GVkcG!4 z!5VT-CdP=1Jf1VHmp_ptsyv=yRtFrfdpt9&Pp?W6xfw8ARn*;cY3jIDxYg@BYCfIj zh?p|$Z8VBkx_g#cA9_4#{S{fB@m6b(l}Tba(LQ=Aq5oTOa#L{M%ND|L6@xEN#L?#9q&N`JBxW8|Jj@kAfb8Sy8+ zXbc%nKp*$%<&KGI=PXZZVmRSBMol%r)ShBX zUr&YOg@;v#Y8R=E*xe|KvpsXu=4|8}o|`nO&AU)Y#toX_76 zh$&}cy1a4j5wYYF?AKf?jYnVZapG$2YN1z ztvMj-&q9lD`FB7ZJ@sShrxl2yNJ%`cpTQZZ^0#!b36mB_pJ$t>(B92Cc4+4(gWYMRi1?OAac(247R>s zYT|wDONnxOYA;`1&^682mmKJYCw|Nd}D#5d125q~~N#IwZrXL^RWEerO-9Yvt` z+&=@N-MOBLu~W^=w*<`0t1dA!KT%{-CGHI~^B6c}=KfhS^L+921)lb?^Y)3i26?WF zonmJ7(-&q|8^@Sg^}EQ-YS0cdtFz&dS=G;M%BrQP9^y%keeN6a@DR@%?Wd-L7FV~J zr(3p%0>Js(C(xqjdCus1>l5r5oOf{%z?q6Z5nP};&uxfOcb?}V>!;3uxZ->?`Xq@| zS`xQFIpL!#)_i8-H+r;*U#CKoj_k_)5zg!5IitoCrovI>Tx ztVd=X5tD{`O00t)Lzf=v@mcqE2te3DU9R|TT^{<_tjpyi&AL?SCapiOH}n4(j;6Xy zzSis*#b1b{`JNkMFaK?>Z+&Rydbe)o+Uf!`S6iK#Yil@~a=pK_sTteH`ac&-bWbPo z=>-@$m;E;Xm=DbS>n||#KR4gZf9T6*{zKqs%76RR==@*)bUpHa#?pF45_&>S;@pP< zqF|(_f9&`+!aLH_rQN;nD4sG$4aT2`CW(KK#5g(gMKkx_aLC;IUI?0RxcZ0~aiJ%z z^%W1w{K^so;>HU-{jkBY6VSG%1ZNQ^uMe>{CjZnJk|nIFP1VxrmK)k86pLhT?m1H`X-s;nIiZP zXNnJ3B+$Pw%Kt+8zXX57Ta5CJOB50dK9v1w*D#0yHE|E*fsVM8QisT@gvA>rP8Ta& zA7BZxG{6u=~h9GOy!s~$vp41EP zg(Jud4l*gJNDPcmTSA-xu#&)mC9PwEKf@J?BfUR@H{(#pZzPQQUQC_f>0$rCPzk|w zje4XJk52Fm@iu%(vZyUH<35}*h?I15(f6T7+&=)iSRZgTunKV-+e#lk$SVW(!8DEG zmzls0tznTxa|BGoEk|fE!l=#Fbfbktflto={63KJ&(-4N4A&0GWw|Md9_#qBBr!cD zG0WN$j-@Gyk6L{HU!Mwu9U%HZ^S_ zMH%ct$neyKGZGo zEbFluNg_*2>|@;u$7NdLkJh)ZOA=$;iDy_JgX2zj;vwtP*CvUXoS-4lBjXHCcPiki*YP*xe6pa+1vgziJJa93`wrV^_> zvB1B%00|8(N5N#z3ajVm{USIS^4iF0Ny2fp=d9dz(`3<3 z96U3gYz6H6n+L!>&G;m7FHzM2sLXTW3OT-0b1fbjP!pE0sTsG1?7}jVYM7joHB@k6{If-fT3!EG21E zA@k-Xc)Y?`kMsPxzmjc>-L{tHI5+tsoA>gNy9s1U<#0nu=cr0Te$@6ehwX5k3vj?e!q)V!hRkiS1LEGdfAdI5oa)j zu!&ms3k}?#gq_@Ddu$bhByC>H+su+);2$O}SX<(oI^SbCr)Du*RfVXX>Pc@?LL!$E zwKB15D$d3{hByV7l98xip|pk#qb(K82DPikmp|NjF3*HbQfXC+IbX+|qbA3LM!`QC zLmOoAsH0RtAfIJSi+olx6Z}|iE+g^9Gf+j>6XBCBgE*6m1=BqJ&T{d%Q7y?pHP_GR z0);sETg-=jNH1&@ZotaA(BJz(e1cps+tPDIXqu-}{N3=eRXvm_(n_(|zbR2%fbTiv z%6Ui$ZX5cr3fH%zbVThEtqA0?`O2jO>ba|8o}@eQesj97{v9iW-p1;h*kg_Bl-SS z+D?3_1Y)^1drO;rv_1NQWHu{~$Au9KhHK?)1s^7`vwGhPiz0`(@>)+8?slqd7OX~x zv)S+7z)$kXpKQrPgY3#nkfzqscnP-(4k1hKvlhe8wtm5Gc2Q8R6yQ`}p37!muvumD zj?ARM4r4s<+@m}XE6+1+$$6Q4&*aBy3>4A!I!|hPq5rHkS0%-ipJ}sS&<*wJXS0tV zX0u;;u`PMI25aDtJ?cymlMu5#PJ*G#<&tLqA7O6-7j^OfkF)zmU6f@PWD!tdk#z@8 zz?<-Z1YH!5%Co%k#PUD|k32vDV_iu!bu7&+kE}E`P1GzQ&D%W6y9D!kBOajTQRe=i zuX(?B!B2hvKOPVEJ?Cp?Uh|rn*XuQ}nX%dbH28LIz!%SJ62#ZPZ8huTo#zb395P!p z81wkWx2=sM&<}r6B?&8u_L5{*F9(jV+RH@}b&09tDe4JqM3+!8)HV2m$5Cb)Dpw#Y zX9hi4f}X!X$$+F?gkbwBUhj-g{dPn|n2hF{!DAqfkVR>gG_c-OqF;UJDWVB^NbLyo z;XjW9Py3LU@R0Ek*6+a)Gu{f5Y8>~H=f;W0!bPVVastpo>R4)&yJLS^N&*~=GzcOt z9*7f>AXDC12>QzEn8o@q*hfJ_`#$~Pwsth^J4SduDYoE5t1Vgt8Wg;o5--rv^ zw^gYtO+G@kXUp?1q)iASHyi;t&3jC;S{j{>g8uxp+2EUe8nonjTFl76smSK)9z*so z)p&f%pxS)%B&(T>^tTdJaE~K)P$`=PUuYZqGii}*WB(B!Nl68!4X^Ofg@u~m=;@+D z%8AMB6!1iUgijieG8i9baI;{QrCDtcuAK-yNV=g(NbR^N z!i$B$_>Jqe&XbfZlK#B+vJI<1#NLIt-bK9xaBv@ej8D<-MLM$biuLwMr23-#-BbCbV zP0+>hycNL>`0~kC-krLGO4^TCKa4^paDcA?*A=0B}(Vu&KW8ckw)V(?#xl3qNtr>w%Q9}#`svT~nTMeFy1dlk}qfmp+(%5)O zx^-%=-ZYz)5Zts{w8+rR1p+3MC9&SpJp$QAdOZ*;eu}z$U{S(j7~qAnEoRh;2Elk* zMvZ!Y@p^azer&2W%CJfIgfJ37yjFTx}3N_WSs zjy#}+p+yLus==0k%B!Hl#6IsKKF(>n`l=6a@s4#Z>=_Rufa(h7C_aL^rx2~DcAlcI zdz!r`2YyKt&MI}9J*!N!fB$QmEq#Ti*)qB?u#iB%FwGJrV8j=qCI%y>t;Pl;Hhk#H z48g;L0;zSBB!~)OPactNvZ8KU4Md({r#gBjxH9 zh{1O`RS(~u)A7?KCDFd21OXV`FyfhiUBnp^k-*r)hy?FFQBu#B@ui86RxD~vp&Cxo zHKhy0m+%n>&-@5@Xu^P@()@OCXCxhh@rZ&A*CIt%u(}p0T<(f1R(JLS+Vg0)vFSPL zCz4Z$=Uze3#uf^zSMuiy=tx&OT`k9^5GD;P%o$KwI89>-7`mEf^d3EPoarx>jfy`s zzXV=P;s1A4-8EIS<~Y-u!SuE|U0L7S1fZo}9{l-CYgiEBQwWz{(Dyh^S9(%`*_KQX z?h_gq=sn$O+AV?-VAwEpmemwD3^(Lbh-jkE*~%uS)v0Wr(g3s5G#*J^=ZFYyp$9KI z9KZrvVTX+rOmlzSigPH+wYGS_{$7qxpj5r558stxwMrj6E9O@-to1zam3Vq^O(qm| zi{hXJ%(TX3WE-gtiu5A)hrJF|Y2S|}k<}FA3k6sQv`d~??CDW995J1hy{_}fq^QQK z9TFz`cjlAq!ywOaaHV4nHsu5tpzA~ z^?PM7&A|iS>DA;Va6?lof00k${ZxAz;_{v?Fy`SX1%ahRp`|P7XC8jaYLqUbPrIt= zKa6_l%qW{vHORIU`*AL8#4gl$l+8di>|${B=zce2ore8-g~yibAVXPfRS@YrWuaZG ztk=W$kp{{@5poLEki$?i*{0a+qeLLh!16y!u=W71STEL~Ekqh|@`fc!m56lZpuME) zBTlqVDY=wBbu5^5=ckdY|**mf{}KZO=z!PDmdY=w$Ny2 zPv@FE>t!h_&ZnR_&w58AHR|ZYe_CXfr8XUW`0jk`Vad@R8?lS6?X>w{6nwwfI#46s zeaVLhzi*u_Roha`KYZUhO1c~4!?jDTDZ%q%d^|AMvj{BP=U}6R`JRE|-$wi&S8BJE zTEnqtsWnXUh2zRntkTl#7xq^Fm?c!qf2|f2HRo@=N}GGXzJvQ=4-rO)%aHeOed;6| zA?Wyv87(&X{dxW>Yb|ZjI|U!Dvg$Rx{SInLpFrmE zn)HeLB7i`rsYev1J6bk&g8iUnITOJ!QR=(87&cGpYMs~miD=PY5xa+S%6(qve|==l zmF7kI@SN2!5oiR*mDSewq!rD5_{5K`@!FlO-PnXx3ma@3#Yd(i-a-Y2Xtr z@A8Q?qeIuGYU!nPbFf-Ej2Ej-_@LPNkS0gpz@RZaqXwp-Nxu9 z%6v`DlGp8V@?)Q(FFl(;js2zU)1kD`5O<%YzI_Re)z0B7P`SQl`Kia7WKSSO+p2IHH7K zT?bLW4;;_dVPC$u)?Dauv8tQci*)Q*0e}%X)6zhzcJcs#f?A9H?+TzJ4Qi z0AJNTEckAt^_WH)8SYcy_`*6@Q|Cz-(0d4ws2ddGk(0MMdH5!4c*gP(WuV>X@>iq8 zgtOyaLG~V3T*G1NN-<1UDd8z4uJ9oU7xbqbN}Y)8ayP&dCL1(83|0V+P%>`$&6Tks zWu)#G88hTIln(c*mLjOE3vDy1G$PMhi&dv>)sRcM2$2wiuAl+8X9@Or$WNm(Laz0z z&ZBfGHPaRH^fE$dm8=TI0=Q&Knmj}A5sZkk0rcZ4nz~WeA_*U|*&5imABwa&z={!) zVo)AcPndPKrxSxTs&Wt}MbzFat6?;*7IoR&Zb4s4@FF0K6q zc%Zd^7V5(vZidO`2{;;jWqnind`U5X{bAka(#Fd(4k`ROgz)Vjy&s{?XiBWgE@{-DQHOa~+KMXD+M8mqnAm2cZ_jrGi*3!ta}s_V}^cUa%@{C+09lXqDE_T2YQnX_Qh zH`baO&uudh2xo1+WT#d3{CYaPa|)~{r7eXwczkXHe{JAwt~mwUv{}2X13mjsL;S^E z)=Qo{{fpvK= zl0KP?;CA0xH#7?Q_6GV6y=t@H+#M!*>5^hfmnvmW#OeWJ@dw$PfYU7M!ltSCgz;t3R2WWDD3WV|cYYd;{9 zkK5Z}zqQ!YIL;Ltd%)VkbI058&N^WIQJNWyrLSha`qD~Ru81zWm|odMzon~Pv^~(( zMWyekU38LR+R-63?*f)sc+96}d4#-NMVAEqvvJsN@Ak05Xk1}Fde zD0*k+X0>;&k5w?b^%yW3J`(Zz<3M>L#y&4Qj^6n_RcZS06G$*=ID+?`K<_Ml6RuT1 zA?eOxaJ_TVnxmaPieOFj+&dH@X{XR%m)}yLd!0t+qeBop`ZW5he8YeA*BdDE#s2yL zb))|3eg;_28I0VbzYd;3f2|(m@^1basNeC1%gcYUrf5%$rks;KcfalmUUC+h&J1*U zXPiSOd4S71;yhwCZf~~>)+?T#{avwLFIp`jpZ`I;0qyjp2db8l#qz9nWsn0$|Dosh zi`GUN-Qa})V8}U7vrfG>s_zK-d|bY7$>-tnZ6@D?)@sU+$#>o5TTH%lE?*Y;4!eBm zsw3)K*+3uh|uOf_#21-#+qrx_sNn_o$VcZ!P&`mv0&QF1dW~lJB_UOP?+O zpt`2WyHwX$`Kz~8=TLc_>gp?hsJgn#`Kl{kp0B#v%Cl5gGkLP=3YSw0vA zsYU9c;;T|*(-({ULSLmw?8V|L!azKJP#X^(#6K>~L`Bk)_Sq1Qoqrd^qqLh>*@)ml zFEnDJfan8t0kwj%$}<8B{w%gG)%bO8`$9AR*rqmPLpv^CwWj#Bk9{G&hbz9gZNZk` zAtSc8+*VuVfH+*G4#!`t!&t8>tr|{MXyUKo3D>QSwIMM)^*TB#ZcEjU`nq+&uh*@M zG}^GXeEdyBkJwx_`kR*g;!SI7zd3DQsNelfYW>4n^6|G|3w7^?p2x_riTDwYw`5os z_k`o3Z2d>OJf2@DMNG(bJ@>k8{YwhFrsvhmtfAV^T5?uqjgn6MuII0pLHD-W3fYzV zLg57$k(cnOcr(dMZBo3G$Xj`v$#8g8vL^h?lN*6U!T`C1Ls?bB--=Mee?WMd7i@K^ zA(jk#_S^VBWmcX4w2?9x*~fA*Q*;Cz33<#NtKILfp48vUo6ClX`hWK<=D*yrz9c=b zC@b*2YYo&$BR=)wP49vG-?~oE?^RgCc*;F%Xh?YwdIfZ2M8!x&3PN+4D3k@2@K+vK z>zT4hZw$R{2^vUzVw^nVhX?%JJ!^yZeTvn-{~5|}f5=YpnF!FPNd8T3^k`|3$6be)J4spIY`td}Yge zSG>@&HP4|iT?$Pyv_SXEDaw?%0`$@a+2s+Vp}U<;6w``8*-)M1^Nye{exj(q62Kuxsvq|{1J#de^AeR|7C5SafPF5gj0FPU+DKr(pg_e^!p=<$K>{? z#~o*xwG6jUiEi#KuMbA`5TS2M3C59u<^D21mrDUz)E8Zj8Ad0wSf%reo4jBbcAWq7 zm$iG~vom@q+kQ-|PVSiiwn+#}=F-DRPY@q9fwuR>)OWA6}|8LmW*8qRKVvLgP&XlNK4h2TcLRa%-F{7Fs@% z?rl7$UwuC*{gj?x8WBy>? zSLpdC<`zLb|2b^@Kd#HSJh#@14m+vhJqc2&&F*O-^;*4-LcK=zxp}R>{)=e#)}GeX z=oU};v*$S8IQAz!AMM0oJ5*m8Y^k8t&RmoL$WCjZHYb=Labl4#9a_x)a$2#oRVC^8 zzM=xbH-uQt+*ye_M z-b=#*rNxmle@nwGu|ohz5Yv-*Y7|bZLwgBQS}vxUY>SSRnR%@XpHP?LbTGVox>55+ zJ>o|+EH+j?rUKaT@(TbmW0d7p1@KE%0Ah`}|0nOHWmfH+cs@qU!h-#U>JWV(u!|)^ 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�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 wk~FrGMd{^$7;9s9-)Kp8Y5Bl)E{& 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%0DxAZXITm?1_^S!M=ix;>yEw#Yy7Z|Yt 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

    of*QM8~CphVWpg?9^Q?^VmC+Yt&%FI5| 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�R4y{#bpaZk>SLJxq025b2YzXrX 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%0D4bKqhjdXK*c(VK*R7`G2^7QJkmF>ngu!-iwM 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